본문 바로가기
Python/Pandas & numpy

판다스 : 전처리 예제(feat. agg함수)

by Mr.DonyStark 2024. 2. 8.

□ 라이브러리 호출 및 데이터셋 불러오기(데이터는 seaborn 기본제공 데이터활용)

import pandas as pd
import seaborn as sns

#셋 구축
titanic = sns.load_dataset('titanic')
titanic

 

□ 전처리 : sex 필드의 데이터를 1, 0으로 전환해보자 → male = 1, female   0

#시리즈 생성 : sex필드 및 데이터 값 활용
raw_field = titanic['sex']
#반복문을 통해 반환된 값을 담을 빈리스트 지정 / 해당리스트를 필드 값으로 적용
sex_list = list()
for v in raw_field:
    if v=='male':
        v = 1
    else:
        v = 2
    sex_list.append(v)
# 반환된 데이터를 sex필드의 값으로 지정
titanic['sex'] = sex_list

 

□ 데이터셋 구축

titanic_edit = titanic[['age','sex','class','fare','survived']]

 

□ 데이터셋을 활용하여 필드별 그룹바이 및 표준편차 진행으로 생성한 시리즈를 신규 데이터프레임에 적용

#class 필드를 구룹화하여 age에대한 표준편차 : 시리즈 반환
age_std = titanic_edit.groupby('class')['age'].std()
#class 필드를 구룹화하여 sex에대한 표준편차 : 시리즈 반환
sex_std = titanic_edit.groupby('class')['sex'].std()
#class 필드를 구룹화하여 fare에대한 표준편차 : 시리즈 반환
fare_std = titanic_edit.groupby('class')['fare'].std()
#class 필드를 구룹화하여 survived에대한 표준편차 : 시리즈 반환
survived_std = titanic_edit.groupby('class')['survived'].std()
#새로운 데이터프레임 생성
new_titanic = pd.DataFrame()
#생성한 데이터프레임의 신규 필드들 지정 및 각 필드멸 데이터 지정
new_titanic['age_std'], new_titanic['fare_std'], new_titanic['survived_std'], new_titanic['sex_std'] = age_std, fare_std, survived_std, sex_std
new_titanic = new_titanic.reset_index()

 

□ agg함수를 활용하여 생성된 시리즈들을 딕셔너리를 활용하여 새로운 데이터프레임으로 저장

#함수정의부 : 필드별 최대값과 최소값 연산을 반환하는 함수
def minmax(x):
    return x.max() - x.min()
#딕셔너리 형태로 키는 필드명, 벨류는 필드의 값으로 저장. 아래 코드에서 벨류는 시리즈임
#agg함수를 사용하여 집계된 필드별 함수적용
second_dataframe = pd.DataFrame(
    {'age_diff' : titanic_edit.groupby('class')['age'].agg(minmax),
     'fare_diff' : titanic_edit.groupby('class')['fare'].agg(minmax),
     'class_diff' : titanic_edit.groupby('class')['survived'].agg(minmax)
     }
    )
#인덱스 초기화로 평탄화 진행
second_dataframe.reset_index()

 

'Python > Pandas & numpy' 카테고리의 다른 글

판다스 : .transform()  (0) 2024.02.08
판다스 : agg 심화  (0) 2024.02.08
판다스 : .apply() 함수 예제  (1) 2024.02.08
.apply() / .agg() 함수  (0) 2024.02.07
판다스 : 다중데이터 불러오기  (0) 2024.02.07