Pandas数据的排序与统计
索引排序
.sort_index()
方法在指定轴上根据索引进行排序,默认升序
格式:.sort_index(axis=0, ascending=True)
其中ascending为递增排序
import pandas as pd
import numpy as np
b = pd.DataFrame(np.arange(20).reshape(4,5), index=['a','d','c','b'])
0 1 2 3 4
a 0 1 2 3 4
d 5 6 7 8 9
c 10 11 12 13 14
b 15 16 17 18 19
b.sort_index()
0 1 2 3 4
a 0 1 2 3 4
b 15 16 17 18 19
c 10 11 12 13 14
d 5 6 7 8 9
b.sort_index(ascending=False)
0 1 2 3 4
d 5 6 7 8 9
c 10 11 12 13 14
b 15 16 17 18 19
a 0 1 2 3 4
.sort_values()
方法在指定轴上根据数值进行排序,默认升序
格式:Series.sort_values(axis, ascending=True)
或DataFrame.sort_values(by, axis=0, ascending=True)
by:axis轴上的某个索引或索引列表。NaN统一放到排序末尾。
import pandas as pd
import numpy as np
b = pd.DataFrame(np.arange(20).reshape(4,5), index=['c','a','d','b'])
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
a = b.sort_values(2,ascending=False)
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
a = a.sort_values('a', axis=1, ascending=False)
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() | 计算数据最大值、最小值所在位置的索引位置(自动索引) |
.inxmin() .idxmax() | 计算数据最大值、最小值所在位置的索引(自定义索引) |
import pandas as pd
a = pd.Series([9,8,7,6], index=['a','b','c','d'])
a 9
b 8
c 7
d 6
dtype: int64
a.describe()#为Series类型,即可使用Series的方法。DataFrame类型同使用,其返回为DataFrame类型
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
数据的累计统计分析
适用于Series和DataFrame类型
方法 | 说明 |
---|---|
.cumsum() | 依次给出前1、2、…、n个数的和 |
.sumprod() | 依次给出前1、2、…、n个数的积 |
.cummax() | 依次给出前1、2、…、n个数的最大值 |
.cummax() | 依次给出前1、2、…、n个数的最小值 |
import pandas as pd
import numpy as np
b = pd.DataFrame(np.arange(20).reshape(4,5), index=['c','a','d','b'])
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
b.cumsum()
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
b.cummin()
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
b.cummax()
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
b.cumprod()
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
适用于Series和DataFrame类型,滚动计算(窗口计算)
方法 | 说明 |
---|---|
.rolling(w).sum() | 依次计算相信w个元素的和 |
.rolling(w).mean() | 依次计算相信w个元素的算术平均值 |
.rolling(w).var() | 依次计算相信w个元素的方差 |
.rolling(w).std() | 依次计算相信w个元素的标准差 |
.rolling(w).min().max() | 依次计算相信w个元素的最小值和最大值 |
import pandas as pd
import numpy as np
b = pd.DataFrame(np.arange(20).reshape(4,5), index=['c','a','d','b'])
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
b.rolling(2).sum()
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
b.rolling(2).mean()
0 1 2 3 4
c NaN NaN NaN NaN NaN
a 2.5 3.5 4.5 5.5 6.5
d 7.5 8.5 9.5 10.5 11.5
b 12.5 13.5 14.5 15.5 16.5
b.rolling(3).var()
0 1 2 3 4
c NaN NaN NaN NaN NaN
a NaN NaN NaN NaN NaN
d 25.0 25.0 25.0 25.0 25.0
b 25.0 25.0 25.0 25.0 25.0
b.rolling(3).std()
0 1 2 3 4
c NaN NaN NaN NaN NaN
a NaN NaN NaN NaN NaN
d 5.0 5.0 5.0 5.0 5.0
b 5.0 5.0 5.0 5.0 5.0
b.rolling(3).min().max()
0 5.0
1 6.0
2 7.0
3 8.0
4 9.0
dtype: float64