📅  最后修改于: 2023-12-03 14:45:02.572000             🧑  作者: Mango
Pandas是一个流行的Python数据分析库,它提供了数据操作和分析的丰富功能。其中一个关键功能就是groupby操作。
groupby操作是将一组数据按照一个或多个特定的键进行拆分,并将相同键的数据分为一组。之后,可以对每个组分别应用特定的操作。
下面将介绍如何使用groupby来进行数据分析。
为了演示Pandas的groupby操作,我们需要准备一些数据。我们将使用鸢尾花数据集,该数据集包含了150个观测值和4个特征。
首先,我们需要导入Pandas库和数据集:
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target_names[iris.target]
接下来,我们将查看数据集的前5行:
print(df.head())
结果应该如下所示:
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
使用groupby函数,我们可以将数据按照指定的列进行分组:
grouped = df.groupby(by='target')
上述代码将以target列进行分组,并返回一个DataFrameGroupBy对象。一旦我们有了这个对象,我们就可以对每个组应用相应的转换或运算符。
以下是如何计算每个组的平均值:
print(grouped.mean())
输出结果应该如下所示:
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
target
setosa 5.006 3.418 1.464 0.244
versicolor 5.936 2.770 4.260 1.326
virginica 6.588 2.974 5.552 2.026
我们可以看到,每种目标分类下每个特征的平均值都被计算了出来。
groupby函数还有许多高级选项,例如针对多个键进行分组,对每个组应用不同的运算符,过滤掉某些组等。这里只讨论其中的一些:
grouped = df.groupby(by=['target', 'sepal length (cm)'])
print(grouped.mean())
上述代码将按target列和sepal length (cm)列进行分组,并返回平均值。
Pandas许多内置的函数(例如mean、sum、min和max)可以直接应用于DataFrameGroupBy对象。但是,您可能需要使用自己定义的函数进行运算,这时就需要使用apply函数。
以下是如何在每个组中计算前三个最大值的例子:
grouped = df.groupby(by='target')
def top3(df):
return df.nlargest(3, columns=['sepal length (cm)'])
result = grouped.apply(top3)
print(result)
上述代码将每个组的前三个最大值提取出来,并返回一个新的DataFrame对象。
有时候我们需要过滤掉某些组,只分析符合特定条件的数据。Pandas提供了filter函数来解决这个问题。
以下是如何筛选出每个组的标准差大于0.5的例子:
grouped = df.groupby(by='target')
def std_filter(df):
return df['sepal length (cm)'].std() > 0.5
result = grouped.filter(std_filter)
print(result)
上述代码将标准差小于0.5的数据过滤掉,并返回一个新的DataFrame对象。
在本文中,我们介绍了如何使用Pandas的groupby函数进行数据分析。无论您是在做探索性数据分析,还是在进行数据清洗和准备,groupby函数都是必不可少的工具。希望这篇文章能够帮助您更好地理解和应用该函数。