简介
在本实验中,我们将学习如何处理数据分析中常见的问题——pandas 中的缺失数据。我们将介绍如何识别缺失数据、填充缺失值以及删除不需要的数据。我们还将讨论 pandas 中用于表示缺失值的实验性 NA 标量。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到 笔记本 标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。
导入必要的库并创建 DataFrame
首先,我们需要导入必要的库——pandas 和 NumPy。然后,我们将创建一个包含一些缺失值的 DataFrame。
import pandas as pd
import numpy as np
## Create a DataFrame with missing values
df = pd.DataFrame(
np.random.randn(5, 3),
index=["a", "c", "e", "f", "h"],
columns=["one", "two", "three"],
)
df["four"] = "bar"
df["five"] = df["one"] > 0
df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])
检测缺失值
接下来,我们将使用 isna 和 notna 函数来检测缺失值。
## Use isna and notna to detect missing values
pd.isna(df2["one"])
df2["four"].notna()
df2.isna()
插入缺失数据
在这里,我们将了解如何在数据中插入缺失值。
## Insert missing values
s = pd.Series([1., 2., 3.])
s.loc[0] = None
对缺失数据进行计算
我们将对缺失数据进行一些基本的算术和统计计算。
## Perform calculations with missing data
df["one"].sum()
df.mean(axis=1, numeric_only=True)
df.cumsum()
删除带有缺失数据的轴标签
我们将学习如何使用 dropna 排除带有缺失数据的标签。
df.dropna(axis=0)
df.dropna(axis=1)
df["one"].dropna()
插值填充缺失值
我们将使用 interpolate 函数来填充数据框中的缺失值。
df = pd.DataFrame(
{
"A": [1, 2.1, np.nan, 4.7, 5.6, 6.8],
"B": [0.25, np.nan, np.nan, 4, 12.2, 14.4],
}
)
df.interpolate()
替换通用值
我们将学习如何使用 replace 函数将任意值替换为其他值。
ser = pd.Series([0.0, 1.0, 2.0, 3.0, 4.0])
ser.replace(0, 5)
理解用于表示缺失值的 NA 标量
最后,我们将讨论 pandas 中用于表示缺失值的实验性 NA 标量。
s = pd.Series([1, 2, None], dtype="Int64")
s
总结
在本实验中,我们学习了如何使用 pandas 处理缺失数据。我们涵盖了如何检测、插入、对缺失数据进行计算以及删除缺失数据。我们还学习了如何插值和替换缺失值。最后,我们讨论了 pandas 中用于表示缺失值的实验性 NA 标量。在处理实际数据分析任务时,这些知识将非常有用,因为缺失数据往往是一个常见问题。