选项 |
说明 |
axis |
约简的轴. DataFrame 的行用0,列用1 |
skipna |
默认值为true,排除缺失值 |
level |
如果轴是层次化索引的(MultiIndex),则根据level分组约简 |
方法 |
说明 |
count |
非NA值的数量 |
describe |
针对Series或各DataFrame列计算汇总统计 |
min,max |
计算最小值和最大值 |
argmin,argmax |
计算能获取到最小值和最大值的索引位置(整数) |
idxmin,idxmax |
计算能够获取到最小值和最大值的索引值 |
quantile |
计算样本的分位数(0到1) |
sum |
值的总和 |
mean |
值的平均数 |
median |
值的算术中位数(50%分位数) |
mad |
根据平均值计算平均绝对离差 |
var |
样本值的方差 |
std |
样本值的标准差 |
skew |
样本值的偏度(三阶矩) |
kurt |
样本值的峰度(四阶矩) |
cumsum |
样本值的累计和 |
cummin,cummax |
样本值的累计最大值和累计最小值 |
cumprod |
样本值的累计积 |
diff |
计算一阶差分(对时间序列很有用) |
pct_change |
计算百分数变化 |
from pandas import Series,DataFrame
import numpy as np
df = DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],
index=['a','b','c','d'],columns=['one','two'])
df
|
one |
two |
a |
1.40 |
NaN |
b |
7.10 |
-4.5 |
c |
NaN |
NaN |
d |
0.75 |
-1.3 |
sum()
df.sum()
one 9.25
two -5.80
dtype: float64
df.sum(axis=1)
a 1.40
b 2.60
c 0.00
d -0.55
dtype: float64
mean()
df.mean(axis=1,skipna=False)
a NaN
b 1.300
c NaN
d -0.275
dtype: float64
.idxmax() 返回每列最大值所在的行索引
df.idxmax()
one b
two d
dtype: object
.cumsum() 每列的值做累计
df.cumsum()
|
one |
two |
a |
1.40 |
NaN |
b |
8.50 |
-4.5 |
c |
NaN |
NaN |
d |
9.25 |
-5.8 |
.describe() 针对每列 描述其汇总统计
df.describe()
|
one |
two |
count |
3.000000 |
2.000000 |
mean |
3.083333 |
-2.900000 |
std |
3.493685 |
2.262742 |
min |
0.750000 |
-4.500000 |
25% |
1.075000 |
-3.700000 |
50% |
1.400000 |
-2.900000 |
75% |
4.250000 |
-2.100000 |
max |
7.100000 |
-1.300000 |
obj = Series(['a','a','b','c']*4)
obj
0 a
1 a
2 b
3 c
4 a
5 a
6 b
7 c
8 a
9 a
10 b
11 c
12 a
13 a
14 b
15 c
dtype: object
针对非数值型数据
obj.describe()
count 16
unique 3
top a
freq 8
dtype: object
相关系数与协方差
.pct_change() 默认以第一行为基准,没列下一个数相较上一个数百分比变化
s = Series([90, 91, 85])
s
0 90
1 91
2 85
dtype: int64
s.pct_change()
0 NaN
1 0.011111 # 1/91
2 -0.065934 # 6/91
dtype: float64
periods 参数
s.pct_change(periods=2)
0 NaN
1 NaN
2 -0.055556 #5/90
dtype: float64
s = Series([90, 91, None, 85])
s
0 90.0
1 91.0
2 NaN
3 85.0
dtype: float64
fill_method 参数
s.pct_change()
0 NaN
1 0.011111
2 0.000000
3 -0.065934
dtype: float64
s.pct_change(fill_method='ffill')
0 NaN
1 0.011111
2 0.000000
3 -0.065934
dtype: float64
df = DataFrame({
'FR': [4.0405, 4.0963, 4.3149],
'GR': [1.7246, 1.7482, 1.8519],
'IT': [804.74, 810.01, 860.13]},
index=['1980-01-01', '1980-02-01', '1980-03-01'])
df
|
FR |
GR |
IT |
1980-01-01 |
4.0405 |
1.7246 |
804.74 |
1980-02-01 |
4.0963 |
1.7482 |
810.01 |
1980-03-01 |
4.3149 |
1.8519 |
860.13 |
df.pct_change()
|
FR |
GR |
IT |
1980-01-01 |
NaN |
NaN |
NaN |
1980-02-01 |
0.013810 |
0.013684 |
0.006549 |
1980-03-01 |
0.053365 |
0.059318 |
0.061876 |
df.pct_change(axis=1)
|
FR |
GR |
IT |
1980-01-01 |
NaN |
-0.573172 |
465.624145 |
1980-02-01 |
NaN |
-0.573225 |
462.339435 |
1980-03-01 |
NaN |
-0.570813 |
463.458124 |
.corr() 用于计算两个Series中重叠的,非NA的、按索引对齐的值的相关系数
df = DataFrame([(.2, .3), (.0, .6), (.6, .0), (.2, .1)],
columns=['dogs', 'cats'])
df
|
dogs |
cats |
0 |
0.2 |
0.3 |
1 |
0.0 |
0.6 |
2 |
0.6 |
0.0 |
3 |
0.2 |
0.1 |
df.dogs.corr(df.cats)
-0.85106449634699
df.dogs.cov(df.cats)
-0.05666666666666666
df.corr()
|
dogs |
cats |
dogs |
1.000000 |
-0.851064 |
cats |
-0.851064 |
1.000000 |
df.cov()
|
dogs |
cats |
dogs |
0.063333 |
-0.056667 |
cats |
-0.056667 |
0.070000 |
.corrwith()
计算其列或行跟另一个Series或DataFrame之间的相关系数。
传入一个Series将会返回一个相关系数的Series
传入DataFrame则会计算按列名配对的相关系数
df.corrwith(df.dogs)
dogs 1.000000
cats -0.851064
dtype: float64
df.corrwith(df)
dogs 1.0
cats 1.0
dtype: float64