数据聚合与分组运算——数据聚合(2),有需要的朋友可以参考下。
1、quantile计算Series或DataFrame列的样本分位数:
>>> import numpy as np
>>> import pandas as pd
>>> 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)})
>>> df
data1 data2 key1 key2
0 0.228507 -1.820634 a one
1 -1.253050 0.285551 a two
2 1.412322 1.985010 b one
3 1.080160 -0.125354 b two
4 0.077132 -1.168355 a one
>>> grouped = df.groupby('key1')
>>> grouped
>>> grouped['data1']
>>> grouped['data1'].quantile(0.9)
key1
a 0.198232
b 1.379106
dtype: float64说明:
(1)虽然quantile并没有明确地实现于GroupBy,但它是一个Series方法,所以这里是能用的。实际上,GroupBy会高效地对Series进行切片,然后对各片调用piece.quantile(0.9),最后将这些结果组装成最终结果。
(2)如果传入的百分位上没有值,则quantile会进行线性插值。
(3)四分位数(Quartile),即统计学中,把所有数值由小到大排列并分成四等份,处于三个分割点位置的得分就是四分位数。
(4)线性插值经常用于补充表格中的间隔部分。假设一个表格列出了一个国家 1970年、1980年、1990年以及 2000年的人口,那么如果需要估计 1994年的人口的话,线性插值就是一种简便的方法。
2、有些方法(如describe)也是可以用在这里的,即时严格来讲,它们并非聚合运算:
>>> grouped.describe()
data1 data2
key1
a count 3.000000 3.000000
mean -0.315804 -0.901146
std 0.815200 1.078218
min -1.253050 -1.820634
25% -0.587959 -1.494495
50% 0.077132 -1.168355
75% 0.152819 -0.441402
max 0.228507 0.285551
b count 2.000000 2.000000
mean 1.246241 0.929828
std 0.234874 1.492253
min 1.080160 -0.125354
25% 1.163201 0.402237
50% 1.246241 0.929828
75% 1.329282 1.457419
max 1.412322 1.985010
经过优化的groupby的方法
函数名
说明
count
分组中非NA值的数量
sum
非NA值的和
mean
非NA值的平均数
median
非NA值的算术中位数
std、var
无偏(分母为n-1)标准差和方差
min、max
非NA值的最小值和最大值
prod
非NA值的积
first、last
第一个和最后一个非NA值
3、面向列的多函数应用
对Series或DataFrame列的聚合运算其实就是使用aggregate(使用自定义函数)或者调用mean、std之类的方法。然而,可能希望对不同的列使用不同的聚合函数,或一次应用多个函数,其实这也好办。根据sex和smoker对tips进行分组:
>>> import numpy as np
>>> import pandas as pd
>>> tips = pd.read_csv('tips.csv')
>>> # 添加“小费占总额百分比”的列
>>> tips['tip_pct'] = tips['tip']/tips['total_bill']
>>> tips[:6]
total_bill tip sex smoker day time size tip_pct
0 16.99 1.01 Female No Sun Dinner 2 0.059447
1 10.34 1.66 Male No Sun Dinner 3 0.160542
2 21.01 3.50 Male No Sun Dinner 3 0.166587
3 23.68 3.31 Male No Sun Dinner 2 0.139780
4 24.59 3.61 Female No Sun Dinner 4 0.146808
5 25.29 4.71 Male No Sun Dinner 4 0.186240
更多:python 数组元素数据聚合与分组运算——数据聚合(2)
https://www.002pc.comhttps://www.002pc.com/python/1406.html
你可能感兴趣的聚合,数据,分组,运算
No alive nodes found in your cluster
0踩
赏
0 赞