파이썬 - 7일차 (복습)

Junyong-Ahn·2024년 3월 14일

Python+시각화

목록 보기
9/9

1. groupby(), pivot_table(), apply() 비교

참고사이트

데이터셋 로드

titanic = sns.load_dataset('titanic')
titanic.head(5)

groupby() : 특정 컬럼별 통계를 보고자 할때 사용

  • 사용 형태: df.groupby('컬럼A')['컬럼B'].통계함수()
  • 반드시 aggregate 하는 통계함수와 일반적으로 같이 적용된다
# 1. 출신지, 성별에 따른 생존율의 평균
titanic.groupby(['embark_town','sex'])[['survived']].mean(numeric_only = True)
# 2. 생존여부에 따른 운임 요금 평균
titanic.groupby(['survived'])[['fare']].mean()
# 3. 전체 컬럼의 출신지, 성별에 따른 평균
titanic.groupby(['embarked', 'sex']).mean(numeric_only = True)
# 다중 통계함수 적용
# titanic.groupby(['embarked', 'sex']).agg(['mean', 'std','max'])

pivot_table()

  • index, columns, values를 지정하여 피벗
# 1. index에 embark_town, sex를 기준으로 하여 survived의 평균값 조회(default : mean)
titanic.pivot_table(index = ['embark_town', 'sex'],  values = 'survived' )
# 2. columns에 embark_town, sex를 기준으로 하여 survived의 평균값 조회
titanic.pivot_table(columns = ['embark_town', 'sex'], values = 'survived')
# 3. embark_town, sex를 각각 column, index로 나누고 survived의 평균값 조회
titanic.pivot_table(index = 'sex', columns = 'embark_town', values = 'survived')

apply()

  • 특정 열 / 행 전체를 순회하면서 작업
# titanic['sex'] 의 값을 한글로 바꿔주는 함수
def transform_hanguel(x):
    if x['sex'] == 'male':
        return '남자'
    else:
        return '여자'
     
# 1. 행 전체를 apply에 전달 -> axis 정해주어야 한다
titanic.apply(transform_hanguel, axis = 'columns')
# 2. 열 전달 + lambda 사용
titanic['sex'].apply(lambda x: '남자' if 'man else '여자')

# 1,2 같은 결과

정규표현식

  • 문자열 패턴을 찾아서 대체하기 위한 규칙의 모음
  • 숫자 대응 정규 표현식 : \d
  • 숫자 제외 대응 표현식 : \D
#'publication_year' 열의 연도를 끝의 두자리만 표시
# ex: 2021 -> 21
books_df.replace({'publication_year': {r'\d{2}(\d{2})' : r'\1'}}, regex = True).head(2)
books_df.replace({'publication_year': {r'\d\d(\d\d)':r'\1'}}, regex = True).head(5)

# '지은이:김호연' -> '김호연' 으로 변환
books_df.replace({'authors' : {r'지은이:(.*)':r'\1'} }, regex =True)

0개의 댓글