4. 데이터 조작 및 집계
pandas는 데이터를 조작하고 집계하는 데 탁월하여 원시 데이터 세트에서 통찰력을 얻을 수 있도록 합니다.
4.1. 함수 적용
DataFrame 또는 Series의 축을 따라 함수를 적용하려면 .apply()를 사용하고, Series별 요소별 변환을 위해서는 .map()을 사용합니다.
# 열에 사용자 정의 함수 적용
df['Age_Group'] = df['Age'].apply(lambda x: 'Adult' if x >= 18 else 'Minor')
print(df.head())
# 열의 값 매핑
gender_map = {'M': 'Male', 'F': 'Female'}
df['Gender_Full'] = df['Gender'].map(gender_map)
print(df.head())
4.2. 그룹화 및 집계
.groupby()는 데이터를 요약하는 데 필수적입니다. 다양한 집계 함수(예: .sum(), .mean(), .count(), .max(), .min())를 적용할 수 있습니다.
# 'City'별로 그룹화하고 'Age'의 평균 계산
avg_age_by_city = df.groupby('City')['Age'].mean()
print(avg_age_by_city)
# 여러 열로 그룹화하고 여러 집계 가져오기
agg_data = df.groupby(['City', 'Gender']).agg(
Total_Count=('Name', 'count'),
Average_Age=('Age', 'mean')
)
print(agg_data)
4.3. DataFrame 병합 및 연결
.merge()(SQL 스타일 조인용) 또는 .concat()(DataFrame 스택용)을 사용하여 여러 DataFrame을 결합합니다.
DataFrame 병합
# 'df_orders' DataFrame에 'CustomerID'가 있다고 가정
# merged_df = pd.merge(df, df_orders, on='CustomerID', how='inner')
# print(merged_df.head())
# 더미 데이터 예시
data1 = {'ID': [1, 2, 3], 'Name': ['A', 'B', 'C']}
data2 = {'ID': [1, 2, 4], 'Score': [90, 85, 95]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
merged_df = pd.merge(df1, df2, on='ID', how='inner') # 'ID'를 기준으로 내부 조인
print(merged_df)
DataFrame 연결
# 'df_new_entries' DataFrame이 'df'와 동일한 열을 가진다고 가정
# combined_df = pd.concat([df, df_new_entries], ignore_index=True)
# print(combined_df.tail())
# 더미 데이터 예시
df_part1 = pd.DataFrame({'Col1': [1, 2], 'Col2': ['A', 'B']})
df_part2 = pd.DataFrame({'Col1': [3, 4], 'Col2': ['C', 'D']})
concatenated_df = pd.concat([df_part1, df_part2], ignore_index=True)
print(concatenated_df)