在EXCEL中,数据透视表是一个很神奇的工具,非常实用,方便。 当我第一次用时,it's amazing!
同样的,在Pandas模块中,也存在着类似数据透视表的功能:将数据分组,聚合。
-----DataFrame.groupby([key1,key2],as_index=False)
上面的代码中,分组键key1,key2可以是任何长度适当的Series,同样还可以是相对应DataFrame的列名,还可以是字典,如:{a:1,b:2,c:1,d:2,f:1},就会按照1,2进行分组。 as_index--依照分组的键不构成新的索引,新索引自然排序。
groupby对象支持迭代,也可以做成字典。
当你只想显示某一组数据是,可以使用 df.groupby(key)[data1] 或者 df[data1].groupby(df[key1])。
还可以根据函数进行分组,df.groupby(func),函数func会在各个索引上调用一次
根据索引进行分组,df.groupby(level='key',axis=0|1)
grouped.transform(func)--将一个函数应用到各个分组,然后将结果放置在适当位置。
函数的聚合: grouped.agg([func1,func2,func3])
拆分-合并-应用: grouped.apply(func)。 正是先用groupby拆分,再用apply进行各部分应用,最后再用func作用于各个部分进行合并。
pd.cut(data,num)---分位数,将一组数据按照数值区间大小相等的原则,等分成num份。然后作为分组键对其他DATAFRAME进行分组。
pd.qcut(data,num)---桶分析,按照数据点数量相等原则,等分成num份。
df.pivot_table(['data1','data2'],index=['key1'],columns=['key2'],aggfunc=func,fill_value=0)
aggfunc参数,填入各个部分的聚合函数,fill_value参数,用于替换结果表中的缺失值。