본문 바로가기

데이터 분석

Pandas 피벗 테이블 만들기

반응형

 

 

데이터프레임의 데이터가 복잡하고 많으면 원하는 정보를 얻기 힘듭니다. 데이터를 정렬하여 원하는 정보를 빨리 찾기 위해서 피벗 테이블을 활용할 수 있습니다. 판다스의 피벗 테이블은 엑셀의 피벗 테이블보다 더 높은 유연성을 제공하므로 피벗 테이블 관련 함수는 자주 사용됩니다.   

 

 

 
 

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)을 반환할 수 있습니다. 

 

 

 

 


 

 

 

 

Pandas Null값 관련 함수

데이터분석을 할 때 가장 방해되는 요소 중 하나가 Null값 입니다. 특히, 숫자의 계산이 필요한 경우 null값은 계산의 부정확성을 증가시킵니다. 임의로 값을 변경할 경우 정확한 분석을 할 수 없

thespud.kr

 

 

 

Pandas 활용도 높은 함수

Pandas에는 다양한 함수가 있습니다. 그중에서 활용도가 높은 함수 몇 가지를 알아보도록 하겠습니다. CSV 파일 불러오기 df = pd.read_csv('tips.csv') Jupyter Notebook을 사용하는 경우, 불러오고자 하는 CSV

thespud.kr

 

 

 

Pandas Apply 함수 (2)

이전 글에 이어 apply 함수에 대하여 더 알아보도록 하겠습니다. apply와 함께 자주 사용되는 lambda 함수와 lambda 함수 대신 사용할 수 있는 vectorize 함수도 함께 알아보도록 하겠습니다. 해당 글을 보

thespud.kr

 

반응형