上面说了很多对于groupby的功能介绍,但是这个东西究竟能用在什么地方呢?这里简单举一个例子。
现在有一个场景,有两家商店1和2,每家商店有a,b,c三种商品,每家商店的每种商品都有各自的日销售额,现在要快速得到每家商店每种商品的月销售额,那么我们就可以使用groupby来进行操作。
具体的数据如下:
import pandas as pd
df = pd.DataFrame({'shop_id':list('111111222222'),
'item_id': list('abcabcabcabc'),
'item_daysales': list([1,2,3,4,5,6,1,2,3,4,5,6])})
我们得到的表格具体如下所示:
| shop_id | item_id | item_daysale |
---|
0 | 1 | a | 1 |
1 | 1 | b | 2 |
2 | 1 | c | 3 |
3 | 1 | a | 4 |
4 | 1 | b | 5 |
5 | 1 | c | 6 |
6 | 2 | a | 1 |
7 | 2 | b | 2 |
8 | 2 | c | 3 |
9 | 2 | a | 4 |
10 | 2 | b | 5 |
11 | 2 | c | 6 |
现在我们需要计算每家商店每种商品的月销售额,使用groupby进行操作,具体代码如下:
grouped = df.groupby(['shop_id','item_id']).sum().reset_index()
grouped.rename(columns={'item_daysale' : 'item_monthsale'})
代码中的第一步是使用“shop_id”和“item_id”对表格进行分类,这样因为商店有两种,商品有三种,对于每一家商店都有三种情况,划分后记进行求和操作就可以得到每家商店的月销售额,代码中的resent_index()的作用是保留作为划分的“shop_id”和“item_id”,如果去掉则输出的是另一种表格形式。第二段代码是对其中的“item_daysale”特征进行改名。
这样得到的最后的输出如下如所示:
| shop_id | item_id | item_monthsale |
---|
0 | 1 | a | 5 |
1 | 1 | b | 7 |
2 | 1 | c | 9 |
3 | 2 | a | 5 |
4 | 2 | b | 7 |
5 | 2 | c | 9 |
这样便完成了对销售额的月总和计算。
如果我们代码中没有输入resent_index(),则输出如下所示:
shop_id | item_id | item_monthsale |
1 | a | 5 |
b | 7 |
c | 9 |
2 | a | 5 |
b | 7 |
c | 9 |
这并不是我们想要的输出,我们希望输出的列项有“shop_id”,“item_id”和“item_monthsale”。所以得根据具体需要什么来写代码实现。
——————————
参考博客:https://blog.csdn.net/youngbit007/article/details/54288603
首先先创建一个表格:import pandas as pddf = pd.DataFrame({'key1':list('aabba'), 'key2': ['one','two','one','two','one'], 'data1': np.random.randn(5), 'dat...
pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片、切块、摘要等操作。根据一个或多个键(可以是函数、数组或DataFrame列名)拆分pandas对象。计算分组摘要统计,如计数、平均值、标准差,或用户自定义函数。对DataFrame的列应用各种各样的函数。应用组内转换或其他运算,如规格化、线性回归、排名或选取子集等。计算透视表或交叉表。执行分位数分析以及其他分组分析。
groupby分组函数:
返回值:返回重构格式的DataFrame,特别注意,groupby里面的字段内的数据重构后都会变成索引
groupby(),一般和sum()、mean
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=NoDefault.no_default, observed=False, dropna=True)
分组操作涉及到分离对象、应用函数和组合结果的一些组合。这可以用于对大量数据进行分组,并计算对这些分组的操作。
by:用于确定 groupby 的组。 如果 by 是一个函数,它会在对象索引的每个值上调
groupby函数功能:对DataFrame进行分组(可单类分组,可多类分组)
需求:按“字段”列对数据data进行分组
groupby函数基本格式:data.groupby([‘分组字段’])
data:要分组的原始数据
分组字段:分组参考的数据列名
原数据data:
单类分组举例
根据“班级”进行分组:
import pandas as pd
data = pd.read_excel('/Users/weihairui/Doc
一、groupby 能做什么?
python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算!
对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下:
df.groupby([df[属性],df[属性])(指分类的属性,数据的限定定语,可以有多个).mean()(对于数据的计算方式——函数名称)
举例如下:
print(df[“评分”].groupby([df[“地区”],df[“类型”]]).mean())
Python的pandas包提供的数据聚合与分组运算功能很强大,也很灵活。《Python for Data Analysis》这本书第9章详细的介绍了这方面的用法,但是有些细节不常用就容易忘记,遂打算把书中这部分内容总结在博客里,以便复习查看。根据书中的章节,这部分知识包括以下四部分:
1.GroupBy Mechanics(groupby技术)
2.Data Aggregation(...
In [2]: df = pd.DataFrame({'A': ['a', 'b', 'a', 'c', 'a', 'c', 'b', 'c'],
...: 'B': [2, 8, 1, 4, 3, 2, 5, 9],
...: 'C': [102, 98, 107, 10...