Pandas 嵌套排序和 NaN

作者:编程家 分类: pandas 时间:2025-06-13

Pandas 是一个强大的数据处理和分析工具,它提供了许多方便的函数和方法来操作和处理数据。其中,嵌套排序和处理 NaN 值是在数据分析中经常遇到的问题之一。本文将介绍如何使用 Pandas 来进行嵌套排序和处理 NaN 值,并提供相应的代码案例。

首先,我们来介绍一下嵌套排序。嵌套排序是指在进行排序时,按照多个列的顺序进行排序。在 Pandas 中,可以使用 sort_values() 函数来实现嵌套排序。sort_values() 函数可以接受一个或多个列名作为参数,并按照列名的顺序进行排序。下面是一个示例代码:

python

import pandas as pd

# 创建一个 DataFrame

data = {'Name': ['Tom', 'John', 'Mike', 'Tom'],

'Age': [28, 24, 21, 28],

'Score': [80, 75, 90, 85]}

df = pd.DataFrame(data)

# 按照 Name 列和 Age 列进行排序

df_sorted = df.sort_values(['Name', 'Age'])

print(df_sorted)

运行上述代码,我们会得到按照 Name 列和 Age 列进行排序后的 DataFrame。可以看到,DataFrame 按照 Name 列进行排序,如果 Name 列相同,则按照 Age 列进行排序。这样可以更方便地对数据进行分析和处理。

接下来,我们来介绍如何处理 NaN 值。NaN 值(Not a Number)是指在数据中缺失或无效的值。在 Pandas 中,可以使用 fillna() 函数来填充 NaN 值。fillna() 函数可以接受一个参数,用来指定要填充的值。下面是一个示例代码:

python

import pandas as pd

import numpy as np

# 创建一个包含 NaN 值的 DataFrame

data = {'Name': ['Tom', 'John', np.nan, 'Mike'],

'Age': [28, 24, np.nan, 21],

'Score': [80, np.nan, 90, 85]}

df = pd.DataFrame(data)

# 填充 NaN 值为 0

df_filled = df.fillna(0)

print(df_filled)

运行上述代码,我们会得到填充了 NaN 值后的 DataFrame。可以看到,原来的 NaN 值被填充为了 0。这样可以避免在数据分析和处理过程中出现错误。

嵌套排序示例

下面我们来看一个嵌套排序的示例。假设我们有一个包含学生信息的 DataFrame,其中包括学生的姓名、年龄和成绩。我们想要按照成绩从高到低的顺序对学生进行排序,如果成绩相同,则按照年龄从低到高的顺序进行排序。

python

import pandas as pd

# 创建一个 DataFrame

data = {'Name': ['Tom', 'John', 'Mike', 'Tom'],

'Age': [28, 24, 21, 28],

'Score': [80, 75, 90, 85]}

df = pd.DataFrame(data)

# 按照 Score 列和 Age 列进行排序

df_sorted = df.sort_values(['Score', 'Age'], ascending=[False, True])

print(df_sorted)

运行上述代码,我们会得到按照成绩从高到低、年龄从低到高的顺序对学生进行排序后的 DataFrame。可以看到,学生的排序是根据成绩来排列的,如果成绩相同,则按照年龄来排列。

处理 NaN 值示例

下面我们来看一个处理 NaN 值的示例。假设我们有一个包含学生信息的 DataFrame,其中包括学生的姓名、年龄和成绩。有些学生的年龄和成绩数据缺失了。我们想要将缺失的数据填充为 0。

python

import pandas as pd

import numpy as np

# 创建一个包含 NaN 值的 DataFrame

data = {'Name': ['Tom', 'John', np.nan, 'Mike'],

'Age': [28, 24, np.nan, 21],

'Score': [80, np.nan, 90, 85]}

df = pd.DataFrame(data)

# 填充 NaN 值为 0

df_filled = df.fillna(0)

print(df_filled)

运行上述代码,我们会得到填充了 NaN 值后的 DataFrame。可以看到,缺失的年龄和成绩数据被填充为了 0。

通过上述示例,我们可以看到,使用 Pandas 进行嵌套排序和处理 NaN 值是非常简单和方便的。这些功能可以帮助我们更好地处理和分析数据,提高工作效率。无论是进行数据分析还是机器学习建模,掌握这些技巧都是非常有用的。希望本文对大家能够有所帮助!