dataframe排序 pd.rank()

pandas.DataFrame.rank

pandas.DataFrame.rank 官方文档

DataFrame.rank(axis=0, method=‘average’, numeric_only=NoDefault.no_default, na_option=‘keep’, ascending=True, pct=False)

参数解释

  • axis: axis=0为按行排名,axis=1为按列排名
  • method: 如何对具有相同价值(即领带)的记录组进行排序:
  • numeric_only: 对于DataFrame对象,如果设置为True,则只对数字列排序。
  • na_option: 如何对NaN值进行排序:
  • ascending: 元素按升序/降序排列
  • pct: 是否以百分比形式显示返回的排名。

Example

df = pd.DataFrame(data={'Animal': ['cat', 'penguin', 'dog',
                                   'spider', 'snake'],
                        'Number_legs': [4, 2, 4, 8, np.nan]})

dataframe排序 pd.rank()_第1张图片

method: {‘average’, ‘min’, ‘max’, ‘first’, ‘dense’}, default ‘average’

  • average: 组里的平均排名
  • min: 组里的最低排名
  • max: 组里的最高排名
  • first: 按照他们在数组中出现的顺序排列
  • dense: 就像’ min '一样,但是在组之间rank总是增加1。
df['method_average'] = df['Number_legs'].rank(method='average')
df['method_min'] = df['Number_legs'].rank(method='min')
df['method_max'] = df['Number_legs'].rank(method='max')
df['method_first'] = df['Number_legs'].rank(method='first')
df['method_dense'] = df['Number_legs'].rank(method='dense')

dataframe排序 pd.rank()_第2张图片

na_option: {‘keep’, ‘top’, ‘bottom’}, default ‘keep’

  • keep: 空值排序仍为空值
  • top: 排序放在第一位
  • bottom: 排在最后一位
df['na_keep'] = df['Number_legs'].rank(na_option='keep')
df['na_top'] = df['Number_legs'].rank(na_option='top')
df['na_bottom'] = df['Number_legs'].rank(na_option='bottom')

dataframe排序 pd.rank()_第3张图片

ascending: 升序为True, 降序为False

df['asc_True'] = df['Number_legs'].rank(method='min', ascending=True)
df['asc_False'] = df['Number_legs'].rank(method='min', ascending=False)

dataframe排序 pd.rank()_第4张图片

pct: 是否显示百分比

df['pct_True'] = df['Number_legs'].rank(method='min', pct=True)
df['pct_False'] = df['Number_legs'].rank(method='min', pct=False)

dataframe排序 pd.rank()_第5张图片

分组排序

pandas.core.groupby.GroupBy.rank 官方文档

Example

df = pd.DataFrame(
    {"group": ["a", "a", "a", "a", "a", "b", "b", "b", "b", "b"],
      "value": [2, 4, 2, 3, 5, 1, 2, 4, 1, 5],}
)

dataframe排序 pd.rank()_第6张图片

for method in ['average', 'min', 'max', 'dense', 'first']:
    df[f'{method}_rank'] = df.groupby('group')['value'].rank(method)

dataframe排序 pd.rank()_第7张图片

你可能感兴趣的:(Python,python,pandas,数据分析)