文章目录
- 十、数据透视表
- 1.获取数据
- 2.手工制作数据透视表
- 3.数据透视表语法
- 1)多级数据透视表
- 2)其他数据透视表选项
- 4.案例:美国人的生日
- 附:逆透视方法df.melt()
十、数据透视表
数据透视表将每一列数据作为输入,输出将数据不断细分成多个维度累计信息的二维数据表。
1.获取数据
本节用一份Seaborn 程序库采用泰坦尼克号的乘客信息数据库来演示(titanic)
2.手工制作数据透视表
使用groupby可以实现数据透视的效果,但是比较繁琐
3.数据透视表语法
df.pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
1)多级数据透视表
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)
用途:返回 x 中的每一个数据 在bins 中对应 的范围,相当于将x按照边界值分箱
使用新的列作为透视index
pd.qcut(x, q, labels=None, retbins=False, precisinotallow=3, duplicates='raise')
用途:根据x均匀分成x个箱子,如q=2,则是按照中位数分箱,以此类推
将新的列作为透视columns
2)其他数据透视表选项
fill_value
和 dropna
这两个参数用于处理缺失值
aggfunc
参数:
用于设置累计函数类型,默认值是均值,与 GroupBy 的用法一样,累计函数可以用一些常见的字符串(‘sum’、 ‘mean’、 ‘count’、 ‘min’、 ‘max’ 等)表示,也可以用标准的累计函数(np.sum()、 min()、 sum() 等)表示。
不同的透视列如果需要使用不同的累计方法,可以通过字典为不同的列指定
margins
对行列总计,总计行/列名称默认为’All’
4.案例:美国人的生日
附:逆透视方法df.melt()
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
该方法可以将二维数据转换成一维数据
如同透视表,逆透视也可以一步步列转索引(set_index),维度转索引(stack)来实现