一、Pandas库的数据排序
对索引的操作就是对数据的操作
1、.sort_index()方法在指定轴(默认纵向)上根据索引进行排序,默认升序
.sort_index(axis=0, ascending=True) #0是纵向,1是横向,True升序,False是降序。
In [1]:import pandas as pd
import numpy as np
b = pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b
Out[43]:
0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19
In [44]:b.sort_index() #设置行索引值为升序(默认),即abcd
Out[44]:
0 1 2 3 4
a 5 6 7 8 9
b 15 16 17 18 19
c 0 1 2 3 4
d 10 11 12 13 14
In [45]:b.sort_index(ascending=False) #设置行索引值为降序,即dcba
Out[45]:
0 1 2 3 4
d 10 11 12 13 14
c 0 1 2 3 4
b 15 16 17 18 19
a 5 6 7 8 9
:
In [46]:b.sort_index(axis=1,ascending=False) ##设置列索引值为降序,即43210
Out[46]:
4 3 2 1 0
c 4 3 2 1 0
a 9 8 7 6 5
d 14 13 12 11 10
b 19 18 17 16 15
2、.sort_values()方法在指定轴上根据数值进行排序,默认升序
Series.sort_values(axis=0, ascending=True)
DataFrame.sort_values(by, axis=0, ascending=True)
by : axis轴上的某个索引或索引列表
In [1]:import pandas as pd
import numpy as np
b = pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b
Out[43]:
0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19
In [48]:c = b.sort_values(2,ascending=False)#把‘2’索引的列降序排列,即17,12,7,2
c
Out[48]:
0 1 2 3 4
b 15 16 17 18 19
d 10 11 12 13 14
a 5 6 7 8 9
c 0 1 2 3 4
In [49]:c = c.sort_values('a',axis=1,ascending=False)##把‘a’索引的行降序排列,即9,8,7,6,5
c
Out[49]:
4 3 2 1 0
b 19 18 17 16 15
d 14 13 12 11 10
a 9 8 7 6 5
c 4 3 2 1 0
二、基本的统计分析函数
适用于Series和DataFrame类型
方法 | 说明 |
---|---|
.sum() | 计算数据的总和,按0轴计算,下同 |
.count() | 非NaN值的数量 |
.mean() .median() | 计算数据的算术平均值、算术中位数 |
.var() .std() | 计算数据的方差、标准差 |
.min() .max() | 计算数据的最小值、最大值 |
.describe() | 针对0轴(各列)的统计汇总 |
适用于Series类型
方法 | 说明 |
---|---|
.argmin() .argmax() | 计算数据最大值、最小值所在位置的索引位置(自动索引) |
.idxmin() .idxmax() | 计算数据最大值、最小值所在位置的索引(自定义索引) |
In [50]:import pandas as pd
a = pd.Series([9,8,7,6],index=['a','b','c','d'])
a
Out[50]:
a 9
b 8
c 7
d 6
dtype: int64
In [51]:a.describe()
Out[51]:
count 4.000000
mean 7.500000
std 1.290994
min 6.000000
25% 6.750000
50% 7.500000
75% 8.250000
max 9.000000
dtype: float64
In [52]:type(a.describe())
Out[52]:pandas.core.series.Series
In [53]:a.describe()['count']#获取a的数量
Out[53]:4.0
In [54]:a.describe()['max']#获取a的最大值
Out[54]:9.0
三、累计统计分析函数
1、适用于Series和DataFrame类型,累计计算
方法 | 说明 |
---|---|
.cumsum() | 依次给出前1、2、…、n个数的和 |
.cumprod() | 依次给出前1、2、…、n个数的积 |
.cummax() | 依次给出前1、2、…、n个数的最大值 |
.cummin() | 依次给出前1、2、…、n个数的最小值 |
In [55]:import pandas as pd
import numpy as np
b = pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b
out[55]:
0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19
In [56]:b.cumsum() #依次给出前1、2、…、n个数的和,比如第1列的第3行18=(1+6+11),比如第2列的第4行38=(2+7+12+17),即第n行的数等于(n-1)行的和
Out[56]:
0 1 2 3 4
c 0 1 2 3 4
a 5 7 9 11 13
d 15 18 21 24 27
b 30 34 38 42 46
In [57]:b.cumprod() #第n行的数等于(n-1)行的积
Out[57]:
0 1 2 3 4
c 0 1 2 3 4
a 0 6 14 24 36
d 0 66 168 312 504
b 0 1056 2856 5616 9576
In [58]:b.cummin() #第n行的数等于(n-1)行的最小数
Out[58]:
0 1 2 3 4
c 0 1 2 3 4
a 0 1 2 3 4
d 0 1 2 3 4
b 0 1 2 3 4
In [59]:b.cummax() #第n行的数等于(n-1)行的最大数
Out[59]:
0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19
2、适用于Series和DataFrame类型,滚动计算(窗口计算)
方法 | 说明 |
---|---|
.rolling(w).sum() | 依次计算相邻w个元素的和 |
.rolling(w).mean() | 依次计算相邻w个元素的算术平均值 |
.rolling(w).var() | 依次计算相邻w个元素的方差 |
.rolling(w).std() | 依次计算相邻w个元素的标准差 |
.rolling(w).min() .max() | 依次计算相邻w个元素的最小值和最大值 |
In [55]:import pandas as pd
import numpy as np
b = pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b
out[55]:
0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19
In [62]:b.rolling(2).sum() #依次计算列相邻2个元素的和,比如第0列的第3行15.0=(5+10),比如第2列的第4行29.0=(12+17)
Out[62]:
0 1 2 3 4
c NaN NaN NaN NaN NaN
a 5.0 7.0 9.0 11.0 13.0
d 15.0 17.0 19.0 21.0 23.0
b 25.0 27.0 29.0 31.0 33.0
In [63]:b.rolling(3).sum()#依次计算列相邻3个元素的和,比如第0列的第4行30.0=(5+10+15)
Out[63]:
0 1 2 3 4
c NaN NaN NaN NaN NaN
a NaN NaN NaN NaN NaN
d 15.0 18.0 21.0 24.0 27.0
b 30.0 33.0 36.0 39.0 42.0
四、数据的相关分析
1、相关分析
两个事物,表示为X和Y,如何判断它们之间的存在相关性?
X增大,Y增大,两个变量正相关
X增大,Y减小,两个变量负相关
X增大,Y无视,两个变量不相关
2、协方差
两个事物,表示为X和Y,如何判断它们之间的存在相关性?
协方差>0, X和Y正相关
协方差<0, X和Y负相关
协方差=0, X和Y独立无关
3、Pearson相关系数
r 的取值范围[-1,1]
两个事物,表示为X和Y,如何判断它们之间的存在相关性?
0.8‐1.0 极强相关
0.6‐0.8 强相关
0.4‐0.6 中等程度相关
0.2‐0.4 弱相关
0.0‐0.2 极弱相关或无相关
4、相关分析函数
适用于Series和DataFrame类型
方法 | 说明 |
---|---|
.cov() | 计算协方差矩阵 |
.corr() | 计算相关系数矩阵, Pearson、Spearman、Kendall等系数 |
五、小结
排序 | .sort_index() .sort_values() |
---|---|
基本统计函数 | .describe() |
累计统计函数 | .cum*() .rolling().*() |
相关性分析 | .corr() .cov() |