暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python数据分析笔记#10.2 数据聚合

Yuan的学习笔记 2022-05-03
351



「目录」

数据聚合与分组运算

Data Aggregation and Group Operations

  • 10.1 => GroupBy机制

  • 10.2 => 数据聚合

  • 10.3 => apply:拆分 - 应用 - 合并

  • 10.4 => 透视表和交叉表


数据聚合

聚合指的是任何能够从数组到标量值的数据转换过程,比如mean、count、min以及sum等。

In [1]: import numpy as np

In [2]: import pandas as pd

In [3]: df = pd.DataFrame({'key1' : ['a''a''b''b''a'], 'key2' : ['one''two''one''two''one'],         'data1' : np.random.randn(5), 'data2' : np.random.randn(5)})

In [4]: df
Out[4]:
  key1 key2     data1     data2
0    a  one  1.742646 -0.307503
1    a  two  2.027999  0.013633
2    b  one  1.317202  0.177529
3    b  two  0.243344 -0.183811
4    a  one  0.976750  0.034316

下面的表格就总结了很多常用的聚合方法,包括计数count,求和sum,求平均mean,中位数median,标准差std,最小值min,最大值max,乘积prod


quantile

quantile可以计算Series或DataFrame列的样本分位数,下面就是我们根据key1列分组,然后查看每个组在data1列0.9分位的值:

In [5]: grouped = df.groupby('key1')

In [6]: grouped['data1'].quantile(0.9)
Out[6]:
key1
a    1.970928
b    1.209816
Name: data1, dtype: float64


使用自己的聚合函数

若要使用自己的聚合函数,我们只需将其传入aggregate或agg方法:

In [7]: def peak_to_peak(arr):
   ...:     return arr.max() - arr.min()
   
In [9]: grouped.agg(peak_to_peak)
Out[9]:
         data1     data2
key1
a     1.051249  0.341819
b     1.073858  0.361340

Note : 使用自定义的函数要比上面那些经过优化的函数慢得多,空间开销也更大。


describe方法

describe方法会返回DataFrame或Series的统计变量

In [10]: grouped.describe()
Out[10]:
     data1                                          ...     data2
     count      mean       std       min       25%  ...       min       25%       50%       75%       max
key1                                                ...
a      3.0  1.582465  0.543622  0.976750  1.359698  ... -0.307503 -0.146935  0.013633  0.023975  0.034316
b      2.0  0.780273  0.759332  0.243344  0.511809  ... -0.183811 -0.093476 -0.003141  0.087194  0.177529

[2 rows x 16 columns]

最近什么都不想做,就这样吧,bye-bye


-END-


往期回顾


Pandas对数据分组




Stay hungry, stay foolish



文章转载自Yuan的学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论