处理缺失数据

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,我们将学习如何处理数据分析中常见的问题——pandas 中的缺失数据。我们将介绍如何识别缺失数据、填充缺失值以及删除不需要的数据。我们还将讨论 pandas 中用于表示缺失值的实验性 NA 标量。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到 笔记本 标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 83%。获得了学习者 95% 的好评率。

导入必要的库并创建 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"])

检测缺失值

接下来,我们将使用 isnanotna 函数来检测缺失值。

## 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 标量。在处理实际数据分析任务时,这些知识将非常有用,因为缺失数据往往是一个常见问题。