데이터프레임의 데이터가 복잡하고 많으면 원하는 정보를 얻기 힘듭니다. 데이터를 정렬하여 원하는 정보를 빨리 찾기 위해서 피벗 테이블을 활용할 수 있습니다. 판다스의 피벗 테이블은 엑셀의 피벗 테이블보다 더 높은 유연성을 제공하므로 피벗 테이블 관련 함수는 자주 사용됩니다.
CSV 파일 불러오기
df = pd.read_csv('Sales_Funnel_CRM.csv')
df
Jupyter Notebook을 사용하는 경우, 불러오고자 하는 CSV 파일이 Jupyter Notebook 파일과 같은 폴더에 있도록 해주세요.
df라고 이름을 지정하고 "Sales_Funnel_CRM.csv"라는 csv 파일을 불러옵니다.
Pivot( ) 함수 연습: 구글이 구매한 제품과 라이선스 수
licenses = df[['Company','Product','Licenses']]
licenses
"Company", "Product", 그리고 "Licenses" 열을 사용하여 새로운 데이터프레임을 만듭니다.
pd.pivot(data=licenses,index='Company',columns='Product',values='Licenses')
pivot 함수에 data, index, columns, 그리고 values 값을 입력합니다. data에는 새로 만든 "licenses" 데이터프레임, index에는 "Company" 열 값, columns는 "Product" 열 값, 그리고 values에는 "Licenses" 열 값을 사용합니다.
Pivot_table( ) 함수 연습: 구글이 구매한 제품과 라이선스 수
pd.pivot_table(df,index="Company",aggfunc='sum')[['Licenses','Sale Price']]
Or
pd.pivot_table(df,index="Company",aggfunc='sum',values=['Licenses','Sale Price'])
pivot_table 함수를 사용하여 피벗 테이블을 만들 수 있습니다. df 데이터프레임을 가져오고 "Company"를 인덱스로 설정합니다. df 프레임에서 "Lincenses"와 "Sale Price" 열 값만 가져오는데, 각 인덱스에 따라 열 값들의 합 (aggfunc = 'sum')을 반환합니다.
Groupby( ) 함수 연습: 구글이 구매한 제품과 라이선스 수
df.groupby('Company').sum()[['Licenses','Sale Price']]
groupby 함수를 사용해서 피벗 테이블을 만들 수 있습니다. df 데이터프레임을 불러오고 "Company" 열 값을 인덱스로 지정합니다. "Licenses"와 "Sale Price" 열 값을 불러오고 각 인덱스에 따라 그 합 (sum)을 반환합니다.
Pivot_table( ) 함수 심화 연습: 구글이 구매한 제품과 라이선스 수
pd.pivot_table(df,index=["Account Manager","Contact"],values=["Sale Price"],columns=["Product"],aggfunc=[np.sum])
df 데이터프레임을 불러오고 "Account Manager"과 "Contact" 열 값을 인덱스로 지정합니다. "Product"를 열 값으로 지정하고 "Sale Price" 값의 합을 반환합니다. 결과를 보면 인덱스에 따라 제품 판매 가격의 합이 반환된 것을 확인할 수 있습니다.
pd.pivot_table(df,index=["Account Manager","Contact"],values=["Sale Price"],columns=["Product"],aggfunc=[np.sum],fill_value=0)
만약 null 값을 0으로 변경하기로 결정했다면 마지막에 fill_value=0을 입력합니다.
pd.pivot_table(df,index=["Account Manager","Contact"],values=["Sale Price"],columns=["Product"],
aggfunc=[np.sum,np.mean],fill_value=0)
하나 이상의 계산 방식을 사용할 수 있습니다. aggfunc=[np.sum,np.mean]는 합계와 평균값 모두를 계산하여 반환합니다.
pd.pivot_table(df,index=["Account Manager","Contact"],values=["Sale Price","Licenses"],columns=["Product"],
aggfunc=[np.sum],fill_value=0)
하나 이상의 열 카테고리도 지정할 수 있습니다. values=["Sale Price","Licenses"]와 같이 원하는 열 카테고리를 지정하면 됩니다.
pd.pivot_table(df,index=["Account Manager","Contact","Product"],values=["Sale Price","Licenses"],
aggfunc=[np.sum],fill_value=0)
위의 데이터프레임 결과가 한눈에 들어오지 않기 때문에 "Product" 열 카테고리를 인덱스로 지정합니다. 결과를 보면 훨씬 깔끔한 데이터프레임을 확인할 수 있습니다.
pd.pivot_table(df,index=["Account Manager","Contact","Product"],values=["Sale Price","Licenses"],
aggfunc=[np.sum],fill_value=0,margins=True)
margins=True를 입력하면 계산 값의 총 합 (All)을 반환할 수 있습니다.
'데이터 분석' 카테고리의 다른 글
Matplotlib 기본 라인 그래프 만들기 (2) | 2024.01.31 |
---|---|
판다스 데이터프레임 합치기 (concat, merge) (2) | 2024.01.27 |
Pandas Null값 관련 함수 (0) | 2024.01.20 |
Pandas 활용도 높은 함수 (0) | 2024.01.14 |
Pandas Apply 함수 (2) (0) | 2024.01.13 |