# 데이터프레임 변형하기
# 그룹화 하기
airline_group = flight.groupby('airline')
airline_group.groups # 그룹화 된 것 확인
airline_group.count() # 데이터 갯수 확인
airline_group.size() # 집단별 크기
airline_group.sum() # 숫자데이터 합계
airline_group.mean() # min, max, mean, std, var(분산), 가능
airline_group.mean()[['price']] # 특정 컬럼을 지정해서 숫자 계산하기
# 복수의 컬럼을 기준으로 groupby 해서 다중 인덱싱 설정하기
flight.groupby(['airline','arrival_time']).min()
# 여러개의 컬럼을 groupby 하여 새로운 데이터프레임 생성하기
mul_airline_group=flight.groupby(['airline','arrival_time'])
mul_airline_group.mean()
# loc 을 이용하여 원하는 인덱스의 데이터만 가져오기
mul_airline_group.mean().loc[[('AirAsia','Evening')]]
# 인덱스로 그룹화 하기
## set_index로 인덱스 설정하기
indexed_flight = flight.set_index(['airline','arrival_time']) # 그룹화 된 것은 아님
indexed_flight
flight.set_index(['airline','arrival_time']).groupby(level=[0]).mean() # 첫번째 인덱스로 그룹화 한 것
flight.set_index(['airline','arrival_time']).groupby(level=[0,1]).mean() # 두 개의 인덱스 모두로 그룹화 한 것
flight.set_index(['airline','arrival_time']).groupby(level=[0,1]).aggregate([np.mean, np.max]) # aggregate로 집계하기
# 피벗테이블 생성하기
# pivot_table과 pivot 명령은 동일한 동작을 하는데, pivot은 중복값이 있을 때 오류남
flight.pivot_table(index = 'source_city', columns = 'destination_city', values = 'price')
# concat으로 병합하기
# ignore_index 옵션, True : 기존 인덱스 무시하고 0부터 새로 인덱스 지정
# False : 기존 인덱스 값을 그대로 붙임
pd.concat([df1, df2], ignore_index=True)
# axis 옵션, 기본은 axis = 0, 행레벨로 병합(위아래로 붙이기), 옵션 안쓰면 기본
# axis = 1로 지정하면 열레벨로 병합됨(옆으로 붙이기), 이때 두 데이터프레임의 인덱스 맞춰서 병합되고, 데이터가 없는 인덱스는 NaN으로 합쳐짐
pd.concat([df1, df2], axis = 1)
# join 옵션 outer(합집합), inner(교집합)
# outer로 하면 한쪽만 있는 것도 합치고
# inner로 하면 양쪽에 다 있는 컬럼만 합침(한쪽만 있는 컬럼은 버림)
pd.concat([df1, df2], join='inner')
# verify_integrity 옵션 : 두 데이터프레임에 중복인 인덱스가 있는지 검사하고 메시지 주는 옵션
# true로 하면 인덱스가 중복인 경우 오류메시지 발생
pd.concat([df1, df2], verify_integrity=True)
# Merge/Join으로 데이터 병합하기 - 특정한 key를 기준으로 데이터를 병합할 수 있음
## (defualt) inner : 일치하는 값이 있는 경우만 데이터를 가져옴
## left : 왼쪽 데이터프레임을 기준으로 오른쪽 데이터프레임을 병합(오른쪽 df 에 값이 없으면 NaN)
## right : 오른쪽 df 기준으로 왼쪽 df를 병합
## outer : left와 right를 합한 df를 병합
pd.merge(df1, df2, on='customer_id') # customer_id가 일치하는 경우만 병합
pd.merge(df1, df2, on='customer_id', how='inner') # 위와 동일함(기본이 inner)
pd.merge(df1, df2, on='customer_id', how='left')
# df1을 기준으로 df2를 합치는 것, df1에는 있는데 df2에 없으면 NaN, df2에는 있는데, df1에 없으면 병합된 df에 포함시키지 않음
pd.merge(df, df2, on='customer)id', how='right')
'Tech' 카테고리의 다른 글
데이터의 이해 - 비시각화/시각화 데이터 탐색 (0) | 2024.09.09 |
---|---|
불러오기, 원하는 컬럼만 가져오기, 범주형데이터 비교, 데이터 살펴보기, 데이터 선택하기, 추가/삭제/칼럼명변경/정렬 (0) | 2024.09.02 |
통계학 정리 2 (1) | 2024.08.30 |
통계학 정리 (1) | 2024.08.28 |
Ch8 로지스틱 회귀 (0) | 2024.06.27 |