import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
首先使用numpy.random函数构造python操作用的基础数据源
# 生成一个100行,5列的数组,并转换为DataFrame格式
# 注意,columns生成的时候尽量不要用list方法,会生成multiindex,
df = pd.DataFrame(np.random.randint(low=10,high=100,size=(100,5)),columns=['a','b','c','d','e'])
df
df.columns
# 对A列数据进行聚合,
table = pd.pivot_table(data=df,index=['a'],values=['b','c'],aggfunc={'b':'count','c':np.sum},margins=True,margins_name='总计',fill_value=0)
table
透视表的结果本身依然是一个DataFrame格式数据,所以可以使用query()函数来查询
table.query('a ==95')
table.query('a in (10,20)')
table.index
table[table.index=='95']
np.random.seed(10)
df1 = pd.DataFrame(np.random.randint(low=10,high=100,size=(100,5)),columns=['a','b','c','d','e'])
df1
dftable = df1.pivot_table(index=['a'],values=['b'],aggfunc='count',margins=True,margins_name='汇总')
# 除以汇总值就是占比
dftable.div(dftable.iloc[-1,-1],axis='columns')
# 将占比以百分比的形式展示
dftable.div(dftable.iloc[-1,-1],axis='columns').applymap(lambda x: format(x,'.1%'))