专注于快乐的事情

Pandas分组技术

分组

在数据处理中,需要先将数据进行拆分,然后在其对于的每个分组中进行运算。

df.groupby(‘key’)
DataFrame 的 groupby() 方法进行绝大多数常见的分割 - 应用 - 组合操作。
返回值不是一个 DataFrame 对象,而是一个 DataFrameGroupBy 对象,可以将它看成是一种特殊形式的 DataFrame,里面隐藏着若干组数据,但是在没有应用累计函数之前不会计算。

sample.groupby(‘class’)[‘math’].max()

拆分列

table = pd.DataFrame({‘cust_id’:[10001,10001,10002,10002,10003],
‘type’:[‘Normal’,’Special_offer’,\
‘Normal’,’Special_offer’,’Special_offer’],
‘Monetary’:[3608,420,1894,3503,4567]})

        cust_id    type    Monetary
0    10001    Normal    3608
1    10001    Special_offer    420
2    10002    Normal    1894
3    10002    Special_offer    3503
4    10003    Special_offer    4567

pd.pivot_table(table,index=’cust_id’,columns=’type’,values=’Monetary’)

将type拆分为两列,这里使用的是pd.pivot_table函数,第一个参数为待拆分列的表,index表示原数据中的标示列,columns表示该变量中的取值将会成为新变量的变量名,values表示待拆分的列。

type    Normal    Special_offer
cust_id        
10001    3608.0    420.0
10002    1894.0    3503.0
10003    NaN    4567.0

堆叠列

堆叠列是拆分列的反操作,当存在表示列中有多个数值变量的时候,可以通过堆叠列将多列的数据堆积成一列。

table1 = pd.pivot_table(table,index='cust_id',
                        columns='type',
                        values='Monetary',
                        fill_value=0,
                        aggfunc=np.sum).reset_index()
table1

pd.melt(table1,
id_vars='cust_id',
value_vars=['Normal','Special_offer'],
value_name='Monetary',
var_name='TYPE')

table1代表待堆叠列的列名,id_vars代表标示变量,value_vars代表待堆叠的变量,value_name为堆叠后值变量列的名称,var_name为堆叠后堆叠变量的名称

参考网站

评论系统未开启,无法评论!