阿迪:Pandas库学习笔记1-Pandas库入门zhuanlan.zhihu.com
数据的排序.sort_index()方法在指定轴上根据索引进行排序,默认升序、
.sort_index(axis=0,ascending=True)
In [69]: b
Out[69]:
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 [70]: b.sort_index()
Out[70]:
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 [71]: b.sort_index(ascending=False)
Out[71]:
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 [72]: c=b.sort_index(axis=1,ascending=False)
In [73]: c
Out[73]:
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
In [74]: c.sort_index()
Out[74]:
4 3 2 1 0
a 9 8 7 6 5
b 19 18 17 16 15
c 4 3 2 1 0
d 14 13 12 11 10.sort_values()方法在指定轴上根据数值进行排序,默认升序
Series.sort_values(axis=0,ascending=True)
DataFrame.sort_values(by,axis=0,ascending=True)
by:axis轴上的某个索引或索引列表
In [75]: b
Out[75]:
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 [76]: c=b.sort_values(2,ascending=False)
In [77]: c
Out[77]:
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 [78]: c=c.sort_values('a',axis=1,ascending=False)
In [79]: c
Out[79]:
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
注:NaN统一放到排序末尾
数据的基本统计分析
适用于Series和DataFrame类型.describe() 针对0轴(各列)的统计汇总
.sum() 计算数据的总和,按0轴计算,下同
.count() 非NaN值的数量
.mean() .median() 计算数据的算术平均值、算术中位数
.var() .std() 计算数据的方差、标准差
.min() .max() 计算数据的最小值、最大值
适用于Series类型.argmin() .argmax() 计算数据最大值、最小值所在位置的索引位置(自动索引)
.idxmin() .idxmax() 计算数据最大值、最小值所在位置的索引(自定义索引)
对于Series对象
In [81]: a=pd.Series([9,8,7,6],index=['a','b','c','d'])
In [82]: a
Out[82]:
a 9
b 8
c 7
d 6
dtype: int64
In [83]: a.describe()
Out[83]:
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 [84]: type(a.describe())
Out[84]: pandas.core.series.Series
In [85]: a.describe()['count']
Out[85]: 4.0
In [86]: a.describe()['max']
Out[86]: 9.0
对于DataFrame对象
In [87]: b=pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
In [88]: b.describe()
Out[88]:
0 1 2 3 4
count 4.000000 4.000000 4.000000 4.000000 4.000000
mean 7.500000 8.500000 9.500000 10.500000 11.500000
std 6.454972 6.454972 6.454972 6.454972 6.454972
min 0.000000 1.000000 2.000000 3.000000 4.000000
25% 3.750000 4.750000 5.750000 6.750000 7.750000
50% 7.500000 8.500000 9.500000 10.500000 11.500000
75% 11.250000 12.250000 13.250000 14.250000 15.250000
max 15.000000 16.000000 17.000000 18.000000 19.000000
In [89]: type(b.describe())
Out[89]: pandas.core.frame.DataFrame
In [90]: b.describe().loc['max']
Out[90]:
0 15.0
1 16.0
2 17.0
3 18.0
4 19.0
Name: max, dtype: float64
In [91]: b.describe()[2]
Out[91]:
count 4.000000
mean 9.500000
std 6.454972
min 2.000000
25% 5.750000
50% 9.500000
75% 13.250000
max 17.000000
Name: 2, dtype: float64
数据的累计统计分析
适用于Series和DataFrame类型cumsum() 依次给出前1、2、...、n个数的和
cumprod() 依次给出前1、2、...、n个数的积
cummax() 依次给出前1、2、...、n个数的最大值
cummin() 依次给出前1、2、...、n个数的最小值
In [93]: b
Out[93]:
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 [94]: b.cumsum()
Out[94]:
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 [95]: b.cumprod()
Out[95]:
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 [96]: b.cummin()
Out[96]:
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 [97]: b.cummax()
Out[97]:
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
滚动计算(窗口计算)rolling(w).sum() 依次计算相邻w个元素的和
rolling(w).mean() 依次计算相邻w个元素的算术平均值
rolling(w).var() 依次计算相邻w个元素的方差
rolling(w).std() 依次计算相邻w个元素的标准差
rolling(w).min() .max() 依次计算相邻w个元素的最小值和最大值
In [98]: b
Out[98]:
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 [99]: b.rolling(2).sum()
Out[99]:
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 [100]: b.rolling(3).sum()
Out[100]:
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
数据的相关分析
相关性x增大,y增大,两个变量正相关
x增大,y减小,两个变量负相关
x增大,y无明显变化,两个变量不相关
协方差:
协方差>0,x和y正相关
协方差<0,x和y负相关
协方差=0,x和y独立无关
Pearson相关系数:
0.8-1.0 极强相关
0.6-0.8 强相关
0.4-0.6 中等程度相关
0.2-0.4 弱相关
0.0-0.2 极弱相关或无相关.cov() 计算协方差矩阵
.corr() 计算相关系数矩阵,Pearson、Spearman、Kendall等系数
实例:房价增幅与m增幅的相关性
In [101]: hprice=pd.Series([3.04,22.93,12.75,22.6,12.33],index=['2008','2009','2010','2011','2012'])
In [102]: m=pd.Series([8.18,18.38,9.13,7.82,6.69],index=['2008','2009','2010','2011','2012'])
In [103]: hprice.corr(m)
Out[103]: 0.5239439145220387