加载并审计销售数据集
导入订单记录 CSV,审计 dtypes 和缺失值,并修复日期解析问题及负数量异常。
加载并审计销售数据集 是 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 反馈 — 无需本地设置。
此课程中的所有课时
- 加载并审计销售数据集
- 收入计算与特征工程
- 按地区和类别进行 GroupBy 分析
- 月度趋势可视化