▶ 데이터 병합
● concat() 함수
- axis : 연결하고자 하는 축(방향)을 지정
기본 값은 0으로 , 위 아래로 연결하는 경우에 해당,
1로 설정하면 좌,우로 연결
# 두 개의 데이터프레임을 생성했다고 가정하고
# 위 아래로 데이터프레임 연결
result_vertical = pd.concat([df1,df2], axis = 0)
# 좌우로 데이터프레임 연결
result_horizontal = pd.concat([df1, df2], axis = 1)
● merge() 함수
○ left 와 right : 병합할 데이터 프레임 중 병합되는 기준이 되는
왼쪽과 오른쪽 데이터 프레임
○ how : 병합 방법을 나타내는 매개변수로, 'inner', 'outer','left', 'right'
- inner : 공통된 키(열)를 기준으로 교집합을 만든다.
- outer : 공통된 키를 기준으로 합집합을 만든다.
- left : 왼쪽 데이터프레임의 모든 행을 포함하고 오른쪽 데이터 프레임은
공통된 키에 해당하는 행만 포함
- right : 오른쪽 데이터프레임의 모든 행을 포함하고 왼쪽 데이터프레임은
공통된 키에 해당하는 행만 포함
○ on : 병합 기준이 되는 열 이름(혹은 열 이름의 리스트)을 지정한다.
- left_on과 right_on : 왼쪽 데이터프레임과 오른쪽 데이터 프레임에서
병합할 열 이름이 다른 경우에 사용
- 예시)
#left_df 와 right_df 두 개의 데이터 프레임 생성 했다고 가정
merge_df = pd.merge(left_df, right_df, on = 'key', how = 'inner')
▶데이터 집계
● group by ()
- 데이터 프레임을 특정 기준에 따라 그룹으로 나누어 집계, 변환, 필터링 등을
할 수 있다.
1) 그룹 생성 : 기준 열(혹은 열들)을 지정하여 데이터프레임을 그룹으로
나눈다.
2) 그룹에 대한 연산 수행 : 그룹 단위로 원하는 연산(평균, 합, 개수 등)을
수행한다.
3) 결과 결합 : 각 그룹의 연산 결과를 하나의 데이터 프레임으로 결합하여
새로운 데이터프레임을 생성한다.
예시코드)
#df 샘플데이터(딕셔너리라고 가정) 생성 가정
grouped_multiple = df.groupby(['category', 'subcategory']).sum()
#'category'와 'subcategory'열을 기준으로 그룹화하여 'value'의 합 계산
import pandas as pd
# 샘플 데이터프레임 생성
data = {
'Category': ['A', 'A', 'B', 'B', 'A', 'B'],
'SubCategory': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
'Value1': [1, 2, 3, 4, 5, 6],
'Value2': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)
# 'Category'와 'SubCategory' 열을 기준으로 그룹화하여
# 각 그룹별 'Value1'과 'Value2'의 평균, 합 계산
grouped_multiple = df.groupby(['Category', 'SubCategory']).agg({'Value1': ['mean', 'sum'], 'Value2': 'sum'})
print(grouped_multiple)
- agg() 함수를 사용하여 여러 열에 대해 다양한 집계 함수를 적용
▶pivot_table()
- pivot_table()함수는 데이터프레임에서 피벗 테이블을 생성하는 데 사용
- 여러 열을 기준으로 피벗 테이블 생성하기
import pandas as pd
# 샘플 데이터프레임 생성
data = {
'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-01'],
'Category': ['A', 'B', 'A', 'B', 'A'],
'SubCategory': ['X', 'Y', 'X', 'Y', 'X'],
'Value': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)
# 피벗 테이블 생성: 'Date'를 행 인덱스로, 'Category'와 'SubCategory'를 열 인덱스로,
# 값은 'Value'의 합으로 집계
pivot = df.pivot_table(index='Date', columns=['Category', 'SubCategory'], values='Value', aggfunc='sum')
print(pivot)
- 집계 합수를 다르게 적용하여 피벗 테이블 생성
import pandas as pd
# 샘플 데이터프레임 생성
data = {
'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-01'],
'Category': ['A', 'B', 'A', 'B', 'A'],
'Value1': [10, 20, 30, 40, 50],
'Value2': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data)
# 피벗 테이블 생성: 'Date'를 행 인덱스로, 'Category'를 열 인덱스로,
# 값은 'Value1'과 'Value2'의 평균과 합으로 집계
pivot = df.pivot_table(index='Date', columns='Category', values=['Value1', 'Value2'], aggfunc={'Value1': 'mean', 'Value2': 'sum'})
print(pivot)
▶데이터 정렬하기
● sort_values() 함수:
- 컬럼 기준으로 정렬
# 'score' 열을 기준으로 정렬
예)
sorted_by_score = df.sort_values('score')
# 기본값은 오름차순
sorted_by_score = df.sort_values('score', ascending=False)
# ascending = False 는 내림차순
● sort_index() 함수:
- 인덱스를 기준으로 정렬
sorted_by_index = df.sort_index()
# 인덱스를 기준으로 오름차순 정렬
sorted_by_index = df.sort_index(ascending = False)
# 인덱스를 기준으로 내림차순 정렬
'데이터분석 study > 데이터 전처리&시각화' 카테고리의 다른 글
TIL_24.07.23_데이터 시각화 2 (0) | 2024.07.23 |
---|---|
TIL_24.07.22_데이터 시각화 1 (0) | 2024.07.22 |
TIL_24.07.18_데이터 전처리 2 (0) | 2024.07.18 |
TIL_24.07.17_데이터 전처리 1 (0) | 2024.07.17 |