1.分组与聚合的原理
在Pandas中:
分组:
指使用特定的条件将原数据划分为多个组;
聚合:
对每个分组中的数据执行某些操作,最后将计算的结果进行整合。
1.2分组与聚合的过程分为三步
1.2.1拆分
将数据集按照些标准拆分为若干个组。split拆分方法
1.2.2应用
将某个函数或方法(内置和自定义均可)应用到每个分组。apply方法应用
1.2.3合并
将产生的新值整合到结果对象中。combine方法整合
2. 通过groupby()方法将数据拆分成组
在Pandas中,可以通过groupby()方法将数据集按照某些标准划分成若干个组。
2.1 groupby()方法
by:
用于确定进行分组的依据。
level:
两层索引指定内外层,0/1。
axis:
表示分组轴的方向。
sort:
表示是否对分组标签进行排序,接收布尔值,默认为True。
groupby()方法会返回一个 Groupby对象,该对象实际上并没有进行任何计算,只是包含一些关于分组键的中间数据而已。
•使用Series调用groupby()方法返回的是SeriesGroupBy对象。
•使用DataFrame调用groupby()方法返回的是DataFrameBy对象。
2.2 groupby()方法的by参数
by 参数可以接受的数据有4种:列表或数组、DataFrame某列、字典或Series对象、函数
2.2.1 按列名进行分组
如果DataFrame对象的某一列数据符合划分成组的标准,则可以将该列当做分组键来拆分数据集。
df = pd.DataFrame({
"Key":['C','B','C','A','B','B','A','C','A'],
"Data":[2,4,6,8,10,1,14,16,18]})
# 通过groupby()方法将数据集按照某些标准划分成若干个组。
# 按Key列进行分组 或 通过列名进行分组
# 如果DataFrame对象的某一列数据符合划分成组的标准,则可以将该列当做分组键来拆分数据集。
df.groupby(by='Key')
查看每个分组的具体内容,使用for循环遍历DataFrameGroupBy对象
group_obj = df.groupby('Key')
# 遍历分组对象
for i in group_obj:
print(i)
2.2.2 按Series对象进行分组
将自定义的Series类对象作为分组键进行分组。
# 按自定义Series对象进行分组 或 通过Series对象进行分组
# 将自定义的Series类对象作为分组键进行分组。
df = pd.DataFrame({
'key1': ['A', 'A', 'B', 'B', 'A'],
'key2': ['one', 'two', 'one', 'two', 'one'],
'data1': [2, 3, 4, 6, 8],
'data2': [3, 5, 6, 3, 7]})
se = pd.Series(['a', 'b'