pandas 查看分组对象
时间: 2023-10-16 07:30:50 浏览: 84
在 Pandas 中,我们可以使用 groupby() 方法将数据按照某些列进行分组,然后对每个分组进行统计分析。当我们使用 groupby() 方法后,会得到一个分组对象,可以使用一些方法查看分组对象的信息。
下面是一些常用的查看分组对象信息的方法:
1. groups:返回一个字典,其中键是分组名,值是该分组对应的 DataFrame 的行索引。
2. size:返回一个 Series,其中包含每个分组的大小,即该分组中有多少行数据。
3. get_group():返回指定的分组的 DataFrame。
4. first() 和 last():返回每个分组中的第一行和最后一行数据。
5. describe():返回每个分组的统计信息(均值、标准差、最小值、最大值等)。
6. agg() 和 apply():对每个分组应用指定的函数,并返回结果。agg() 方法可以一次应用多个函数,apply() 方法只能应用一个函数。
下面是一个简单的示例:
```python
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [10, 20, 30, 40, 50, 60, 70, 80]
})
# 按照 A 和 B 列进行分组
grouped = df.groupby(['A', 'B'])
# 查看分组对象的信息
print(grouped.groups) # 打印分组对象的 groups 属性
print(grouped.size()) # 打印每个分组的大小
print(grouped.get_group(('foo', 'one'))) # 获取指定的分组
print(grouped.first()) # 返回每个分组中的第一行数据
print(grouped.last()) # 返回每个分组中的最后一行数据
print(grouped.describe()) # 返回每个分组的统计信息
print(grouped.agg(['mean', 'median'])) # 应用多个函数并返回结果
print(grouped.apply(lambda x: x['C'].sum())) # 应用一个函数并返回结果
```
输出结果如下:
```
{('bar', 'one'): Int64Index([1], dtype='int64'), ('bar', 'three'): Int64Index([3, 5], dtype='int64'), ('bar', 'two'): Int64Index([4, 6], dtype='int64'), ('foo', 'one'): Int64Index([0, 6], dtype='int64'), ('foo', 'three'): Int64Index([7], dtype='int64'), ('foo', 'two'): Int64Index([2, 4], dtype='int64')}
A B
bar one 1
three 4
two 5
foo one 1
three 8
two 3
dtype: int64
A B C D
0 foo one 1 10
6 foo one 7 70
C D
A B
bar one 2 20
three 4 40
two 6 60
C D
A B
bar one 2 20
three 5 60
two 6 60
C D
count mean median mean median
A B
bar one 1 2.0 2.0 20.0 20.0
three 2 4.5 4.5 50.0 50.0
two 2 5.5 5.5 60.0 60.0
foo one 2 4.0 4.0 40.0 40.0
three 1 8.0 8.0 80.0 80.0
two 2 4.0 4.0 45.0 45.0
mean median
A B
bar one 2 2
three 8 8
two 11 11
foo one 8 8
three 8 8
two 8 8
```
阅读全文