Data Analysis

Pandas DataFrame 排序精通指南

Spread the love

Pandas DataFrame 提供强大的数据操作工具,排序是其中一项基本操作。本文探讨如何高效地根据单个列对 DataFrame 进行排序,重点介绍关键的sort_values()方法及其关键参数:ascendingna_position

目录

使用ascending控制排序顺序

sort_values()方法可以直接控制排序方向。ascending参数(默认为True,升序)决定是升序还是降序排序。


import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 22, 28],
        'Score': [85, 92, 78, 88]}

df = pd.DataFrame(data)

# 按'Age'升序排序
df_ascending = df.sort_values(by='Age')
print("升序:n", df_ascending)

# 按'Age'降序排序
df_descending = df.sort_values(by='Age', ascending=False)
print("n降序:n", df_descending)

使用na_position处理缺失值

在处理包含缺失值(NaN)的数据集时,na_position参数控制这些值在排序列中的位置。它接受两个值:

  • 'first'(默认):将 NaN 值放在排序列的开头。
  • 'last':将 NaN 值放在排序列的末尾。

import pandas as pd
import numpy as np

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
        'Age': [25, 30, np.nan, 28, 22],
        'Score': [85, 92, 78, 88, 95]}

df = pd.DataFrame(data)

# NaN 值放在最前
df_na_first = df.sort_values(by='Age', na_position='first')
print("NaN 值放在最前:n", df_na_first)

# NaN 值放在最后
df_na_last = df.sort_values(by='Age', na_position='last')
print("nNaN 值放在最后:n", df_na_last)

按多列排序

可以轻松地扩展此功能以按多列排序,方法是将列表传递给by参数。Pandas 将按列表中的第一列排序,然后按第二列排序,依此类推。


# 按 Age(升序)然后按 Score(降序)排序
df_multi = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("n多列排序:n", df_multi)

就地排序

默认情况下,sort_values()返回一个新的排序后的DataFrame。要直接修改 DataFrame,请将inplace参数设置为True。请注意,这会修改原始 DataFrame,因此请谨慎操作。


df.sort_values(by='Age', inplace=True)
print("n就地排序:n", df)

通过理解和使用这些参数,可以高效且精确地对 Pandas DataFrame 进行排序,从而简化数据分析工作流程。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注