❝本次我们来介绍,如何使用pandas进行数据的排序,包括Series排序以及DataFrame排序。 ❞
import pandas as pd
# 数据读取
data = pd.read_csv("D:/Pandas/mtcars.csv")
# 设置pandas的参数(最大列数,行宽,最大列宽)来展示完整信息
pd.set_option('display.max_columns', 1000)
pd.set_option('display.width', 1000)
pd.set_option('display.max_colwidth', 1000)
# 查看数据
data.head()
# 返回结果
cars mpg cyl disp hp drat wt qsec vs am gear carb
0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
函数格式:Series.sort_values(ascending=True, inplace=False)
参数说明:
Iascending:默认为True升序排序,为False降序排序;
inplace:是否修改原始Series。
这里我们以wt列为例进行演示。
# 默认为升序排序,返回一个Series
data["wt"].sort_values()
# 返回结果
27 1.513
18 1.615
19 1.835
25 1.935
26 2.140
17 2.200
2 2.320
………………………………
--------------------------------------------------------------------------------
# 降序排序
data["wt"].sort_values(ascending=False)
# 返回结果
15 5.424
16 5.345
14 5.250
11 4.070
24 3.845
23 3.840
13 3.780
………………………………
函数格式:DataFrame.sort_values(by, ascending=True, inplace=False)
参数说明:
by:字符串或者List<字符串>,单列排序或者多列排序,默认为True升序排序,为False降序排序;
ascending:bool或者List,升序还是降序,如果是list对应by的多列;
inplace:是否修改原始DataFrame。
# 对wt列排序,默认为升序排序,返回一个DataFrame
data.sort_values(by = "wt")
# 返回结果
cars mpg cyl disp hp drat wt qsec vs am gear carb
27 Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
18 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
19 Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
25 Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
26 Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
………………………………
--------------------------------------------------------------------------------
# 降序排序
data.sort_values(by = "wt",ascending = False)
# 返回结果
cars mpg cyl disp hp drat wt qsec vs am gear carb
15 Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
16 Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
14 Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
11 Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
24 Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
………………………………
# 按照mpg,wt排序,默认升序
data.sort_values(by = ["mpg","wt"])
# 返回结果
cars mpg cyl disp hp drat wt qsec vs am gear carb
14 Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
15 Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
23 Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
6 Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
16 Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
30 Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
………………………………
--------------------------------------------------------------------------------
# 按照mpg,wt降序排序(优先按照mpg排序,mpg一样时按照wt排序)
data.sort_values(by = ["mpg","wt"],ascending = False)
# 返回结果
cars mpg cyl disp hp drat wt qsec vs am gear carb
19 Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
17 Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
18 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
27 Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
………………………………
--------------------------------------------------------------------------------
# mpg升序排序,wt降序排序
data.sort_values(by = ["mpg","wt"],ascending = [True, False])
# 返回结果
cars mpg cyl disp hp drat wt qsec vs am gear carb
15 Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
14 Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
23 Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
6 Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
16 Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
30 Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8