pandas分组聚合、表格操作

一、聚合函数

(1)通过numpy或者pandas中统计分析方法;
(2)agg([np.sum,np.mean])
或agg({‘columns’:np.sum,np.mean],‘columns2’:np.sum,np.mean]})
(3)transform:转换只有一个参数func

transform聚合方法:
在pandas或者numpy中没有现成的函数可以使用,可以通过transform使用自定义的函数

data=pd.read_excel(r'meal_order_detail.xlsx')
print(data.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2779 entries, 0 to 2778
Data columns (total 19 columns):
 #   Column             Non-Null Count  Dtype         
---  ------             --------------  -----         
 0   detail_id          2779 non-null   int64         
 1   order_id           2779 non-null   int64         
 2   dishes_id          2779 non-null   int64         
 3   logicprn_name      0 non-null      float64       
 4   parent_class_name  0 non-null      float64       
 5   dishes_name        2779 non-null   object        
 6   itemis_add         2779 non-null   int64         
 7   counts             2779 non-null   int64         
 8   amounts            2779 non-null   int64         
 9   cost               0 non-null      float64       
 10  place_order_time   2779 non-null   datetime64[ns]
 11  discount_amt       0 non-null      float64       
 12  discount_reason    0 non-null      float64       
 13  kick_back          0 non-null      float64       
 14  add_inprice        2779 non-null   int64         
 15  add_info           0 non-null      float64       
 16  bar_code           0 non-null      float64       
 17  picture_file       2779 non-null   object        
 18  emp_id             2779 non-null   int64         
dtypes: datetime64[ns](1), float64(8), int64(8), object(2)
memory usage: 412.6+ KB
None
# 写法一:
data['counts'].transform(lambda x:x*2)
0       2
1       2
2       2
3       2
4       2
       ..
2774    2
2775    2
2776    2
2777    2
2778    2
Name: counts, Length: 2779, dtype: int64
# 写法二:
def transform1(value):
    values=value*2
    return values
data['counts'].transform(transform1)
0       2
1       2
2       2
3       2
4       2
       ..
2774    2
2775    2
2776    2
2777    2
2778    2
Name: counts, Length: 2779, dtype: int64

二、分组:
groupby(by=‘columns1’)

三、透视表

index:行分组键,分完组以后,分组键的取值在行索引的位置;
aggfunc:聚合函数==>和agg方法一致;
values:指定想要进行聚合的列;
columns:列分组键,分完组之后,分组键的取值,在列索引的位置;
fill_value:将数据为np.nan的值填充为对应的值;
margins:表示汇总开关,默认是False;
margins_name:‘ALL’,汇总的列或者行的columns,index的索引;

pd.pivot_table(data,
               index=['order_id','amounts'],
               aggfunc=[np.mean,np.sum],
               values=['counts','dishes_name']).head()
mean sum
counts counts
order_id amounts
137 1 4.0 4
6 1.0 1
26 1.0 1
27 1.0 1
35 1.0 1
pd.pivot_table(data,
               columns=['order_id'],
               aggfunc=[np.mean,np.sum
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值