选项 | 说明 |
---|
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