问题提出

今天在完成实验时,遇到了一些问题

我将一个series对象转换成字典以后,想要让它以索引排序输出

在搜索一番后,发现大部分的排序都是以值进行排序

value_counts的函数体结构如下

value_counts(values,sort=True, ascending=False, normalize=False,bins=None,dropna=True)

其中的sort是指以值进行排序

以下是我使用的数据集常规排序输出的结果

df1 =df['carat'].value_counts(sort=True)
print(df1)
#会得到以下结果
0.30    2604
0.31    2249
1.01    2242
0.70    1981
0.32    1840
        ... 
2.70       1
3.67       1
5.01       1
2.77       1
3.40       1

如果不进行排序的话是这样的,会以乱序输出

df1 =df['carat'].value_counts(sort=False)
print(df1)
#会得到以下结果
0.25     212
1.00    1558
0.50    1258
2.00     265
3.00       8
        ... 
2.74       3
1.18     123
0.57     430
0.29     130
3.40       1

对比一下,可以看出sort是以值进行排序的。

函数结构体中还有 'ascending= '这个参数

如果ascending=False,那么字典以值降序输出

如果ascending=True,那么字典以值升序输出

这两种并不能达到以索引排序输出的结果。

问题解决

在搜寻一番后,发现有sort_index()这个用法

df3 =df['carat'].value_counts(sort=False).sort_index()
print(df3)
#会得到以下结果
0.20     12
0.21      9
0.22      5
0.23    293
0.24    254
       ... 
4.00      1
4.01      2
4.13      1
4.50      1
5.01      1

这次就达到了我想要的结果,以索引排序输出。

tips:ascending=True或False也可以应用于sort_index()

总结

想要以索引进行排序输出的话,在value_counts()方法后加上sort_index()

想要以值进行排序输出的话,直接使用value_counts()方法,根据自身需要设置sort参数和asceding参数即可

参考文章:https://www.qedev.com/bigdata/198236.htmlicon-default.png?t=M3K6https://www.qedev.com/bigdata/198236.html

pandas计数函数 :value_counts( )和counts( )的使用 - 知乎在我们使用pandas进行数据分析时,时常需要对数据进行排序、计量,以获取数据的某些信息,在之前的文章中,我已经为大家介绍过如何用如何使用sort_value函数对数据进行排序,(忘记的同学可以在下面复习一下~)侦…https://zhuanlan.zhihu.com/p/113342292 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐