Python_pandas不是熊猫(2)——DataFrame、Series的排序操作

0.写在前面

DataFrame的排序操作比较简单,不过几函数尔


这是本例要用到的DataFrame

import pandas as pd
import numpy as np

rst = np.random.RandomState(seed=2333) # 加入seed,使得生成的数据相同
example_array = rst.uniform(size=(5,5))
index  = ['张飞', '关羽', '赵云', '黄忠', '马超']
columns= ['血量', '智力', '敏捷', '攻击', '防御']
example_df = pd.DataFrame(example_array, columns=columns, index=index)

在这里插入图片描述

排序操作,有两种方式,一种是对内容进行排序,另一种是对索引进行排序


1.DataFrame按内容进行排序

使用df.sort_values(by, ascending=True)进行排序,该函数有很多参数,最常用的就这俩,其余的参数博客结尾会讲到(至于为什么最后讲,我先卖个关子

  • by:指定单个键或者多个键进行排序
  • ascending=True默认为升序,False为降序
# 指定单个键
# 按照血量进行排序,使用`ascending`指定降序
example_df = example_df.sort_values(by='血量', ascending=False)


# 指定多个键
# 按照血量、智力进行排序,使用`ascending`指定血量降序,智力升序
example_df.sort_values(by=['血量', '智力'], ascending=[False, True])

# 若仅要求降序,`ascending`可以只传入一个参数 False
example_df.sort_values(by=['血量', '智力'], ascending=False)

2.DataFrame按索引进行排序

使用df.sort_index(ascending=True)进行排序,该函数有很多参数,最常用的就这一个,其余的参数博客结尾会讲到

  • ascending=True默认为升序,False为降序
# 对索引进行降序行排序
example_df.sort_index(ascending=False)

3.Series按内容进行排序

使用series.sort_values(ascending=True)进行排序,由于其只有一列数据,所以无需指定字段,所以更简单一些,它也有一些其他参数

series = example_df['血量']
# 顺便复习下上篇博客,这样可以获得行series
# series = example_df.loc['张飞']
# 进行排序
series.sort_values() # 没错就是这么简单粗暴

4.Series按索引进行排序

使用series.sort_index(ascending=True)进行排序

series = example_df['血量']
series.sort_index() # 没错还是这么简单粗暴

5.其他参数

先吓唬一下诸位:鼠标可以直接往下拉

dataframe.sort_values(
    by,
    axis=0,
    ascending=True,
    inplace=False,
    kind='quicksort',
    na_position='last',
    ignore_index=False,
)
dataframe.sort_index(
    axis=0,
    level=None,
    ascending=True,
    inplace=False,
    kind='quicksort',
    na_position='last',
    sort_remaining=True,
    ignore_index:bool=False,
)
series.sort_values(
    axis=0,
    ascending=True,
    inplace=False,
    kind='quicksort',
    na_position='last',
    ignore_index=False,
)
series.sort_index(
    axis=0,
    level=None,
    ascending=True,
    inplace=False,
    kind='quicksort',
    na_position='last',
    sort_remaining=True,
    ignore_index:bool=False,
)

每个方法都一堆参数,不像之前想的那样简洁,但是,他们却有很多共同的参数,这也是我要放在最后一起讲的原因。

  • axis参数,和numpy中的用法相同,若指定为axis=1,则在水平方向进行排序,但是对应的by参数,要填入DataFrameindex元素,本例中,若指定axis=1,则by可以为"张飞"
  • inplace参数,默认为False,则排序之后,会返回一个新DataFrame,而不会覆盖原DataFrame
  • kind参数,选择排序算法,默认为'quicksort',可选{'quicksort', 'mergesort', 'heapsort'}"mergesort"是唯一稳定的算法
  • ignore_index参数,是否忽略原索引,默认为False。若为True,则索引会变为0,1,...,n-1
  • na_position参数,将空缺值Nan放在哪,可选{'first', 'last'},默认为last,排序时将空缺值放于最后

仅在.sort_index方法中有的level参数和sort_remaining参数,非常少用,暂时先不讲

原创文章 66 获赞 14 访问量 9094

猜你喜欢

转载自blog.csdn.net/HaoZiHuang/article/details/105153488