一、聚合函数
(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

最低0.47元/天 解锁文章

2450

被折叠的 条评论
为什么被折叠?



