处理缺失数据

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何处理数据分析中常见的问题——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"])

检测缺失值

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