0Pricing
Learn AI with Python · 课时

EDA 工作流与数据概况分析

df.info()、df.describe()、缺失值审计、数据类型检查和基数分析

EDA 工作流与数据概况分析 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

什么是探索性数据分析?

探索性数据分析(EDA)是对任何数据集进行建模前的第一步。其目标是了解数据结构、发现问题并建立直觉认识。

一份有条理的 EDA 初步检查清单可以回答:数据有多大?各列是什么类型?缺失值在哪里?是否存在重复项?数值是如何分布的?

  • 尽早发现数据质量问题
  • 确定哪些特征需要清洗
  • 提出稍后进行检验的假设

加载数据

一切都从加载一个 DataFrame 开始,然后使用 head() 和 shape 快速查看数据。

shape 返回一个 (rows, columns) 元组,因此您可以立即了解正在处理的数据规模。

import pandas as pd

df = pd.read_csv("customers.csv")
print(df.shape)        # (10000, 8)
print(df.head())       # first 5 rows

df.info() — 类型和非空计数

df.info() 是最有用的第一条命令。它会打印每个列名、对应的 数据类型以及非空计数。

如果数值列显示为 object,说明存在问题(例如多余文本、逗号或货币符号)。如果各列的非空计数不同,说明数据中存在缺失值。

df.info()
# <class pandas.DataFrame>
# RangeIndex: 10000 entries
# age      9800 non-null  float64
# city     10000 non-null object
# income   9500 non-null  float64

df.describe() — 数值摘要

df.describe() 会为每个数值列提供计数、均值、标准差、最小值、四分位数(25/50/75%)和最大值。

请留意其中的异常信号:例如年龄列的 min 为 -1、max 远高于第 75 百分位数(异常值),或者均值与中位数相差很大(偏度)。

print(df.describe())
# Use include="all" to also summarize categorical columns
print(df.describe(include="all"))

df.isnull().sum() — 统计缺失值

将 isnull() 与 sum() 链式调用,可以统计每列的缺失值数量。再添加一个 .sum(),即可得到总数。

将结果转换为百分比来判断严重程度:缺失率为 60% 的列可能值得删除,而缺失率为 2% 的列则很容易进行填补。

print(df.isnull().sum())

missing_pct = df.isnull().sum() / len(df) * 100
print(missing_pct.sort_values(ascending=False))

df.duplicated().sum() — 查找重复行

df.duplicated() 会返回一个布尔 Series,标记与之前某行完全相同的行。对其求和即可统计重复行的数量。

您可以使用 subset 将重复项限定在关键列范围内——当某个 id 应该唯一时,这非常有用。

print(df.duplicated().sum())            # exact duplicate rows
print(df.duplicated(subset=["id"]).sum()) # duplicate ids

df = df.drop_duplicates()

value_counts() — 类别频数

value_counts() 会统计某列中每个唯一值出现的次数。这是检查分类数据的首选工具。

使用 normalize=True 可以查看比例而不是原始计数,使用 dropna=False 可以将缺失值也纳入统计。

print(df["city"].value_counts())
print(df["city"].value_counts(normalize=True))
print(df["city"].value_counts(dropna=False))

基数检查

基数是某列中不同值的数量,由 nunique() 得出。

  • 低基数(只有少量类别)→ 适合进行独热编码。
  • 高基数(数千个唯一字符串,例如用户 ID)→ 通常不适合作为未经处理的特征。
for col in df.select_dtypes("object").columns:
    print(col, "->", df[col].nunique(), "unique")

发现常量列和类 ID 列

在进行数据概览时,有两种极端情况值得标记:

  • 常量列(nunique() == 1)不包含任何信息——请删除它们。
  • 类 ID 列(nunique() == len(df))的每一行都具有唯一值,对大多数模型都不会提供有用信息。
n = len(df)
for col in df.columns:
    u = df[col].nunique()
    if u == 1:
        print(col, "is constant")
    elif u == n:
        print(col, "is ID-like")

数据类型和内存占用

检查 df.dtypes 以确认各列的存储类型正确,并检查 df.memory_usage(deep=True) 以找出占用内存较大的列。

对数值类型进行缩窄,并将低基数字符串转换为 category,可以大幅减少大型数据集的内存占用。

print(df.dtypes)
print(df.memory_usage(deep=True))

df["city"] = df["city"].astype("category")

可复用的数据概览代码片段

您可以将整个检查清单封装到一个辅助函数中,让每个新数据集都接受相同的初步检查。

加载任何 DataFrame 后立即运行它,就能马上发现数据的形状、类型、缺失情况、重复项和基数。

def profile(df):
    print("Shape:", df.shape)
    print(df.info())
    print("Missing:\n", df.isnull().sum())
    print("Dupes:", df.duplicated().sum())
    for c in df.select_dtypes("object"):
        print(c, df[c].nunique(), "unique")

profile(df)

快速检查:缺失值

您需要计算每列缺失值的百分比。

回顾:EDA 初步检查清单

现在,您已经拥有一套适用于任何数据集的可重复初始流程:

  • 使用 shape 和 head() 了解规模并预览数据
  • 使用 info() 查看数据类型和非空计数
  • 使用 describe() 获取数值摘要并发现异常值线索
  • 使用 isnull().sum() 检查缺失情况
  • 使用 duplicated().sum() 查找重复行
  • 使用 value_counts() 和 nunique() 查看类别频数和基数

接下来,我们将使用单变量分析深入研究各个列。

常见问题解答

「EDA 工作流与数据概况分析」课时是免费的吗?

是的 — 「EDA 工作流与数据概况分析」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「EDA 工作流与数据概况分析」这节课中我会学到什么?

df.info()、df.describe()、缺失值审计、数据类型检查和基数分析 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「EDA 工作流与数据概况分析」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. EDA 工作流与数据概况分析
  2. 单变量分析
  3. 双变量与多变量分析
  4. 特征分布与目标分析
← 返回 Learn AI with Python