Pandas 排序值
最后修改时间:2025年3月1日
Pandas 是一个强大的 Python 数据处理库。在处理 DataFrame 和 Series 时,排序是一项常见操作。本教程将通过实际示例介绍如何使用 Pandas 对 DataFrame 和 Series 进行排序。
排序有助于组织数据以获得更好的分析效果。Pandas 提供了 sort_values() 和 sort_index() 等方法来进行数据排序。这些方法非常灵活,允许按列或索引进行排序。
按多列排序
此示例显示了如何按多个列对 DataFrame 进行排序。
import pandas as pd
# Load data from CSV
df = pd.read_csv('products.csv')
# Sort by 'category' (ascending) and 'unit_price' (descending)
sorted_df = df.sort_values(by=['category', 'unit_price'], ascending=[True, False])
print(sorted_df.head())
sort_values() 方法按“category”列升序和“unit_price”列降序对 DataFrame 进行排序。这对于层次化排序非常有用。
按自定义顺序排序
此示例演示了如何使用特定列的自定义顺序对 DataFrame 进行排序。
import pandas as pd
# Load data from CSV
df = pd.read_csv('products.csv')
# Define custom order for 'category'
custom_order = ['Beverages', 'Condiments', 'Dairy Products', 'Seafood', 'Meat/Poultry', 'Produce', 'Confections', 'Grains/Cereals']
# Convert 'category' to a categorical type with custom order
df['category'] = pd.Categorical(df['category'], categories=custom_order, ordered=True)
# Sort by 'category'
sorted_df = df.sort_values(by='category')
print(sorted_df.head())
pd.Categorical() 函数用于定义“category”列的自定义顺序。然后根据此自定义顺序对 DataFrame 进行排序。
按列值对 DataFrame 进行排序
此示例显示了如何按一个或多个列对 DataFrame 进行排序。
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 20],
'Salary': [50000, 60000, 70000, 40000]
}
df = pd.DataFrame(data)
sorted_df = df.sort_values(by='Age')
print(sorted_df)
sort_values() 方法按“Age”列对 DataFrame 进行排序。默认情况下,排序是升序的。您可以通过将列表传递给 by 参数来按多个列进行排序。
降序排序
此示例演示了如何按降序对数据进行排序。
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 20],
'Salary': [50000, 60000, 70000, 40000]
}
df = pd.DataFrame(data)
sorted_df = df.sort_values(by='Age', ascending=False)
print(sorted_df)
ascending=False 参数按降序对 DataFrame 进行排序。当您希望最高值在前时,这很有用。
按索引排序
此示例显示了如何按索引对 DataFrame 进行排序。
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 20],
'Salary': [50000, 60000, 70000, 40000]
}
df = pd.DataFrame(data)
sorted_df = df.sort_index(ascending=False)
print(sorted_df)
sort_index() 方法按索引对 DataFrame 进行排序。将 ascending=False 设置为按降序排序索引。
排序 Series
此示例演示了如何对 Pandas Series 进行排序。
import pandas as pd s = pd.Series([25, 30, 35, 20], index=['Alice', 'Bob', 'Charlie', 'David']) sorted_s = s.sort_values() print(sorted_s)
sort_values() 方法按值对 Series 进行排序。您也可以使用 sort_index() 按索引排序。
带有缺失值的排序
此示例显示了如何处理排序时的缺失值。
import pandas as pd
import numpy as np
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, np.nan, 35, 20],
'Salary': [50000, 60000, 70000, 40000]
}
df = pd.DataFrame(data)
sorted_df = df.sort_values(by='Age', na_position='first')
print(sorted_df)
na_position='first' 参数将缺失值放在开头。使用 na_position='last' 将它们放在末尾。
Pandas 排序最佳实践
- 使用
sort_values()进行列排序: 此方法非常适合按列值排序。 - 使用
sort_index()进行索引排序: 此方法对于按索引排序很有用。 - 处理缺失值: 使用
na_position控制缺失值的放置位置。 - 原地排序: 使用
inplace=True在不创建新 DataFrame 的情况下对 DataFrame 进行排序。
来源
在本文中,我们探讨了如何在 Pandas 中对 DataFrame 和 Series 进行排序。
作者
所有 Pandas 教程列表。