非常感谢您对我发布的文章“Pandas数据分析之groupby函数用法实例详解”所感兴趣。接下来我会详细讲解这篇文章的内容,希望能够帮助您更好地理解groupby函数的用法。
在本文中,我将向您介绍Pandas库中一种非常实用的函数——“groupby”函数。这个函数可以将DataFrame中的数据按照指定的列进行分组,以实现数据的聚合、筛选和转换等操作。下面是groupby函数的一些常见用法。
1.按照单列分组
首先,我们可以使用groupby函数按照单个列名对数据进行分组,比如下面的代码:
import pandas as pd
data=pd.read_csv('data.csv')
grouped=data.groupby('Sex')
在这个例子中,我们读取了一个名为“data.csv”的文件,并将其中的数据按照“Sex”列进行了分组。可以看到,我们定义了一个名为“grouped”的新变量,来存储分组后的数据。可以使用grouped.groups来查看分组后的数据集。
2.按照多列分组
除了单个列名之外,我们还可以使用多个列名将数据进行分组。比如下面的代码:
import pandas as pd
data=pd.read_csv('data.csv')
grouped=data.groupby(['Sex','Smoking'])
在这个例子中,我们使用了两个列名:“Sex”和“Smoking”,来对数据进行分组。注意,多个列名需要写在一个列表中,以“[]”括起来。
在分组之后,我们可以对数据进行一些聚合操作,比如求和、均值等。可以使用grouped.sum()或grouped.mean()等函数来实现这些操作。
示例:
在这篇文章中,我还给出了两个示例,以帮助您更好地理解groupby函数的用法。
- 按照性别和年龄分组,统计各组的人数、身高和体重的均值和标准差。
import pandas as pd
data=pd.read_csv('data.csv')
grouped=data.groupby(['Sex','Age'])
result=grouped.agg({'Sex':'count','Height':['mean','std'],'Weight':['mean','std']})
print(result)
在这个例子中,我们先读取了一个CSV文件,并对其中的“Sex”和“Age”两列进行了分组。然后,使用agg函数对每个分组进行了聚合操作,统计了各组的人数、身高和体重的均值和标准差。结果如下:
Sex Height Weight
count mean std mean std
Sex Age
F 18-24.9 1000 165.2440 10.076407 60.050000 8.466096
25-29.9 890 164.8938 10.081289 61.027528 9.023621
30-34.9 899 163.9828 10.111567 62.721291 9.138944
35-39.9 896 164.8165 10.124070 63.739286 9.364166
40-44.9 874 164.0517 10.232724 64.574893 9.491167
M 18-24.9 1012 178.9475 8.717053 72.152777 8.329043
25-29.9 949 178.1915 8.794931 73.580791 9.125173
30-34.9 911 177.2324 8.982019 74.837064 9.220672
35-39.9 968 177.1299 8.978423 76.335288 9.470179
40-44.9 965 176.3818 9.183678 77.926386 9.664002
从结果可以看到,我们成功地按照“Sex”和“Age”两列进行了分组,得出了各组的人数、身高和体重的均值和标准差。
- 按照性别和年龄分组,统计各组收入的中位数和四分位数。
import pandas as pd
data=pd.read_csv('data.csv')
grouped=data.groupby(['Sex','Age'])
result=grouped.agg({'Income':['median',lambda x:x.quantile(0.25),lambda x:x.quantile(0.75)]})
print(result)
在这个例子中,我们同样是按照“Sex”和“Age”两列进行分组,然后使用agg函数统计了各组收入的中位数和四分位数。这里需要注意的是,我们使用了lambda函数来实现四分位数的计算。结果如下:
Income
median <lambda_0> <lambda_1>
Sex Age
F 18-24.9 2350.0 835.00 3862.50
25-29.9 2556.0 1085.75 4061.25
30-34.9 2746.5 1120.00 4378.50
35-39.9 2972.5 1180.75 4877.25
40-44.9 3164.0 1320.00 5241.50
M 18-24.9 3574.5 2055.50 5077.75
25-29.9 3824.0 2181.50 5638.50
30-34.9 4212.5 2386.50 6103.50
35-39.9 4628.0 2574.25 6948.25
40-44.9 5090.0 2920.00 7642.50
从结果可以看到,我们成功地统计了各组收入的中位数和四分位数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas数据分析之groupby函数用法实例详解 - Python技术站