pandas对数据进行排序,python dataframe 统计
本文主要介绍Pandas实现的数据帧的简单操作、统计和排序。通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面跟边肖学习。
一.行动二。统计三。排序上一章我们讨论了数列的计算方法和熊猫的自动对齐功能。不仅是Series,DataFrame也支持运算,也是经常使用的函数之一。
由于DataFrame的数据结构包含许多行和列,所以DataFrame的计算和统计可以用行数据或列数据来完成。为了方便我们使用,熊猫为我们提供了常用的计算和统计方法:
方法运算方法求和最大值求和最大值求平均值最小值求方差var标准差std中位数众数分位数
目录
以文章中的例子为例,我们已经有N个学生的数学、语文和英语成绩。现在,我们要计算每个学生的总分,所以我们可以使用以下方法:
行的总和下面演示了两种方法:
方法一:先删除要求和的列数据(不包括姓名列),然后用sum函数求和。
方法2:逐个选择要求和的列,然后用运算符求和。
两种方法的最终结果都是在原来的DataFrame上增加一个新列,数据是每一行数据的总和。
Df [sum]=df [[中文,数学,英文]]。sum (1) #方法1
Df [sum]=df [中文] df [数学] df [英文] #方法2
输出:
命名中国英语数学和
0小明99 100 80 279
1李华102 79 92 273
2韩美奈111 130 104 345
在sum方法中,我们传入了参数1,这意味着我们使用的轴是一行(对行数据求和)。如果要计算每列的和,只需要传入0即可(sum函数默认参数为0,不用传):
df[[语文,数学,英语]]。总和(0)
输出:
中文312
数学276
英语
dtype: int64
既然有了总分,那么数学老师或者语文老师就会关心这个班学生的平均数据分数是多少。同样,我们可以非常快速地计算它:
Df[数学]。mean()#方法一:直接使用熊猫提供的均值平均法。
Df[数学]。sum()/df.shape[0]#方法二:用求和法计算总和,除以总人数(行数)
输出:
92.0
本文采用数据帧的成形方法。此方法用于显示数据帧的行数和列数。行数为0,列数为1。请注意,输出列值不包含索引列。
以上仅计算数学平均分,有兴趣的朋友可以自行计算英语和语文平均分~
一.运算
这时,数学老师有了新的需求。他要查看本班学生数学成绩的最高分、最低分、中位数的统计数据,所以他一点也不慌张。熊猫可以帮我们完成这一切:
df[math]的最小值。min() #数学列
产量:80
df[math]的最大值。max() #数学列
产量:104
DF [数学]的30%、40%、50%。分位数([0.3,0.4,0.5]) #数学列
分位数
Output:
0.3 87.2
0.4 89.6
0.5 92.0
Name: math, dtype: float64
df[math].std() # math列的标准差
Output:12
df[math].var() # math列的方差
Output:144
df[math].mean() # math列的平均数
Output:92
df[math].median() # math列的中位数
Output:92
df[math].mode() # math列的众数,返回一个Series对象(有可能出现并列的情况,例子中众数为1,所以都返回)
Output:
0 80
1 92
2 104
dtype: int64
我们也可以使用DataFrame的describe方法对DataFrame查看基本的统计情况:
df.describe()
三.排序
一般来讲我们的成绩表都是按照总分从高到低进行排序:
df = df.sort_values(by=sum, ascending=False)
可以看到我们使用了sort_values方法对DataFrame进行排序,同时by参数传入‘sum’指定按照‘sum’字段进行排序,ascending用来设置是降序(False)还是升序(True,默认值)排序。使用sort_values排序后默认会返回一个新的DataFrame对象,也就是说并不会影响原有的DataFrame对象,所以例子中我们才会把排序后的对象赋值给原有的DataFrame对象,如果不想排序后创建新的对象也是可以的,只需要传入inplace=True即可(在原有的DataFrame基础上修改):
df.sort_values(by=sum, ascending=False, inplace=True)
细心的小伙伴可能会发现当我们进行排序后,如果DataFrame中的行数据有调整的话,其行的索引值是不会更改的,上述例子中因为我们用了默认的递增数列索引,所以排序后看起来并不是很友好,不过不用担心,我们还是可以重置索引值的:
df = df.sort_values(by=sum, ascending=False).reset_index()
使用reset_index重设索引后我们的DataFrame对象的索引列确实被重置成了递增的序列,同时也多了列名为index的一列数据。当然我们可以传入drop=True将原有的索引列不插入到新的DataFrame中:
df = df.sort_values(by=sum, ascending=False).reset_index(drop=True)
为了更直观的展示排名情况,我们可以索引值+1这样就展示出了学生的排名情况:
df.index += 1
到此这篇关于Pandas实现DataFrame的简单运算、统计与排序的文章就介绍到这了,更多相关Pandas DataFrame运算统计与排序内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。