Pandas 九:数据排序

Series的排序:

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

  • ascending:默认为True升序排序,为False降序排序
  • inplace:是否修改原始Series

DataFrame的排序:

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

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

2

import pandas as pd
No output

0、读取数据

3

fpath = "./datas/beijing_tianqi/beijing_tianqi_2018.csv"
df = pd.read_csv(fpath)
# 替换掉温度的后缀℃
df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32')
df.loc[:, "yWendu"] = df["yWendu"].str.replace("℃", "").astype('int32')
No output

4

df.head()

4

ymd	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
0	2018-01-01	3	-6~多云	东北风	1-2592
1	2018-01-02	2	-5~多云	东北风	1-2491
2	2018-01-03	2	-5	多云	北风	1-2281
3	2018-01-04	0	-8	阴	东北风	1-2281
4	2018-01-05	3	-6	多云~晴	西北风	1-2501

1、Series的排序

5

df["aqi"].sort_values()

5

271     21
281     21
249     22
272     22
301     22
      ... 
317    266
71     287
91     287
72     293
86     387
Name: aqi, Length: 365, dtype: int64

6

df["aqi"].sort_values(ascending=False)

6

86     387
72     293
91     287
71     287
317    266
      ... 
301     22
272     22
249     22
281     21
271     21
Name: aqi, Length: 365, dtype: int64

8

df["tianqi"].sort_values()

8

225     中雨~小雨
230     中雨~小雨
197    中雨~雷阵雨
196    中雨~雷阵雨
112        多云
        ...  
191    雷阵雨~大雨
219     雷阵雨~335~多云
353348         霾
Name: tianqi, Length: 365, dtype: object

2、DataFrame的排序

2.1 单列排序

9

df.sort_values(by="aqi")

9

ymd	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
271	2018-09-29	22	11	晴	北风	3-4211
281	2018-10-09	15	4	多云~晴	西北风	4-5211
249	2018-09-07	27	16	晴	西北风	3-4221
272	2018-09-30	19	13	多云	西北风	4-5221
301	2018-10-29	15	3	晴	北风	3-4221
...	...	...	...	...	...	...	...	...	...
317	2018-11-14	13	5	多云	南风	1-2266	重度污染	5
71	2018-03-13	17	5~多云	南风	1-2287	重度污染	5
91	2018-04-02	26	11	多云	北风	1-2287	重度污染	5
72	2018-03-14	15	6	多云~阴	东北风	1-2293	重度污染	5
86	2018-03-28	25	9	多云~晴	东风	1-2387	严重污染	6
365 rows × 9 columns

10

df.sort_values(by="aqi", ascending=False)

10

ymd	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
86	2018-03-28	25	9	多云~晴	东风	1-2387	严重污染	6
72	2018-03-14	15	6	多云~阴	东北风	1-2293	重度污染	5
71	2018-03-13	17	5~多云	南风	1-2287	重度污染	5
91	2018-04-02	26	11	多云	北风	1-2287	重度污染	5
317	2018-11-14	13	5	多云	南风	1-2266	重度污染	5
...	...	...	...	...	...	...	...	...	...
249	2018-09-07	27	16	晴	西北风	3-4221
301	2018-10-29	15	3	晴	北风	3-4221
272	2018-09-30	19	13	多云	西北风	4-5221
271	2018-09-29	22	11	晴	北风	3-4211
281	2018-10-09	15	4	多云~晴	西北风	4-5211
365 rows × 9 columns
2.2 多列排序

11

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

11

ymd	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
360	2018-12-27	-5	-12	多云~晴	西北风	3481
22	2018-01-23	-4	-12	晴	西北风	3-4311
23	2018-01-24	-4	-11	晴	西南风	1-2341
340	2018-12-07	-4	-10	晴	西北风	3331
21	2018-01-22	-3	-10	小雪~多云	东风	1-2471
...	...	...	...	...	...	...	...	...	...
71	2018-03-13	17	5~多云	南风	1-2287	重度污染	5
90	2018-04-01	25	11~多云	南风	1-2218	重度污染	5
91	2018-04-02	26	11	多云	北风	1-2287	重度污染	5
85	2018-03-27	27	11	晴	南风	1-2243	重度污染	5
86	2018-03-28	25	9	多云~晴	东风	1-2387	严重污染	6
365 rows × 9 columns

12

# 两个字段都是降序
df.sort_values(by=["aqiLevel", "bWendu"], ascending=False)

12

ymd	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
86	2018-03-28	25	9	多云~晴	东风	1-2387	严重污染	6
85	2018-03-27	27	11	晴	南风	1-2243	重度污染	5
91	2018-04-02	26	11	多云	北风	1-2287	重度污染	5
90	2018-04-01	25	11~多云	南风	1-2218	重度污染	5
71	2018-03-13	17	5~多云	南风	1-2287	重度污染	5
...	...	...	...	...	...	...	...	...	...
362	2018-12-29	-3	-12	晴	西北风	2291
22	2018-01-23	-4	-12	晴	西北风	3-4311
23	2018-01-24	-4	-11	晴	西南风	1-2341
340	2018-12-07	-4	-10	晴	西北风	3331
360	2018-12-27	-5	-12	多云~晴	西北风	3481
365 rows × 9 columns

13

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

13

ymd	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
178	2018-06-28	35	24	多云~晴	北风	1-2331
149	2018-05-30	33	18	晴	西风	1-2461
206	2018-07-26	33	25	多云~雷阵雨	东北风	1-2401
158	2018-06-08	32	19	多云~雷阵雨	西南风	1-2431
205	2018-07-25	32	25	多云	北风	1-2281
...	...	...	...	...	...	...	...	...	...
317	2018-11-14	13	5	多云	南风	1-2266	重度污染	5
329	2018-11-26	10	0	多云	东南风	1245	重度污染	5
335	2018-12-02	9	2~多云	东北风	1234	重度污染	5
57	2018-02-27	7	0	阴	东风	1-2220	重度污染	5
86	2018-03-28	25	9	多云~晴	东风	1-2387	严重污染	6
365 rows × 9 columns
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值