透视图和交叉表
在数据分析中,数据透视表是常见的工具之一,需要根据行或列对数据进行各个维度数据的汇总,在pandas中,提供了相关函数解决此类问题
透视图相关函数
pivot_table(data,index,colums,values,aggfunc,fill_value,margins,margins_name=)
- index: 行索引
- colums: 列索引
- values: 分组的字段,只能为数值型变量
- aggfunc: 聚合函数
- fill_value: 缺失值填充方法
- margins: 是否需要总计
import pandas as pd
import numpy as np
import os
os.chdir('G:jupyterNotebookNetwordFile')
df=pd.read_csv('vgsales.csv',dtype={'Year':float})
pd.pivot_table(data=df,index='Year',values='Global_Sales',
aggfunc=np.mean,margins=True,margins_name='总计求均值')
pd.pivot_table(data=df,index='Year',columns='Genre',values='Global_Sales',
aggfunc=np.mean,margins=True,margins_name='总计求均值')
pd.pivot_table(data=df,index='Year',columns='Genre',values='Global_Sales',
aggfunc=np.mean,margins=True, fill_value=0,margins_name='总计求均值')
pd.pivot_table(data=df,index='Year',columns='Genre',values='NA_Sales',
aggfunc=[np.sum,np.median],margins=True, fill_value=0,margins_name='总计求均值').head(10)
pd.pivot_table(data=df,index=['Year','Platform'],columns='Genre',values='NA_Sales',
aggfunc=np.mean,margins=True, fill_value=0,margins_name='总计求均值').head(10)
交叉表
:计算分组频率、次数
pd.crosstab(index=df['Platform'],columns=df=['Genre'],margins=True)
pd.crosstab(index=df['Platform'],columns=df=['Genre'],margins=True
values=df['NA_Sales'],aggfunc=np.sum )
pd.crosstab(index=df['Platform'],columns=df=['Genre'],normalize='all',#标准化
margins=True)
pd.crosstab(index=df['Platform'],columns=df=['Genre'],normalize='index',#标准化
margins=True)
pd.crosstab(index=df['Platform'],columns=df=['Genre'],normalize='columns',#标准化
margins=True)