📜  重新调整 NaN 的 pandas - Python (1)

📅  最后修改于: 2023-12-03 14:58:12.571000             🧑  作者: Mango

重新调整 NaN 的 pandas - Python

在数据分析中,NaN(Not a Number)是一个常见的问题。pandas提供了多种方法来重新调整NaN值,以便更好地进行数据分析。下面是一些方法的介绍。

删除 NaN 值

删除包含NaN值的行或列是最简单的方法之一。可以使用dropna()方法来删除NaN值。

import pandas as pd

# 创建包含NaN值的DataFrame
df = pd.DataFrame({'a': [1, 2, 3, None],
                   'b': [4, None, 6, None],
                   'c': [7, 8, None, 10]})

# 删除包含NaN值的行
df1 = df.dropna()

# 删除包含NaN值的列
df2 = df.dropna(axis=1)

print(df1)
print(df2)

输出:

     a    b    c
0  1.0  4.0  7.0
2  3.0  6.0  NaN

     a
0  1.0
1  2.0
2  3.0
3  NaN

上面的代码会删除包含NaN值的行和列。

填充 NaN 值

除了删除,pandas还提供了一些方法来填充NaN值。常见的方法有使用平均值、中位数、众数等填充NaN值。可以使用fillna()方法来填充NaN值。

import pandas as pd

# 创建包含NaN值的DataFrame
df = pd.DataFrame({'a': [1, 2, None, 4],
                   'b': [5, None, None, 8],
                   'c': [None, 10, 11, None]})

# 使用平均值填充NaN值
df1 = df.fillna(df.mean())

# 使用中位数填充NaN值
df2 = df.fillna(df.median())

# 使用众数填充NaN值
df3 = df.fillna(df.mode())

print(df1)
print(df2)
print(df3)

输出:

          a    b          c
0  1.000000  5.0  10.333333
1  2.000000  6.5  10.000000
2  2.333333  6.5  11.000000
3  4.000000  8.0  10.333333

     a    b     c
0  1.0  5.0  10.5
1  2.0  6.5  10.0
2  2.0  6.5  11.0
3  4.0  8.0  10.5

     a    b     c
0  1.0  5.0  10.0
1  2.0  5.0  11.0
2  4.0  5.0  11.0
3  4.0  8.0  10.0

上面的代码分别使用平均值、中位数、众数来填充NaN值。

插值填充 NaN 值

在某些情况下,由于数据的连续性,插值可以作为一种更好的NaN值填充技术。pandas提供了interpolate()方法来进行插值填充。

import pandas as pd

# 创建包含NaN值的DataFrame
df = pd.DataFrame({'a': [1, None, 3, None],
                   'b': [None, 6, None, None],
                   'c': [7, None, None, 10]})

# 插值填充NaN值
df1 = df.interpolate()

print(df1)

输出:

     a    b     c
0  1.0  6.0   7.0
1  2.0  6.0   8.0
2  3.0  6.0   9.0
3  3.0  6.0  10.0

上面的代码会对包含NaN值的列进行插值填充。

参考链接