资讯详情

透视表pandas.pivot_table和交叉表pd.crosstab

# 透视表是一种可以对数据动态排布并且分类汇总的表格格式。 # 将指定原有DataFrame列分别作为行索引和列索引,然后对指定列应用聚集函数(默认情况下的公式mean函数)。

# pandas.pivot_table(data, values=None, index=None, columns=None,aggfunc=‘mean’, margins=False) # data:需要操作数据[[必须] DataFrame # values:计算操作的列名 由列名或列名组成的列表不代表所有列的操作 # index:[[必须]分组后作为行索引的列 由列名或列名组成的列表 # columns:分组后作为行索引的列 由列名或列名组成的列表 # aggfunc:指定对values计算操作参数给出的列,可以是字典(不同列指) 定不同的计算操作),默认为mean # margins:是否进行汇总和列汇总

import numpy as np import pandas as pd from pandas import Series,DataFrame df = DataFrame({'类别':['水果','水果','水果','蔬菜','蔬菜','肉类','肉类'],                 产地:美国                 苹果,梨,草莓                [5,5,9,3,2,10,8],                价格:[5,5,10,3,3,13,20]) df

# :Index是层次列,根据相应的顺序设置通过透视表获取的信息 # 我们没有指定要计算的列,所以默认是对的"index设定的列"计算所有其他列,Values需要计算的列可以指定 # 按产地和类别重新索引,然后执行价格和数量mean函数 df.pivot_table(index=产地,类别

# Columns类似Index作为分割数据的可选方式,可以设置列级字段,这不是必要的参数。 df.pivot_table(columns=产地,类别

# 行索引为产地,列索引为类别,应用于价格max函数,并提供分项统计,缺失值填充0 df.pivot_table('价格',index='产地',columns='类别',aggfunc='max',margins=True,fill_value=0)

# 交叉表是统计分组频率的特殊透视表,统计条目频率 # crosstab本质:按指定index和columns出现在统计数据帧中(index, columns)的频次。也可以理解为分组。crosstab()总是返回数据帧 pd.crosstab(df[类别],df[产地],margins=True) # 按类别分组,统计各分组产地的频率

pd.crosstab(df['类别'],df[产地],values=df[价格],aggfunc=np.max, margins=True).round(0)

# seaborn可以自动将crosstab()表转换为热图。我将注释设置为True,并用色条显示热图。 # seaborn还添加了列和索引名的样式(fmt='g' 将数字显示为整数而不是科学计数)。 import matplotlib.pyplot as plt import seaborn as sns df1 = DataFrame({'type':['fruit','fruit','fruit','vege','vege','meat','meat'],                 'where':['USA','CHINA','CHINA','CHINA','NEW','NEW','USA'],                 'fruit':['apple','pear','atraw','tomato','cucum','mutton','beef'],                'num[5,5,9,3,2,10,8],                'price(5、5、10、3、3、13、20)) cross1 = pd.crosstab(df1['type'],df1['where']).round(0) sns.heatmap(cross1, cmap='rocket_r', annot=True, fmt='g')

# 热图更容易解释。你不想让你的最终用户看到一张满是数字的表格。所以我会在需要的时候把每一个都做好crosstab()将结果放入热图中。 # 为了避免重复,我创建了一个有用的函数: def plot_heatmap(cross_table, fmt='g'):     fig, ax = plt.subplots(figsize=(8, 5))     sns.heatmap(cross_table,                 annot=True,                 fmt=fmt,                 cmap='rocket_r',                 linewidths=.5,                 ax=ax)     plt.show(); plot_heatmap(cross1)

标签: dc24vege流量传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台