1. 기존 데이터프레임에서 선택한 컬럼의 값들의 합의 값으로 새로운 컬럼을 추가
이때 column의 값은 numerical data(int, float)
df['새로만들컬럼이름'] = df['기존col1'] + df['기존col2'] + df['기존col3']
df
2. 숫자의 콤마( ' , ')를 교체하는 방법
숫자에 ' , ' 가 기재되어 있을시 numeric data가 아닌 string으로 인식 하므로 숫자의 ', '를 공백으로 대치하여야 한다.
[in]
testString = '25,970'
testString = testString.replace(',','')
[out]
'25970'
데이터셋에 적용하기 위해서는 apply 함수를 사용하여 각 column에 한번에 적용 해주어야 한다.
# def로 함수 선언
def toInt(string):
return int(string.replace(',',''))
# 하나의 string 일경우
toint('25,970')
[out 1]
25970
#DataFrame의 column에 적용할 경우 apply 모듈을 적용한다.
df['column_name'] = df['column_name'].apply(toInt)
3. Concatenate (Concat)
데이터 프레임을 더할때 일반적으로 더해지는 row, column의 이름이나 인덱스 값이 일치해야 한다. 그렇지 않은경우, 비어있는 부분에 대해서는 NaN값으로 채워짐.
- "+" 연산자를 사용하여 문자열을 더한다
- pd.concat([df1, df2]) >>> row 방향으로 데이터 프레임을 더한다. 이때, 옵션으로 ignore_index=True를 주면 인덱스를 재배열 할 수 있다.
- pd.concat([df1, df2], axis=1) >>> column방향으로 데이터 프레임을 더한다. 옵셩으로 join하는 방식을 고를 수 있다. default값은 outer 이며 합집합을 의미. join='inner'일 경우 교집합을 의미. 두데이터에 모두 존재하는 row인덱스만 가지고 온다.(NaN값이 있는 row는 가져오지 않음)
데이터프레임 + 시리즈 객체
- 시리즈 객체를 생성할때 주는 옵션으로 name을 주고 이 시리즈가 데이터 프레임에 결합되었을때 column의 이름이 됨.index옵션을 주면 그에 맞게 concat됨
sr1 = pd.Series(['e0','e1','e2','e3'], name = 'e')
sr2 = pd.Series(['f0','f1','f2'], name = 'f', index = [3,4,5])
sr3 = pd.Series(['g0','g1','g2','g3'], name = 'g')
new_df_1 = pd.concat([df1,sr1], axis=1)
[Output]
a b c e
0 a0 b0 c0 e0
1 a1 b1 c1 e1
2 a2 b2 c2 e2
3 a3 b3 c3 e3
new_df_2 = pd.concat([df2,sr2], axis=1)
[Output2]
a b c d f
2 a2 b2 c2 d2 NaN
3 a3 b3 c3 d3 f0
4 a4 b4 c4 d4 f1
5 a5 b5 c5 d5 f2
# 시리즈 객체 끼리 붙였을때 axis=1로 적용하면 데이터 프레임이 되고, axis=0으로 적용하면 그대로 시리즈
new_df_3 = pd.concat([sr1, sr3], axis = 1)
[out]
e g
0 e0 g0
1 e1 g1
2 e2 g2
3 e3 g3
<class 'pandas.core.frame.DataFrame'>
new_series = pd.concat([sr1, sr3], axis = 0)
[out]
0 e0
1 e1
2 e2
3 e3
0 g0
1 g1
2 g2
3 g3
dtype: object
4.Merge
concat과 달리 공통된 부분을 기반으로 합치는 용도이며 다양한 옵션으로 합칠 수 있다.
- df.merge("붙일 내용df", how = "(방법)", on ="(기준 feature)")
df = df.merge(df2, how = 'inner', on = '종목')
df
- how 옵션은 어떻게 합칠지 지정해주는 부분.(‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’}
how = 'inner', on = '기준 feature' >> 데이터셋의 교집합의 데이터만 나타낸다. << deafault값
- on 옵션은 기준 column을 정해주는 것으로 None이 default값 이며 padas가 임의의 공통 col을 기준으로 한다.
how = 'outer', on='기준 feature' >> 모두 합친다. 기준이 되는 컬럼으로 합치고 데이터가 없는경우 NaN값이 된다.
how = 'left', left_on = '왼쪽 기준feature', right_on ='왼쪽기준에대응하는 기준feature'
how = 'cross' 카티전 곱을 해서 ...
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
5. Join
join과 merge는 함수기반이기때문에 기본 작동방식은 비슷하나. join()은 row인덳를 기준으로 결합.
- df1.jpin(df2) >> df1의 index를 기준으로 합친다.
'Computer Science > 파이썬' 카테고리의 다른 글
[Python] 가설검정1 - Student T-test (0) | 2021.06.20 |
---|---|
[Python] 데이터 전처리 3 - DataFrame 슬라이스 (인덱서 loc, iloc) (0) | 2021.06.09 |
[Python] 데이터 전처리 2 - 중복값 확인 및 처리 (0) | 2021.06.07 |
[Python] 데이터 전처리 1 - 결측치 확인 및 처리 (0) | 2021.06.07 |
[Python] Pandas로 데이터 불러오기 (0) | 2021.06.06 |