Pandas内置的聚合方法

本文记录Pandas内置的聚合方法的使用方式,其中,聚合是指获取多个值并返回单个值的过程。我们以三美股份sh.603379在2021年9月6日至2021年9月17日10个交易日的因子为例,将这些数据保存在df中,打印该df,内容显示如下:

         date   open   high    low  ...  pcfNcfTTM  isST     zt     ss
0  2021-09-06  26.08  27.56  25.58  ... -59.964931     0  False  False
1  2021-09-07  28.12  30.26  27.01  ... -65.959245     0   True   True
2  2021-09-08  31.35  31.42  29.26  ... -65.719472     0  False  False
3  2021-09-09  30.10  30.50  28.85  ... -66.482385     0  False  False
4  2021-09-10  30.55  31.99  28.20  ... -67.572260     0  False  False
5  2021-09-13  31.58  33.38  30.49  ... -70.841885     0  False  False
6  2021-09-14  32.52  35.00  31.44  ... -71.822773     0  False  False
7  2021-09-15  33.02  36.25  32.10  ... -79.015949     0   True   True
8  2021-09-16  37.90  38.00  35.30  ... -77.381136     0  False  False
9  2021-09-17  35.51  39.05  35.51  ... -85.119250     0   True   True

[10 rows x 19 columns]

count

功能:统计列或行的元素的个数,参数axis=0(默认值)表示按列统计,axis=1表示按行统计。

示例1:

print(df.count(axis=0))
date           10
open           10
high           10
low            10
close          10
preclose       10
volume         10
amount         10
adjustflag     10
turn           10
tradestatus    10
pctChg         10
peTTM          10
pbMRQ          10
psTTM          10
pcfNcfTTM      10
isST           10
zt             10
ss             10
dtype: int64

当按列统计时,可以看到每一列都有10个元素。

示例2:

print(df.count(axis=1))
0    19
1    19
2    19
3    19
4    19
5    19
6    19
7    19
8    19
9    19
dtype: int64

当按行统计时,可以看到每一行都有19个元素。

示例3:

需要注意的是,count统计的是非空值的个数,如果我们将某个元素置为空值,统计结果也会发生变化。

df.loc[0, 'ss'] = np.nan
print(df.count(axis=0))
date           10
open           10
high           10
low            10
close          10
preclose       10
volume         10
amount         10
adjustflag     10
turn           10
tradestatus    10
pctChg         10
peTTM          10
pbMRQ          10
psTTM          10
pcfNcfTTM      10
isST           10
zt             10
ss              9
dtype: int64

我们把第一行最后一列的值置为空值,可以看到统计结果中,最后一列的统计值减少了1。

mean

功能:求行或列的平均值,参数axis=0(默认值)表示按列统计,axis=1表示按行统计。

示例1:

print(df[['open', 'high', 'low', 'close']].mean())
open     31.673
high     33.341
low      30.374
close    32.567
dtype: float64

取open、high、low、close四列组成的DataFrame,求取各列的平均值。

示例2:

print(df[['open', 'high', 'low', 'close']].mean(axis=1))
0    26.6825
1    28.9125
2    30.5450
3    29.9875
4    30.4350
5    31.9875
6    32.9775
7    34.4050
8    36.6750
9    37.2800
dtype: float64

取open、high、low、close四列组成的DataFrame,求取各行的平均值。

std

功能:求行或列的标准差,参数axis=0(默认值)表示按列统计,axis=1表示按行统计。

示例:

print(df[['open', 'high', 'low', 'close']].std())
open     3.395811
high     3.682003
low      3.289067
close    3.461098
dtype: float64

quantile

功能:取行或列的分位数,参数axis=0(默认值)表示按列统计,axis=1表示按行统计。

示例:

print(df[['open', 'high', 'low', 'close']].quantile(q=0.25))
print(df[['open', 'high', 'low', 'close']].quantile(q=0.50))
print(df[['open', 'high', 'low', 'close']].quantile(q=0.75))
open     30.2125
high     30.7300
low      28.3625
close    30.3200
Name: 0.25, dtype: float64
open     31.465
high     32.685
low      29.875
close    31.750
Name: 0.5, dtype: float64
open     32.8950
high     35.9375
low      31.9350
close    34.8625
Name: 0.75, dtype: float64

取open、high、low、close四列组成的DataFrame,求取各列的较小四分位数、中位数、较大四分位数。

max

功能:按行或列取最大值,参数axis=0(默认值)表示按列统计,axis=1表示按行统计。

示例:

print(df[['open', 'high', 'low', 'close']].max(axis=0))
open     37.90
high     39.05
low      35.51
close    39.05
dtype: float64

min

功能:按行或列取最小值,参数axis=0(默认值)表示按列统计,axis=1表示按行统计。

示例:

print(df[['open', 'high', 'low', 'close']].min(axis=0))
open     26.08
high     27.56
low      25.58
close    27.51
dtype: float64

idxmax

功能:按行或者列取最大值第一次出现时的索引,参数axis=0(默认值)表示按列统计,axis=1表示按行统计,skipna表示是否跳过空值。

示例1:

print(df[['open', 'high', 'low', 'close']].idxmax(axis=0, skipna=True))
open     8
high     9
low      9
close    9
dtype: int64

按列查找最大值的索引,返回的是行index,各列的最大值分别出现在8、9、9、9行。

示例2:

print(df[['open', 'high', 'low', 'close']].idxmax(axis=1, skipna=True))
0    high
1    high
2    high
3    high
4    high
5    high
6    high
7    high
8    high
9    high
dtype: object

按行查找最大值的索引,返回的是列名,很明显各列的最大值均出现在high列。

idxmin

功能:按行或者列取最小值第一次出现时的索引,参数axis=0(默认值)表示按列统计,axis=1表示按行统计,skipna表示是否跳过空值。

示例:

print(df[['open', 'high', 'low', 'close']].idxmin(axis=1, skipna=True))
0     low
1     low
2     low
3     low
4     low
5     low
6     low
7     low
8     low
9    open
dtype: object

使用方法与idxmax基本相同,示例中,按行查找最小值的索引,最后一行返回的索引open,而非low,这是由于在这一行,open值和low值相同,且均为最小值,而open先出现,所以返回第一次出现的最小值的索引open。

发表评论

京公网安备 11010802036642号

京ICP备2021028699号