python之数据分析Pandas(7)

python之数据分析Pandas(7)

前言

昨天因为有点事情,所以没有来得及分享,今天我们继续学习,今天学习到的是Pandas的数据排序,包括Series的排序和DataFrame的排序。

开始

Series的排序

和往常一样,我们读取完数据之后,就开始了我们的数据分析,今天学习使用到的是天气的数据。
在这里插入图片描述
排序对于大家来说,应该一点都不陌生,今天我们对Series排序用到的就是sort_values()

Series.sort_values(ascending=True, inplace=False)
参数说明:
ascending:默认为True升序排序,为False降序排序
inplace:是否修改原始Series

df["aqi"].sort_values() 
# 输出一个Series
271     21
281     21
249     22
272     22
301     22
      ... 
317    266
71     287
91     287
72     293
86     387

我们对aqi这个列进行了排序,在这没有指定它的的排序类型,所以默认是升序排序,左边的数字代表索引号,右边则代表着aqi的数值。

df["aqi"].sort_values(ascending=False)
#	输出
86     387
72     293
91     287
71     287
317    266
      ... 
301     22
272     22
249     22
281     21
271     21

如果我们在这里指定一下它的排序类型,设置为降序排序,那么它输出的值便是逐渐减小的了。我们没有设置inplace,所以默认不改变原有的数据。
这里排序的都是一些数值,我们可不可以对字符串进行排序呢,答案是肯定的,sort_values()这个方法是依据字典排序的。下面我们就来看看吧。

df["tianqi"].sort_values()
225     中雨~小雨
230     中雨~小雨
197    中雨~雷阵雨
196    中雨~雷阵雨
112        多云
        ...  
191    雷阵雨~大雨
219     雷阵雨~335~多云
353348

我们对天气这一列进行排序,默认为升序排序,然后来看看输出的结果。发现它是按照第一个字的字典依次进行排序的。

DataFrame的排序

学完了Series的排序,我们接下来学一下DataFrame的排序。

DataFrame.sort_values(by, ascending=True, inplace=False)
参数说明:

by:字符串或者List<字符串>,单列排序或者多列排序
ascending:bool或者List,升序还是降序,如果是list对应by的多列 inplace:是否修改原始DataFrame

后面的两个参数和Series的一样,多了一个by参数,用来放字符串或者List。具体我们通过代码来分析。

df.sort_values(by="aqi")	#对aqi进行排序

在这里插入图片描述
df是一个DataFrame对象表格,我们通过sort_values()方法来进行排序,by=aqi,说明我们是以aqi这一列排序后的结果作为标准,然后进行表格整体的排序,最后输出一个排序后的表格。同样也也可以指定其排序的类型,这里就不多展示了。
除了对单行列进行排序,我们还可以同时对多列进行排序。

# 按空气质量等级、最高温度排序,默认升序
df.sort_values(by=["aqiLevel", "bWendu"])

在这里插入图片描述
同时进行排序就会存在 一个问题,如果两列的排序的时候产生冲突怎么办呢?在sort_values()中,会默认前面的参数先排序,如果两列的某两行比较后恰好相反,那么就会优先第一列的排序。相当于第一个参数(aqiLevel)为一级索引排序,而第二个参数(bWendu)为二级索引排序。可以结合第85和86行,就会比较易懂。
在多列排序中,不仅可以默认升序排序,指定降序排序,还可以分别指定升序排序和降序排序。

# 分别指定升序和降序
df.sort_values(by=["aqiLevel", "bWendu"], ascending=[True, False])

在这里插入图片描述
具体的原理和上面讲的一样。

结尾

今天的学习就到这了,希望能够共同学习、联系我,带我学习更多。多多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值