Pandas的groupby方法和mean方法

Pandas的groupby方法和mean方法

在本文中,我们将介绍如何使用Pandas的groupby方法和mean方法。Pandas是一个Python的数据分析库,非常适合于数据清洗和处理。groupby方法是Pandas提供的一个非常强大的方法,可以对数据进行分组,然后对每一组进行聚合运算。mean方法是其中一个聚合运算,它可以求出每一组的均值。

阅读更多:Pandas 教程

groupby方法的使用

groupby方法的使用非常简单,它的语法如下:

groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
Python

其中,by参数是用来指定分组依据的列名或者列表,axis参数是表示沿着哪个轴进行分组,level参数可以指定多层索引时的哪一层进行分组,as_index表示是否把分组的列作为索引,sort表示是否按照分组的键进行排序,group_keys表示是否在分组结果中包含原始键,squeeze表示是否用Series表示分组结果。除了上述参数外,groupby方法还可以接收很多其他的参数,具体可以查看Pandas官方文档。

下面是一个示例,我们使用groupby方法对一个DataFrame进行分组:

import pandas as pd
df = pd.DataFrame({"A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
                   "B": ["one", "one", "two", "three", "two", "two", "one", "three"],
                   "C": [1, 2, 3, 4, 5, 6, 7, 8],
                   "D": [10, 20, 30, 40, 50, 60, 70, 80]})
grouped = df.groupby("A") # 按照列"A"进行分组
for name, group in grouped:
    print(name)
    print(group)
Python

输出结果:

bar
     A      B  C   D
1  bar    one  2  20
3  bar  three  4  40
5  bar    two  6  60
foo
     A    B  C   D
0  foo  one  1  10
2  foo  two  3  30
4  foo  two  5  50
6  foo  one  7  70
7  foo  three  8  80
Python

可以看到,分组结果是一个由分组名和对应的数据组成的二元组。

mean方法的使用

mean方法是groupby方法的一种聚合操作,它可以计算每一组的均值。mean方法的使用非常简单,例如:

import pandas as pd
df = pd.DataFrame({"A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
                   "B": ["one", "one", "two", "three", "two", "two", "one", "three"],
                   "C": [1, 2, 3, 4, 5, 6, 7, 8],
                   "D": [10, 20, 30, 40, 50, 60, 70, 80]})
grouped = df.groupby("A") # 按照列"A"进行分组
print(grouped.mean()) # 计算每一组的均值
Python

输出结果:

            C     D
A                  
bar  4.000000  40.0
foo  4.8      44.0
Python

可以看到,计算出了每一组的均值。

使用mean方法计算分组结果并生成DataFrame

有时候,我们需要把分组结果计算出来的均值保存到一个新的DataFrame中。在这种情况下,我们可以直接使用mean方法生成的DataFrame,例如:

import pandas as pd
df = pd.DataFrame({"A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
                   "B": ["one", "one", "two", "three", "two", "two", "one", "three"],
                   "C": [1, 2, 3, 4, 5, 6, 7, 8],
                   "D": [10, 20, 30, 40, 50, 60, 70, 80]})
grouped = df.groupby("A") # 按照列"A"进行分组
result = grouped.mean() # 计算每一组的均值
print(result)
Python

输出结果:

            C     D
A                  
bar  4.000000  40.0
foo  4.8      44.0
Python

可以看到,result就是生成的新的DataFrame。

手动生成DataFrame

我们也可以手动生成一个新的DataFrame,来保存分组结果计算出来的均值。具体的步骤如下:

  1. 使用groupby方法对DataFrame进行分组;
  2. 对每一组使用mean方法计算均值;
  3. 把计算出来的均值保存到一个新的字典中,键是分组名,值是均值;
  4. 使用pd.DataFrame方法转换字典为DataFrame。

下面是一个示例代码:

import pandas as pd
df = pd.DataFrame({"A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
                   "B": ["one", "one", "two", "three", "two", "two", "one", "three"],
                   "C": [1, 2, 3, 4, 5, 6, 7, 8],
                   "D": [10, 20, 30, 40, 50, 60, 70, 80]})
grouped = df.groupby("A") # 按照列"A"进行分组
means = {}
for name, group in grouped:
    means[name] = group["C"].mean() # 计算每一组的均值
result = pd.DataFrame(means.items(), columns=["A", "C_mean"]) # 转换为DataFrame
print(result)
Python

输出结果:

     A  C_mean
0  bar     4.0
1  foo     4.8
Python

可以看到,我们手动计算了每一组的均值,并把结果保存到了新的DataFrame中。

总结

本文介绍了Pandas的groupby方法和mean方法。groupby方法可以对数据进行分组并进行聚合运算,mean方法是其中一个聚合运算,可以计算每一组的均值。我们可以直接使用mean方法生成的DataFrame,也可以手动生成一个新的DataFrame来保存分组结果计算出来的均值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册