Pandas & NumPy Academy · 课时

加载并审计销售数据集

导入订单记录 CSV,审计 dtypes 和缺失值,并修复日期解析问题及负数量异常。

第 1 / 4 课13 个步骤

加载并审计销售数据集 是 CoddyKit 上的免费 Pandas & NumPy Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Pandas & NumPy Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Pandas & NumPy Academy 课程共包含 4 节课。

销售数据集简介

典型的销售数据集包含如下列:order_id、order_date、customer_id、product、category、quantity、unit_price 和 region。在进行任何分析之前,您必须加载文件,并初步查看其结构。第一步的目标是在编写任何公式之前,先了解您拥有的数据。

import pandas as pd

df = pd.read_csv('sales.csv')
print(df.shape)       # (rows, columns)
print(df.head())

检查形状和列名

加载后,请立即检查 df.shape 以了解数据集的维度,并检查 df.columns 以查看所有列名。这可以确认文件是否正确加载,并显示列名中是否存在需要清理的意外空格或大小写问题。预期列数与实际列数不一致,是文件损坏的早期警告信号。

print('Rows, Cols:', df.shape)
print('Columns:', df.columns.tolist())
print('Index:', df.index[:5].tolist())

使用 dtypes 检查数据类型

使用 df.dtypes 或 df.info() 查看每一列推断出的数据类型。常见问题包括:日期列被加载为 object(字符串),以及由于存在多余的逗号或货币符号,数值列被加载为 object。尽早发现数据类型问题,可以避免之后算术运算中出现不易察觉的错误。

print(df.dtypes)

# More detail including non-null counts
df.info()

统计缺失值

运行 df.isna().sum(),统计每列中的 NaN 值。使用 df.isna().mean() * 100 将其转换为百分比,查看每列缺失值所占的比例。缺失比例超过 30–40% 的列通常需要做出决定:删除该列、填补缺失值,或将其标记为单独的指示变量。

missing = df.isna().sum()
missing_pct = df.isna().mean() * 100

print(pd.DataFrame({'count': missing, 'pct': missing_pct}))

检测重复行

重复的订单记录会夸大收入总额,并扭曲任何按客户进行的分析。使用 df.duplicated().sum() 统计完全重复的记录,使用 df.duplicated(subset=['order_id']).sum() 检查重复的订单 ID,因为订单 ID 应该是唯一的。在加载时识别重复记录,可以节省之后数小时的调试时间。

print('Exact duplicates:', df.duplicated().sum())
print('Duplicate order_ids:', df.duplicated(subset=['order_id']).sum())

# Preview the duplicated rows
print(df[df.duplicated(subset=['order_id'], keep=False)].head())

修复日期列解析

加载为 object 的日期列必须使用 pd.to_datetime() 转换,这样才能进行日期运算。如果您知道日期格式,请传入 format='%Y-%m-%d';对于混合格式,则可以使用 infer_datetime_format=True。转换后,可以通过 .dt 访问器提取年份和月份,用于基于时间的分组。

df['order_date'] = pd.to_datetime(df['order_date'], format='%Y-%m-%d')

df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month

print(df[['order_date', 'year', 'month']].head())

发现负数量

负的 quantity 值通常表示退货或数据录入错误。可以使用布尔索引查找它们:df[df['quantity'] < 0]。请决定将其视为合理的退货(保留并添加标记),还是视为错误(删除或修正)。务必记录您的决定,以确保数据处理流程可复现。

negatives = df[df['quantity'] < 0]
print(f'Negative quantity rows: {len(negatives)}')
print(negatives.head())

# Flag returns separately
df['is_return'] = df['quantity'] < 0

检查数值列的范围

使用 df.describe() 查看每个数值列的最小值、最大值、平均值和四分位数。unit_price 的最小值为零或负值时,通常值得怀疑。quantity 的最大值如果远高于任何合理的订单数量,也可能是数据录入错误。检查数值范围是快速发现异常的有效方法。

print(df[['quantity', 'unit_price']].describe())

# Any price exactly 0?
print('Zero price rows:', (df['unit_price'] == 0).sum())

审核分类列

对于 region 和 category 这类列,请使用 df['region'].value_counts() 查看所有唯一值及其出现频次。请检查拼写错误、大小写不一致的情况(例如 'north' 与 'North'),以及可能表明上游数据存在问题的异常值。在执行任何 groupby 操作前,请先将这些值标准化。

print(df['region'].value_counts())
print(df['category'].value_counts())

# Normalise capitalisation
df['region'] = df['region'].str.strip().str.title()

创建审计摘要

结构化的审计摘要 DataFrame 有助于向利益相关者说明数据质量问题。您可以将行数、列数、缺失值数量和重复值数量等指标收集到字典中,再将其转换为 DataFrame。该摘要会成为分析报告的第一部分,并为您采取的每个清理步骤提供依据。

audit = {
    'rows': len(df),
    'columns': len(df.columns),
    'missing_cells': df.isna().sum().sum(),
    'duplicate_rows': df.duplicated().sum(),
    'date_range_start': df['order_date'].min(),
    'date_range_end': df['order_date'].max()
}

for k, v in audit.items():
    print(f'{k}: {v}')

保存清理后的快照

完成初步审计和基本修复(数据类型更正、删除重复项、添加标记列)后,请保存一个清理后的快照,以确保后续步骤始终从一致的基线开始。请使用 df.to_csv('sales_clean.csv', index=False),或者使用 df.to_parquet('sales_clean.parquet') 以便更快地重新加载。Parquet 可以保留包括日期时间在内的数据类型,而 CSV 不能。

# Drop exact duplicates before saving
df = df.drop_duplicates(subset=['order_id'], keep='first')

# Save clean snapshot
df.to_parquet('sales_clean.parquet', index=False)
print('Saved', len(df), 'rows to sales_clean.parquet')

快速检查

测试您对本课数据分析概念的理解。

课程回顾

本课中,您学习了:加载 CSV 并检查形状和列、审计数据类型、缺失值、重复项和负数量,以及为后续步骤保存清理后的快照。接下来,我们将基于清理后的数据集探索收入计算和特征工程。

免费开始

用 AI 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「加载并审计销售数据集」课时是免费的吗?

是的 — 「加载并审计销售数据集」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Pandas & NumPy Academy 课程的其余内容,请升级到 CoddyKit PRO。 Pandas & NumPy Academy 课程共包含 4 节课。

「加载并审计销售数据集」这节课中我会学到什么?

导入订单记录 CSV,审计 dtypes 和缺失值,并修复日期解析问题及负数量异常。 你通过在浏览器中直接运行的动手代码来练习 Pandas & NumPy Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Pandas & NumPy Academy 需要有经验吗?

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

「加载并审计销售数据集」课时需要多长时间?

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

我能在这节 Pandas & NumPy Academy 课中编写并运行代码吗?

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

此课程中的所有课时

  1. 加载并审计销售数据集
  2. 收入计算与特征工程
  3. 按地区和类别进行 GroupBy 分析
  4. 月度趋势可视化
← 返回 Pandas & NumPy Academy