Pandas 分组和平均值

Pandas 分组和平均值

在本文中,我们将介绍如何使用Pandas中的groupby函数对数据进行分组,并使用这些组计算平均值。

阅读更多:Pandas 教程

分组数据

在Pandas中,groupby函数能够对DataFrame中的数据按照某个或多个列进行分组。例如,假设我们有以下的DataFrame:

import pandas as pd

data = {
    'Name': ['Tom', 'Tom', 'Mary', 'Mary', 'John', 'John', 'John'],
    'Subject': ['Math', 'Science', 'Math', 'Science', 'Math', 'Science', 'History'],
    'Score': [80, 90, 85, 95, 90, 85, 75]
}

df = pd.DataFrame(data)
print(df)
Python

输出结果如下:

   Name  Subject  Score
0   Tom     Math     80
1   Tom  Science     90
2  Mary     Math     85
3  Mary  Science     95
4  John     Math     90
5  John  Science     85
6  John  History     75
Python

我们可以使用groupby函数,按照Name列对数据进行分组:

grouped = df.groupby('Name')
Python

现在,我们有了一个GroupBy对象,它包含了按照Name列分组后的数据。我们可以遍历这个对象,查看每一组的数据:

for name, group in grouped:
    print(name)
    print(group)
Python

输出结果如下:

John
   Name  Subject  Score
4  John     Math     90
5  John  Science     85
6  John  History     75
Mary
   Name  Subject  Score
2  Mary     Math     85
3  Mary  Science     95
Tom
  Name  Subject  Score
0  Tom     Math     80
1  Tom  Science     90
Python

我们也可以通过指定多个列,对数据进行多维分组:

grouped = df.groupby(['Name', 'Subject'])
Python

现在,我们有了一个按照Name和Subject列分组后的GroupBy对象。我们可以遍历这个对象,查看每一组的数据:

for name, group in grouped:
    print(name)
    print(group)
Python

输出结果如下:

('John', 'History')
   Name  Subject  Score
6  John  History     75
('John', 'Math')
   Name Subject  Score
4  John    Math     90
('John', 'Science')
   Name  Subject  Score
5  John  Science     85
('Mary', 'Math')
   Name  Subject  Score
2  Mary     Math     85
('Mary', 'Science')
   Name  Subject  Score
3  Mary  Science     95
('Tom', 'Math')
  Name Subject  Score
0  Tom    Math     80
('Tom', 'Science')
  Name  Subject  Score
1  Tom  Science     90
Python

计算平均值

在分组数据后,我们可以使用agg函数计算每一组数据的平均值。例如,我们可以计算每个学生的平均分数:

grouped = df.groupby('Name').agg({'Score': 'mean'})
print(grouped)
Python

输出结果如下:

      Score
Name       
John     83
Mary     90
Tom      85
Python

我们也可以对多维分组后的数据进行平均值计算:

grouped = df.groupby(['Name', 'Subject']).agg({'Score': 'mean'})
print(grouped)
Python

输出结果如下:

                Score
Name Subject         
John History       75
     Math          90
     Science       85
Mary Math          85
     Science       95
Tom  Math          80
     Science       90
Python

总结

在Pandas中,groupby函数能够对DataFrame中的数据进行分组。我们可以按照一个或多个列分组,并可以对分组后的数据进行平均值计算。这些功能可以帮助我们更方便地对数据进行分析和统计计算,提高数据处理的效率和精度。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册