美文网首页
09 Pandas数据排序

09 Pandas数据排序

作者: Viterbi | 来源:发表于2022-11-05 15:04 被阅读0次

    [toc]

    09 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

    0、读取数据

    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')
    
    df.head()
    
    .dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
    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

    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      雾~多云
        353348         霾
        Name: tianqi, Length: 365, dtype: object
    
    

    2、DataFrame的排序

    2.1 单列排序

    
    df.sort_values(by="aqi")
    
    
    .dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
    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

    365 rows × 9 columns

    
    df.sort_values(by="aqi", ascending=False)
    
    
    .dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
    ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
    86 2018-03-28 25 9 多云~晴 东风 1-2级 387 严重污染 6
    72 2018-03-14 15 6 多云~阴 东北风 1-2级 293 重度污染 5
    71 2018-03-13 17 5 晴~多云 南风 1-2级 287 重度污染 5
    91 2018-04-02 26 11 多云 北风 1-2级 287 重度污染 5
    317 2018-11-14 13 5 多云 南风 1-2级 266 重度污染 5
    ... ... ... ... ... ... ... ... ... ...
    249 2018-09-07 27 16 西北风 3-4级 22 1
    301 2018-10-29 15 3 北风 3-4级 22 1
    272 2018-09-30 19 13 多云 西北风 4-5级 22 1
    271 2018-09-29 22 11 北风 3-4级 21 1
    281 2018-10-09 15 4 多云~晴 西北风 4-5级 21 1

    365 rows × 9 columns

    2.2 多列排序

    
    # 按空气质量等级、最高温度排序,默认升序
    df.sort_values(by=["aqiLevel", "bWendu"])
    
    
    .dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
    ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
    360 2018-12-27 -5 -12 多云~晴 西北风 3级 48 1
    22 2018-01-23 -4 -12 西北风 3-4级 31 1
    23 2018-01-24 -4 -11 西南风 1-2级 34 1
    340 2018-12-07 -4 -10 西北风 3级 33 1
    21 2018-01-22 -3 -10 小雪~多云 东风 1-2级 47 1
    ... ... ... ... ... ... ... ... ... ...
    71 2018-03-13 17 5 晴~多云 南风 1-2级 287 重度污染 5
    90 2018-04-01 25 11 晴~多云 南风 1-2级 218 重度污染 5
    91 2018-04-02 26 11 多云 北风 1-2级 287 重度污染 5
    85 2018-03-27 27 11 南风 1-2级 243 重度污染 5
    86 2018-03-28 25 9 多云~晴 东风 1-2级 387 严重污染 6

    365 rows × 9 columns

    
    # 两个字段都是降序
    
    df.sort_values(by=["aqiLevel", "bWendu"], ascending=False)
    
    
    .dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
    ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
    86 2018-03-28 25 9 多云~晴 东风 1-2级 387 严重污染 6
    85 2018-03-27 27 11 南风 1-2级 243 重度污染 5
    91 2018-04-02 26 11 多云 北风 1-2级 287 重度污染 5
    90 2018-04-01 25 11 晴~多云 南风 1-2级 218 重度污染 5
    71 2018-03-13 17 5 晴~多云 南风 1-2级 287 重度污染 5
    ... ... ... ... ... ... ... ... ... ...
    362 2018-12-29 -3 -12 西北风 2级 29 1
    22 2018-01-23 -4 -12 西北风 3-4级 31 1
    23 2018-01-24 -4 -11 西南风 1-2级 34 1
    340 2018-12-07 -4 -10 西北风 3级 33 1
    360 2018-12-27 -5 -12 多云~晴 西北风 3级 48 1

    365 rows × 9 columns

    
    # 分别指定升序和降序
    df.sort_values(by=["aqiLevel", "bWendu"], ascending=[True, False])
    
    
    .dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
    ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
    178 2018-06-28 35 24 多云~晴 北风 1-2级 33 1
    149 2018-05-30 33 18 西风 1-2级 46 1
    206 2018-07-26 33 25 多云~雷阵雨 东北风 1-2级 40 1
    158 2018-06-08 32 19 多云~雷阵雨 西南风 1-2级 43 1
    205 2018-07-25 32 25 多云 北风 1-2级 28 1
    ... ... ... ... ... ... ... ... ... ...
    317 2018-11-14 13 5 多云 南风 1-2级 266 重度污染 5
    329 2018-11-26 10 0 多云 东南风 1级 245 重度污染 5
    335 2018-12-02 9 2 雾~多云 东北风 1级 234 重度污染 5
    57 2018-02-27 7 0 东风 1-2级 220 重度污染 5
    86 2018-03-28 25 9 多云~晴 东风 1-2级 387 严重污染 6

    365 rows × 9 columns

    本文使用 文章同步助手 同步

    相关文章

      网友评论

          本文标题:09 Pandas数据排序

          本文链接:https://www.haomeiwen.com/subject/vccxtdtx.html