Pandas数据分析面试基础题(八)

1,191 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

排序是数据分析中一个非常基本的需求,这篇文章介绍一下 Dataframe 数据的排序。

试题:如何对 DataFrame 数据进行排序?

(难度:medium)

分析 DataFrame 有两种排序方式:

  • 按标签排序
  • 按实际的值排序 按标签排序
    使用sort_index()方法,通过axis参数指定行标签or列标签,ascending参数指定升序or降序。默认对行标签进行升序排序。具体使用方法如下:
# 按行标签排序
sort_df = df.sort_index()
sort_df
# 按行标签降序排序
sort_df = df.sort_index(ascending=False)
sort_df
# 按列标签排列
sort_df = df.sort_index(axis=1)
sort_df
# 按列标签降序排列
sort_df = df.sort_index(axis=1, ascending=False)
sort_df

按实际的值排序
sort_values()方法可以按照值进行排序,它接受一个by参数,来指定要排序的列名。格式如下:

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False)
  • axis:默认为0时,表示纵向排序;当axis=1时,表示横向排序。

  • by:字符串or列表,表示要排序的行or列名。

  • ascending:默认为True升序,可以是[True,False]类似的形式,表示第一字段升序,第二个降序,但要与by的内容对应。

  • inplace:是否覆盖原值。

# 按score的值进行升序排序
sort_df = df.sort_values(by='score')
sort_df
# 先按class的值升序排序,一样再按score的值降序排序
sort_df = df.sort_values(by=['class','score'], ascending=[True,False])
sort_df

结果输出为:

      id | name  | score | class |
| - | -- | ----- | ----- | ----- |
| 0 | 1  | one   | 90    | 1     |
| 1 | 2  | two   | 88    | 1     |
| 2 | 3  | three | 89    | 2     |
| 3 | 4  | four  | 65    | 2     |
| 4 | 5  | five  | 95    | 3     |

扩展:对 Dataframe 数据进行纵向排序后,如果行索引乱序了,我们可以使用reset_index()方法重新设置编号。

sort_df = sort_df.reset_index(drop=True)
sort_df

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !