Today I Learned (TIL)/Python

[TIL] 데이터 전처리 - Pandas(3)

신짜린 2024. 7. 17. 18:19

6. 데이터 병합

- concat

데이터프레임을 위아래로 혹은 좌우로 연결할 수 있는 함수이다.

 axis를 통해 연결하고자 하는 축(방향)을 지정하고 기본값은 0으로 되어있어 위아래로 연결다. 1로 설정하면 좌우로 연결이 가능하다.

 ignore_index의 기본값은 False이며, 연결된 결과 데이터프레임의 인덱스를 유지한다. True로 설정하면 새로운 인덱스를 생성한다.

import pandas as pd

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2']})
df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'], 'B': ['B3', 'B4', 'B5']})

# 위아래로 데이터프레임 연결
result_vertical = pd.concat([df1, df2], axis=0)

# 좌우로 데이터프레임 연결
result_horizontal = pd.concat([df1, df2], axis=1)

 

- merge

 SQL의 JOIN 연산과 유사한 방식으로 데이터프레임을 합칠 수 있는 함수이다. 주로 두 개 이상의 데이터프레임에서 공통된 열이나 인덱스를 기준으로 데이터를 병합할 때 사용된다.

import pandas as pd

left_df = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
right_df = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': [5, 6, 7, 8]})

# 'key' 열을 기준으로 두 데이터프레임 병합
merged_df = pd.merge(left_df, right_df, on='key', how='inner')

print(merged_df)

 

7. 데이터 집계

- group by

 데이터프레임을 그룹화하고, 그룹 단위로 데이터를 분할, 적용, 결합하는 기능을 제공한다. 특정 기준에 따라 그룹으로 나누어 집계, 변환, 필터링 등을 할 수 있다.

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)

 

- 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'],
    '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() 함수
import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'Age': [25, 22, 30, 18, 27],
    'Score': [85, 90, 75, 80, 95]
}
df = pd.DataFrame(data)

# 정렬
sorted_by_score = df.sort_values('Score') # 'Score' 열을 기준으로 오름차순 정렬
sorted_by_score = df.sort_values('Score',ascending=False) # 'Score' 열을 기준으로 내림차순 정렬

print(sorted_by_score)
------------------------------------------------------------------------------------------------
# sort_index() 함수
import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'Age': [25, 22, 30, 18, 27],
    'Score': [85, 90, 75, 80, 95]
}
df = pd.DataFrame(data)

# 정렬
sorted_by_index = df.sort_index() # 인덱스를 기준으로 오름차순 정렬
sorted_by_index = df.sort_index(ascending=False) # 인덱스를 기준으로 내림차순 정렬
print(sorted_by_index)

 

8. 기타

- pickle 활용하기

 python 의 변수, 함수, 객체를 파일로 저장하고 불러올 수 있는 라이브러리를 말한다. list, dictionary등을 파일 그대로 저장하면 용량이 매우 커지는데 pickle을 사용하면 binary형태로 저장되기 때문에 용량이 매우 작아진다.

# pickle 저장하기
import pandas as pd

data = {
    'Column1': [1, 2, 3, 4, 5],
    'Column2': ['A', 'B', 'C', 'D', 'E']
}
df = pd.DataFrame(data)

# 데이터프레임을 pickle 파일로 저장
df.to_pickle('dataframe.pkl')  # 데이터프레임을 'dataframe.pkl' 파일로 저장
------------------------------------------------------------------------------------------------
# pickle 불러오기
import pandas as pd

# pickle 파일에서 데이터프레임 불러오기
loaded_df = pd.read_pickle('dataframe.pkl')  # 'dataframe.pkl' 파일에서 데이터프레임 불러오기
print(loaded_df)