python数据分析之pandas(12)数据聚合

1.goupby()函数实例

可以对frame或者其中部分列排序,排序by可以是一列或多列,返回索引列为by中的列,而columns则为所选择的要排序的列
frame[‘price1’].groupby(frame[‘color’])

>>> frame = pd.DataFrame({'color': ['white', 'red', 'green', 'red', 'green'], 'o
bject': ['pen', 'pencil', 'pencil', 'as', 'pen'], 'price1': [4,2,1,5, 6], 'price
>>> group = frame['price1'].groupby(frame['color'])
>>> group.mean()
color
green    3.5
red      3.5
white    4.0
Name: price1, dtype: float64
>>> group

2.等级分组

frame[‘price1’, ‘price2’].groupby(frame[‘color’]) .mean()

3.组迭代

可以根据排序的组进行迭代

>>> for name, group in frame.groupby('color'):
...   print(name)
...   print(group)
...
green
   color  object  price1  price2
2  green  pencil       1       9
4  green     pen       6       1
red
  color  object  price1  price2
1   red  pencil       2      10
3   red      as       5       8
white
   color object  price1  price2
0  white    pen       4       6

4.链式转换

以下三种方式等价

frame['price1'].groupby(frame['color']).mean()
frame.groupby(frame['color'])['price1'].mean()
frame.groupby(frame['color']).mean()['price1']

同样可以在columns上加上前缀

frame.groupby('color').mean().add_prefix('mean_')

5.分组函数

可以用agg(func)函数对frame排序后对象分组操作,分组函数即为自己定义的func,参数为Series

>>> frame.groupby('color')['price1'].agg(range)
color
green    5
red      3
white    0
Name: price1, dtype: int64
>>>

还可以是有多个聚合函数:

frame.groupby('color')['price1'].agg(['mean', 'std'])
发布了127 篇原创文章 · 获赞 10 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/u012599545/article/details/104419983