[KT AIVLE 3기] 데이터 처리 - day 1
AI 학습 시 데이터 전처리 등은 필수적이다. 데이터 처리에 대해 알아보자!
데이터 전처리
1) 데이터 구조 만들기
2) 모델링을 위한 전처리
데이터프레임 변경하기
데이터프레임의 column name을 변경해보자!
열 변경
- column 속성 변경
모든 열 이름을 변경할 때는 .columns에 리스트를 할당해준다.
df.columns = ['total', 'day', 'time', 'month']
rename() 메소드 사용으로 딕셔너리를 활용하여 지정한 열 이름 변경이 가능하다.
단, 변경하지 않으려는 이름은 그대로 적어주어야 한다.
df.rename(columns = {'total': 'total_size', 'day': 'date',
'time': 'time', 'month': 'wall'}, inplace = True)
inplace = False일 경우 적용이 되지 않는다.
- 열 추가
없는 열을 변경하게 되면 맨 뒤에 그 열이 추가된다.
df['없는 열 추가'] = 2 # df 출력 시 맨 뒤에 '없는 열 추가' 열이 추가된다.
insert() 메소드로 지정한 위치에 열을 추가할 수 있다.
df.insert(3, '열 이름', 값) # (0 1 2) 3번째 열 위치에 추가된다.
- 열 삭제
drop() 메소드를 사용하여 열을 삭제할 수 있다.
axis = 0: 행 삭제(default) / axis = 1: 열 삭제
df.drop('day', axis=1, inplace = True)
# 열 여러 개 삭제
df.drop(['열1', '열2', ...], axis=1, inplace = True)
inplace = False일 경우 삭제한 것처럼 보여주기만 하고, 실제 반영은 되지 않는다.
- 값 변경
전체 값을 변경하거나 조건에 따라 값을 변경할 수 있다.
# 전체 값 변경
df['열이름'] = 0 # 특정 열의 모든 값을 0으로 변경
# 조건
df.loc[df['열이름'] < 5, '열이름'] = 0 # df의 '열이름' 열의 값이 5보다 작을 경우, 값을 0으로 변경
df['열이름'] = np.where(df['열이름'] < 20, 0, 1) # 20보다 작으면 0 아니면 1로 바꾸기
.map(): 범주형 값을 다른 값으로 변경할 때 사용
# 남자는 0, 여자는 1
df['성별'] = df['성별'].map({'남자': 0, '여자': 1})
cut(): 숫자형 변수를 범주형 변수로 변환
df['열이름'] = pd.cut(df['열이름'], 4, labels=['A', 'B', 'C', 'F'])
# '열이름' 열에 대해서 균등 간격으로 4등분하고, 값을 a b c f로 바꿔라
데이터프레임 결합하기
Concat - 붙이기
매핑 기준: 인덱스(행), 열이름(열)
방향: axis = 0: 세로(행)로 합치기 / axis = 1: 가로(열)로 합치기
방법: join = 'outer' -> 모든 행과 열 합치기(default), join = 'inner' -> 매핑되는 row, col만 합치기
example = pd.concat([ex1, ex2], join='outer', axis=1) # 모든 행열 합치고 가로로 붙인다
example = pd.concat([ex1, ex2], join='inner', axis=1) # 매핑되는 행열 합치고 가로로 붙인다
Merge - 병합
매핑 기준: 특정 열(key) 값 기준으로 결합 (= 데이터베이스의 테이블 조인)
pd.merge(df_left, df_right, how='inner', on=None) # default
left / right / inner / outer
Pivot
집계된 데이터를 재구성하는 함수
Dataframe.pivot(index, column, values) # default
정리
concat: 데이터프레임 구조에 맞게 합치기
merge: 데이터 값 기준으로 합치기
pivot: groupby로 집계 후 데이터프레임 구조 변형
'AIVLE' 카테고리의 다른 글
[KT AIVLE 3기] 단변량분석 (0) | 2023.02.09 |
---|---|
[KT AIVLE 3기] 데이터 시각화 (0) | 2023.02.09 |
[KT AIVLE 3기] 시계열 데이터 처리 (0) | 2023.02.09 |
[KT AIVLE 3기] Python - Numpy & Pandas (0) | 2023.02.07 |
[KT AIVLE 3기] Github vscode와 연동하기 (0) | 2023.02.02 |