groupby用法详解
时间: 2023-11-09 16:45:31 浏览: 87
groupby() 是 pandas 库中的一个函数,用于按照指定的列名对数据进行分组。它可以将数据集按照指定的列值进行分组,并对每个分组进行聚合操作。
groupby() 的基本语法如下:
```python
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
```
参数说明:
- by:用于指定分组依据的列名或列名的列表。可以是字符串、列表或字典(其中的键为列名,值为分组标签)。
- axis:指定按行还是按列进行分组,0 表示按行分组,1 表示按列分组。
- level:用于多层索引数据框的分组操作,指定要在哪个索引层级上进行分组。
- as_index:是否以分组的列作为结果的索引,默认为 True。如果设置为 False,则不以分组的列作为索引。
- sort:是否对结果进行排序,默认为 True。
- group_keys:是否显示分组信息的键,默认为 True。
- squeeze:是否在只有一个分组时将结果作为序列返回,默认为 False。
groupby() 返回一个 GroupBy 对象,可以对其进行聚合操作,如计算均值、求和、计数等。常用的聚合函数有 count()、sum()、mean()、median()、min()、max() 等。
例如,假设有一个包含姓名和年龄的数据集 df:
```python
import pandas as pd
data = {'Name': ['Tom', 'Nick', 'John', 'Tom', 'Nick'],
'Age': [20, 25, 30, 35, 40]}
df = pd.DataFrame(data)
```
可以按照姓名对数据进行分组,并计算每个姓名的平均年龄:
```python
grouped = df.groupby('Name')
result = grouped['Age'].mean()
```
这样就可以得到每个姓名对应的平均年龄。
除了单列分组外,还可以通过传递多个列名的列表进行分组,以及通过字典进行分组。
希望以上解答能帮到你!如果还有其他问题,请随时提问。
阅读全文