Series和DataFrame汇总和计算描述统计

选项 说明
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()    # periods默认为1
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

你可能感兴趣的:(Python3.5)