一、pandas的两种排序方法:
1、Series的排序:Series.sort_values(ascending=True, inplace=False)
参数说明:
* ascending:默认为True升序排序,为False降序排序
* inplace:是否修改原始Series
2、DataFrame的排序:DataFrame.sort_values(by, ascending=True, inplace=False)
参数说明:
by:字符串或者List<字符串>,单列排序或者多列排序
ascending:bool或者List,升序还是降序,如果是list对应by的多列
inplace:是否修改原始DataFrame
二、读取数据;读取的数据可以用来进行两种排序
import pandas as pd
fpath = "./datas/beijing_tianqi_2018.csv"
df = pd.read_csv(fpath)
# 替换掉温度的后缀℃
df["bWendu"] = df["bWendu"].str.replace("℃", "").astype('int64')
df["yWendu"] = df["yWendu"].str.replace("℃", "").astype('int64')
df.head()
ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
0 2018-01-01 3 -6 晴~多云 东北风 1-2级 59 良 2
1 2018-01-02 2 -5 阴~多云 东北风 1-2级 49 优 1
2 2018-01-03 2 -5 多云 北风 1-2级 28 优 1
3 2018-01-04 0 -8 阴 东北风 1-2级 28 优 1
4 2018-01-05 3 -6 多云~晴 西北风 1-2级 50 优 1
三、Series的排序
df["aqi"].sort_values()
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
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
Name: aqi, Length: 365, dtype: int64
df["tianqi"].sort_values()
225 中雨~小雨
230 中雨~小雨
197 中雨~雷阵雨
196 中雨~雷阵雨
112 多云
...
191 雷阵雨~大雨
219 雷阵雨~阴
335 雾~多云
353 霾
348 霾
Name: tianqi, Length: 365, dtype: object
四、DataFrame的排序
1、单列排序
df.sort_values(by="aqi")
ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
271 2018-09-29 22 11 晴 北风 3-4级 21 优 1
281 2018-10-09 15 4 多云~晴 西北风 4-5级 21 优 1
249 2018-09-07 27 16 晴 西北风 3-4级 22 优 1
272 2018-09-30 19 13 多云 西北风 4-5级 22 优 1
301 2018-10-29 15 3 晴 北风 3-4级 22 优 1
... ... ... ... ... ... ... ... ... ...
317 2018-11-14 13 5 多云 南风 1-2级 266 重度污染 5
71 2018-03-13 17 5 晴~多云 南风 1-2级 287 重度污染 5
91 2018-04-02 26 11 多云 北风 1-2级 287 重度污染 5
72 2018-03-14 15 6 多云~阴 东北风 1-2级 293 重度污染 5
86 2018-03-28 25 9 多云~晴 东风 1-2级 387 严重污染 6
df.sort_values(by="aqi", ascending=False)
ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
271 2018-09-29 22 11 晴 北风 3-4级 387 优 1
281 2018-10-09 15 4 多云~晴 西北风 4-5级 293 优 1
249 2018-09-07 27 16 晴 西北风 3-4级 287 优 1
272 2018-09-30 19 13 多云 西北风 4-5级 287 优 1
301 2018-10-29 15 3 晴 北风 3-4级 266 优 1
... ... ... ... ... ... ... ... ... ...
317 2018-11-14 13 5 多云 南风 1-2级 22 重度污染 5
71 2018-03-13 17 5 晴~多云 南风 1-2级 22 重度污染 5
91 2018-04-02 26 11 多云 北风 1-2级 22 重度污染 5
72 2018-03-14 15 6 多云~阴 东北风 1-2级 21 重度污染 5
86 2018-03-28 25 9 多云~晴 东风 1-2级 21 严重污染 6
365 rows × 9 columns
2、多列排序
# 按空气质量等级、最高温度排序,默认升序
df.sort_values(by=["aqiLevel", "bWendu"])
# 两个字段都是降序
df.sort_values(by=["aqiLevel", "bWendu"], ascending=False)
# 分别指定升序和降序
df.sort_values(by=["aqiLevel", "bWendu"], ascending=[True, False])