dataframe列联表等操作

pd.melt参数:

rame : DataFrame
id_vars:tuple, list,或ndarray,可选。用作标识符变量的列。
value_vars:tuple, list, 或 ndarray,可选。要unpivot的列。如果未指定,则使用未设置为id_vars的所有列。
var_name:标量用于‘variable’列的名称。如果为None,则使用 frame.columns.name或‘variable’。
value_name:标量,默认为'value',用于‘value’列的名称。
col_level:int 或 string,可选,如果列是MultiIndex,则使用此级别进行融合。

pd.melt(df ,in_vars = [] ,value_vars = [] ,value_name = '')

pd.crosstab参数:

pd.crosstab(index,   #  分组依据
            columns,   #
            values=None,   # 聚合计算的值
            rownames=None,   # 列名称
            colnames=None,   # 行名称
            aggfunc=None,   # 聚合函数
            margins=False,   # 总计行/列
            dropna=True,   #  是否删除缺失值
            normalize=False    # 
           )

 

pd.crosstab(index=df['客户名称'],
            columns=df['产品类别'],
            values=df['销量'],
            aggfunc='sum',
            margins=True
           ).round(0).fillna(0).astype('int')

#分类汇总
df.groupby(['客户名称', '产品类别']).apply(sum)

效果:

pd.pivot_table参数:

pivot_table(data, values=None, index=None, columns=None,aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')

# aggfunc也可以使用dict类型,如果dict中的内容与values不匹配时,以dict中为准。

pd.pivot_table(df,index=[u'对手',u'胜负'],columns=[u'主客场'],values=[u'得分',u'助攻',u'篮板'],aggfunc={u'得分':np.mean, u'助攻':[min, max, np.mean]},fill_value=0)

table=pd.pivot_table(df,index=[u'对手',u'胜负'],columns=[u'主客场'],values=[u'得分',u'助攻',u'篮板'],aggfunc=[np.mean],fill_value=0)

效果:

原文地址:https://www.cnblogs.com/fm-yangon/p/14063185.html