코딩하는 타코야끼

[스터디 노트] Week5_3일차 [unit1 ~ 11] - EDA(범죄) 본문

zero-base 데이터 취업 스쿨/스터디 노트

[스터디 노트] Week5_3일차 [unit1 ~ 11] - EDA(범죄)

가스오부시 2023. 8. 16. 01:10
728x90
반응형

1. Pandas pivot_table


📍 pivot_table( )

  • pivot_table() 함수는 pandas의 DataFrame을 재구조화하기 위해 사용됩니다.
  • 이 함수는 주어진 데이터에서 간단한 '피벗 테이블'을 생성합니다.
  • 피벗 테이블은 통계의 한 형태로, 데이터를 요약하고 분석하는 데 유용하게 사용됩니다.
    • values: 피벗 테이블의 각 셀에 채울 DataFrame의 열을 지정합니다. 일반적으로 수치 데이터입니다.
    • index: 결과 피벗 테이블의 인덱스를 지정할 DataFrame의 열입니다. 이 매개변수를 사용하여 행에 레이블을 적용할 수 있습니다.
    • columns: 결과 피벗 테이블의 컬럼을 지정할 DataFrame의 열입니다. 이 매개변수를 사용하여 열에 레이블을 적용할 수 있습니다.
    • aggfunc: 'values' 매개변수로 제공된 데이터에 적용할 집계 함수를 지정합니다. 이 매개변수는 'mean', 'sum', 'count' 등의 값을 사용할 수 있습니다. 기본값은 'mean'입니다.
pd.pivot_table(df, index = "Name")

  • 분류 지
pd.pivot_table(df, index = ["Manager", "Rep"], 
               values = "Price", columns = "Product", aggfunc = np.sum)

  • NaN에 대한 처리를 지정
pd.pivot_table(df, index = ["Manager", "Rep"], values = ["Price"], 
               columns = ["Product"], aggfunc = [np.sum], fill_value = 0)


2. 서울시 범죄 현황 데이터 정리

crime_raw_data.head()

crime_station = pd.pivot_table(crime_raw_data, index = ["구분"], 
               columns = ["죄종", "발생검거"], aggfunc = [np.sum])
crime_station.head()

  • Multi Columns Index
  • pivot table을 적용하면 column 이나 index가 다중으로 잡힌다.
crime_station.columns
>>>
MultiIndex([('sum', '건수', '강간', '검거'),
            ('sum', '건수', '강간', '발생'),
            ('sum', '건수', '강도', '검거'),
            ('sum', '건수', '강도', '발생'),
            ('sum', '건수', '살인', '검거'),
            ('sum', '건수', '살인', '발생'),
            ('sum', '건수', '절도', '검거'),
            ('sum', '건수', '절도', '발생'),
            ('sum', '건수', '폭력', '검거'),
            ('sum', '건수', '폭력', '발생')],
           names=[None, None, '죄종', '발생검거'])

📍 df.droplevel( )

  • Pandas의 droplevel() 함수는 MultiIndex에서 레벨을 제거하는데 사용됩니다.
  • MultiIndex란 DataFrame 또는 Series의 인덱스가 여러 레벨로 구성된 경우를 말합니다.
  • 더 간단한 인덱스 구조를 가진 DataFrame을 얻을 수 있습니다.
    • level: 제거할 레벨을 지정합니다. 레벨은 정수, 레벨 이름 또는 이들의 리스트로 지정할 수 있습니다. 기본값은 가장 바깥쪽 레벨(0)입니다.
    • axis: 레벨이 제거될 축을 지정합니다. 0 또는 'index'는 인덱스에서 레벨을 제거하고, 1 또는 'columns'는 컬럼에서 레벨을 제거합니다. 기본값은 0('index')입니다.
    # 다중 컬럼에서 특정 컬럼 제거
    crime_station.columns = crime_station.columns.droplevel([0, 1])
    crime_station.columns
    >>>
    MultiIndex([('강간', '검거'),
                ('강간', '발생'),
                ('강도', '검거'),
                ('강도', '발생'),
                ('살인', '검거'),
                ('살인', '발생'),
                ('절도', '검거'),
                ('절도', '발생'),
                ('폭력', '검거'),
                ('폭력', '발생')],
               names=['죄종', '발생검거'])
    
    crime_station.head()

반응형