pandas数据预处理之dataframe的groupby操作方法
在pandas中,GroupBy
是一个强有力的函数,可以用于将数据集中的数据按照某些条件分组、并对每个分组应用函数进行操作。这里主要讲解如何使用groupby
操作进行数据预处理。
1. 按照单列分组
首先,我们以pandas
的经典数据集iris
为例,介绍如何按照单列分组。
import pandas as pd
iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data", header=None, names=["sepal_l", "sepal_w", "petal_l", "petal_w", "class"])
现在,可以通过以下方式来查看分好的组:
iris_groupby = iris.groupby('class')
iris_groupby.groups
output:
{
'Iris-setosa': [0, 1, 2, 3, 4, ......, 45],
'Iris-versicolor': [46, 47, 48, 49, 50, ......, 95],
'Iris-virginica': [96, 97, 98, 99, 100, ......, 145]
}
这样,我们就可以对iris
数据集按照class
这一列进行分组了。接下来,可以对分好的组进行统计操作。
iris_groupby_first_value = iris_groupby.first()
print(iris_groupby_first_value)
output:
sepal_l sepal_w petal_l petal_w
class
Iris-setosa 5.1 3.5 1.4 0.2
Iris-versicolor 7.0 3.2 4.7 1.4
Iris-virginica 6.3 3.3 6.0 2.5
以上,我们的输出结果就是class
这一列中每个唯一的值的第一个结果。这里可以看出,groupby
可以对每个分组的数据进行操作的。
2. 按照多列分组
同样,对于多列分组,只需要在groupby
中添加你所需要分组的列即可。接下来还是以iris
数据集为例:
iris_groupby = iris.groupby(["class", "sepal_l"])
iris_groupby_first_value = iris_groupby.first()
print(iris_groupby_first_value)
输出结果如下:
sepal_w petal_l petal_w
class sepal_l
Iris-setosa 4.3 3.0 1.1 0.1
4.4 2.9 1.4 0.2
4.5 2.3 1.3 0.3
4.6 3.1 1.5 0.2
4.7 3.2 1.3 0.2
... ... ... ...
Iris-virginica 7.7 2.6 6.9 2.3
7.9 3.8 6.4 2.0
上面的代码中,我们使用了两列数据class
和sepal_l
进行分组,这样就会得到更多你想要的排列组合方式。
总结
上述代码中,对于groupby
方法的操作很灵活,具体应该根据实际使用需求来进行。groupby
操作本身非常强大,它可以很好的解决数据分组的问题,让数据分析工作更加高效准确。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas数据预处理之dataframe的groupby操作方法 - Python技术站