-
[KT 에이블스쿨 5기] DX트랙 3주 3일차 복습_데이터프레임 변경(3)KT 에이블스쿨 복습 2024. 3. 6. 17:08
**셀프 복습용으로 작성한 것이라 실수가 있을 수 있습니다!
혹시 실수를 발견하시면 댓글로 알려주시면 감사드리겠습니다 :)
08 데이터프레임 변경 (3)
데이터프레임 합치기(Concat)
concat() 함수를 사용해 인덱스 값을 기준으로 두 데이터프레임을 가로 또는 세로로 합침
가로로 합치기
- axis=1 옵션을 지정해 가로로 합칠 수 있음
- 두 개의 데이터프레임에서 같은 인덱
결측치 자료형은 float(실수임)
1) 데이터 불러오기
- 두 개의 데이터프레임을 불러옴!
2) 데이터프레임 합치기
- 가로로 합칠 때는 axis=1 옵션을 지정
- join='outer'는 기본 옵션값으로 생략이 가능! 해당 옵션을 지정하면 결측치가 생김!
- 합칠 데이터 프레임은 리스트로 여러 개 작성 가능
# 모든 열 합치기 pop = pd.concat([df1, df2], axis=1,join='outer')
세로로 합치기
- axis=0 옵션을 지정해 세로로 합칠 수 있음 (기본값)
1) 데이터 불러오기
- 두 개의 데이터프레임을 불러옴!
2) 데이터프레임 합치기
- 세로로 합칠 때는 axis=0 옵션을 지정
- join='outer'는 기본 옵션값으로 생략이 가능! 데이터를 합친 후 인덱스가 뒤죽박죽 됨!
- 인덱스 값이 중복될 수도 있으므로 인덱스 초기화
- 합칠 데이터 프레임은 리스트로 여러 개 작성 가능
# 모든 행 합치기 pop = pd.concat([df1, df2], axis=0,join='outer') # 인덱스 초기화 pop.reset_index(drop=True, inplace=True)
데이터프레임 조인(Merge)
- merge() 함수는 한 번에 두 개의 데이터프레임만 합칠 수 있음 (세로로 합칠 수 없음)
- 지정한 키 값을 기준으로 병합 가능 (left, right, outer, inner)
- on = '열 이름' : 어느 열을 기준으로 할 것인지, how = 'inner' : 어느 방식으로 할 것인지 결정
- 두 데이터프레임에 같은 이름의 열이 있으면 on 옵션 지정 안 해도 그 열을 기준으로 조인됨
**그래도 기준 열을 명시적으로 지정하기를 권고!
- how = 'inner'옵션은 기본 옵션값이므로 생략 가능
#inner 조인 변수선언 = pd.merge(df1, df2, on='같은 이름의 열', how='inner') #outer 조인 변수선언 = pd.merge(df1, df2, on='같은 이름의 열', how='outer')
종합실습 01 개념 정리 (기억 안 남 or 실수)
- df.shape: 데이터프레임 크기 확인, 뒤에 괄호 없음!
- df['열 이름'].min(axis=0): 특정 열의 최솟값 확인, 열을 감싸는 대괄호 두 개! axis=0 옵션 지정
- .columns: 열 정보 확인, 전체 열 속성 변경, 이름 변경, 전체 열 순서 변경 모두에 사용 가능!
- .dropna(axis=0, inplace=True): 결측치가 있는 모든 행 제거, 속성 주의!
종합실습 02 개념 정리 (기억 안 남 or 실수)
- 여러 열 집계: 대분류 별 열1, 열2의 합계/개수/평균을 구하시오.
df_new = df.groupby(by='대분류 별 열 이름', as_index=False)[['계산할 열1', '계산할 열2']].sum/count/mean()..
- 범주값에 따른 열 추가: 특정 열의 값 기준에 따라 등급 갖는 Level 열 추가
bin = [-np.inf, 범주값1, 범주값2, 범주값3, np.inf] label = ['등급1', '등급2', '등급3', '등급4', '등급5'] df['열 이름'] = pd.cut(df['특정 열 이름'], bins=bin, labels=label)
- 데이터프레임 내 특정 열 값을 기준으로 정렬하기
df = df.sort_values(by = '열 이름', ascending=False) #내림차순 df.sort_values(by = '열 이름', ascending=False, inplace=True) #inplace=True 잊지마라!!!!
- 그래프 시각화
plt.rc('axes', axisbelow=True) #눈금선 그래프 뒤로 보내기 plt.figure(figsize=(5,3)) plt.bar(x=df['열 이름'], height=df['열 이름']) plt.title('그래프 타이틀', pad=15, size=15, fontweight='bold') plt.xlabel('x축 이름') plt.ylabel('y축 이름') plt.grid(axis='y') #눈금선 추가 plt.show()
- df['열 이름'].astype('float'): 실수로 변환 .astype('object'): 문자열로 변환
- 여러 열 제거
drop_cols(변수) = ['제거할 열1', '제거할 열2', '제거할 열3'] df.drop(drop_cols, axis=1, inplace=True)
- 열 이름 변경
df.rename(columns={'이전 열 이름':'바꿀 열 이름'}, inplace=True)
- 가변수화
dumm_cols(변수) = ['열 이름1', '열 이름2', '열 이름3'] df = pd.get_dummies(df, columns=dumm_cols, drop_first=True , dtype=int)
'KT 에이블스쿨 복습' 카테고리의 다른 글
[KT 에이블스쿨 5기] 4주 2일차 복습_단변량분석(boxplot), 범주형 변수(countplot) (0) 2024.03.12 [KT 에이블스쿨 5기] 4주 1일차 복습_데이터 분석 방법론(CRISP-DM, EDA & CDA), 시각화(히스토그램, 밀도함수 그래프) (0) 2024.03.11 [KT 에이블스쿨 5기] DX트랙 3주 2일차 복습_데이터프레임 변경 (1) 2024.03.05 [KT 에이블스쿨 5기] DX트랙 3주 1일차 복습_판다스 데이터프레임 조회, 집계, 변경 (3) 2024.03.04 [KT 에이블스쿨 5기] DX트랙 2주 4일차 복습_넘파이 기초, 판다스 데이터 프레임 생성 및 탐색 (3) 2024.03.01