Pandas数据排序

一、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-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

三、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~多云
	353348         霾
	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-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
df.sort_values(by="aqi", ascending=False)
			ymd		bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
	271	2018-09-29	22		11		晴		北风			3-43871
	281	2018-10-09	15		4		多云~晴	西北风		4-52931
	249	2018-09-07	27		16		晴		西北风		3-42871
	272	2018-09-30	19		13		多云		西北风		4-52871
	301	2018-10-29	15		3		晴		北风			3-42661
	...		...		...		...		...		...			...		...		...		...	
	317	2018-11-14	13		5		多云		南风			1-222		重度污染	5
	71	2018-03-13	17		5~多云	南风			1-222		重度污染	5
	91	2018-04-02	26		11		多云		北风			1-222		重度污染	5
	72	2018-03-14	15		6		多云~阴	东北风		1-221		重度污染	5
	86	2018-03-28	25		9		多云~晴	东风			1-221 		严重污染	6
	365 rows × 9 columns
2、多列排序
# 按空气质量等级、最高温度排序,默认升序
df.sort_values(by=["aqiLevel", "bWendu"])

Pandas数据排序_第1张图片

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

Pandas数据排序_第2张图片

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

Pandas数据排序_第3张图片

你可能感兴趣的:(pandas学习,python,数据挖掘,排序算法)