龙空技术网

Python数据分析|pandas 实用方法(5)排序排名及常用统计方法

小AI咨询 526

前言:

当前同学们对“python如何统计数据个数并排序”大概比较关切,咱们都想要分析一些“python如何统计数据个数并排序”的相关资讯。那么小编也在网摘上搜集了一些关于“python如何统计数据个数并排序””的相关内容,希望小伙伴们能喜欢,各位老铁们一起来学习一下吧!

排序

Series 的 .sort_index(ascending=True) 方法可以对 index 进行排序操作,ascending 参数用于控制升序或降序,默认为升序。

若要按值的大小对 Series 进行排序,应当使用 .sort_values(na_last=True, ascending=True, kind='mergesort') 方法,任何缺失值默认都会被放到 Series 的末尾。

在 DataFrame 上同样, .sort_index(ascending=True) 方法可以对 index 进行排序操作。

若要按值的大小对 DataFrame 进行排序,使用 .sort_values (axis=0, by=None, ascending=True) 方法,多了一个轴向的选择参数与一个 by 参数,by 参数的作用是针对某一(些)列进行排序(不能对行使用 by 参数)。

data = {'state':['Ohino','Ohino','Ohino','Nevada','Nevada'], 'year':[2000,2001,2002,2001,2002], 'pop':[1.5,1.7,3.6,2.4,2.9]}

df = DataFrame(data)

df

Out[60]:

pop state year

0 1.5 Ohino 2000

1 1.7 Ohino 2001

2 3.6 Ohino 2002

3 2.4 Nevada 2001

4 2.9 Nevada 2002

df.sort_index(ascending = False)

Out[61]:

pop state year

4 2.9 Nevada 2002

3 2.4 Nevada 2001

2 3.6 Ohino 2002

1 1.7 Ohino 2001

0 1.5 Ohino 2000

df.sort_values(by = ['year','pop'])

Out[62]:

pop state year

0 1.5 Ohino 2000

1 1.7 Ohino 2001

3 2.4 Nevada 2001

4 2.9 Nevada 2002

2 3.6 Ohino 2002

排名

Series.rank(method='average', ascending=True) 的作用与排序的不同之处在于,它会把对象的 values 替换成名次(从 1 到 n)。这时唯一的问题在于如何处理平级项(值相同的项),方法里的 method 参数就是起这个作用的,他有四个值可选:average, min, max, first(取平均值/最大值/第一个出现的等)。

sr = Series(np.random.randn(10))

sr

Out[69]:

0 -1.168688

1 -2.024443

2 1.205494

3 -1.797417

4 -2.107228

5 -0.293539

6 -0.903619

7 -0.975033

8 0.650211

9 0.879406

dtype: float64

sr.rank()

Out[70]:

0 4.0

1 2.0

2 10.0

3 3.0

4 1.0

5 7.0

6 6.0

7 5.0

8 8.0

9 9.0

dtype: float64

DataFrame 的 .rank(axis=0, method='average', ascending=True) 方法多了个 axis 参数,可选择按行或列分别进行排名,暂时好像没有针对全部元素的排名方法。

df.rank(method = 'average',ascending = False)

Out[71]:

pop state year

0 5.0 2.0 5.0

1 4.0 2.0 3.5

2 1.0 2.0 1.5

3 3.0 4.5 3.5

4 2.0 4.5 1.5

统计方法

pandas 对象有一些统计方法。它们大部分都属于约简和汇总统计,用于从 Series 中提取单个值,或从 DataFrame 的行或列中提取一个 Series。

比如 DataFrame.mean(axis=0,skipna=True) 方法,针对每一列求出所有行的均值,当数据集中存在 NA 值时,这些值会被简单跳过,除非整个切片(行或列)全是 NA,如果不想这样,则可以通过 skipna=False 来禁用此功能。

df.mean()

Out[77]:

pop 2.42

year 2001.20

dtype: float64

df.mean(axis = 1)

Out[78]:

0 1000.75

1 1001.35

2 1002.80

3 1001.70

4 1002.45

dtype: float64

其他常用的统计方法还有很多,最大值、最小值等,用到的时候大家可以再去查阅相关资料,用法类似。

协方差与相关系数

协方差与相关系数也是比较重要的统计方法,这里拿出来单独讲一下。

Series 有两个方法可以计算协方差与相关系数,方法的主要参数都是另一个 Series。DataFrame 的这两个方法会对**列**进行两两运算,并返回一个 len(columns) 大小的方阵:

.corr(other, method='pearson', min_periods=1) // 相关系数,默认皮尔逊.cov(other, min_periods=None) // 协方差

min_periods 参数为样本量的下限,低于此值的不进行运算。

sr1 = Series(np.random.randn(10))

sr2 = Series(np.random.randn(10))

sr1.corr(sr2)

Out[93]: -0.10531476730246513

data = np.random.randn(18).reshape(6,3)

df = DataFrame(data,columns = ['price','sales','incentive'])

df.cov()

Out[95]:

price sales incentive

price 0.674253 -0.130193 -0.544805

sales -0.130193 0.394993 0.059949

incentive -0.544805 0.059949 1.816049

标签: #python如何统计数据个数并排序