当前位置: 首页 > news >正文

用Pandas处理当当网图书数据:从混乱CSV到清晰报表的保姆级实战

用Pandas处理当当网图书数据:从混乱CSV到清晰报表的保姆级实战

当你从电商平台导出销售数据时,是否经常遇到这样的场景:打开CSV文件后,发现数据杂乱无章——缺失值随处可见、日期格式五花八门、文本字段包含多余字符、数值列混入了非数字内容。作为一位长期与电商数据打交道的分析师,我想分享一个真实案例:如何用Pandas将当当网的原始图书销售数据转化为可供分析的整洁数据集。

这份数据包含了2000条图书记录,涉及书名、作者、出版日期、折扣比例等关键字段。原始数据的问题非常典型:作者信息缺失、日期格式不统一、折扣字段包含"折"字符、推荐值以百分比形式存在。下面我将带您一步步解决这些问题,并解释每个处理步骤背后的业务考量。

1. 数据加载与初步观察

在开始清洗前,我们需要先了解数据的整体状况。使用Pandas的read_csv加载数据是最基础的一步:

import pandas as pd from datetime import datetime # 显示所有列 pd.set_option('display.max_columns', None) # 加载数据 data = pd.read_csv('当当网畅销图书榜单数据.csv')

初步观察数据时,有几个关键检查点:

  • 缺失值分布:哪些列存在缺失?缺失比例如何?
  • 数据类型:各列的实际类型是否与预期一致?
  • 异常值:是否存在明显不合理的数据点?

通过data.info()data.describe()可以快速获取这些信息。在我们的案例中,电子书价格列缺失严重(超过50%),这是决定是否保留该列的重要依据。

2. 处理缺失值与特定记录修正

缺失值处理是数据清洗的核心环节之一。不同列的缺失需要采用不同策略:

2.1 关键字段的手动补全

对于书名等重要字段,我们可以针对特定记录进行精确补全:

# 补全特定图书的作者和出版日期 data.loc[data['书名']=='一级建造师2020教材2020版一级建造师建筑工程管理与实务', ['作者']] = '全国一级建造师执业资格考试用书编写委员会' data.loc[data['书名']=='一级建造师2020教材2020版一级建造师建筑工程管理与实务', '出版日期'] = '2020-05-01' data.loc[data['书名']=='中国共产党简史(32开)2021党史学习教育系列读物领导干部学习指', '作者'] = '中国共产党简史编写组' data.loc[data['书名']=='写给青少年的古文观止全套5册正版小古文小学初中高中注音详解注释', '作者'] = '伊泽'

这种精确补全方式适用于已知特定记录缺失值的情况,能保证数据准确性。

2.2 高缺失率列的删除决策

当某列缺失率过高时,删除可能是更合理的选择:

# 删除电子书价格列(缺失率过高) data.drop(columns=['电子书价格'], inplace=True)

业务考量:电子书价格缺失超过50%,保留该列会导致分析偏差,且无法通过简单插补获得可靠值。

2.3 数值型缺失值的智能填充

对于评论数等数值列,我们采用平均值填充:

# 填充评论数缺失值为平均值 data['评论数'] = data['评论数'].fillna(data['评论数'].mean())

同时,对于推荐值为0%的异常情况,我们将其替换为100%:

data['推荐值'] = data['推荐值'].replace('0%', '100%')

3. 数据类型转换与格式标准化

原始数据中的类型问题非常普遍,需要进行系统性的格式转换。

3.1 字符串清理与数值转换

处理折扣比例和推荐值字段:

# 折扣比例:移除"折"字符并转为浮点数 data['折扣比例'] = data['折扣比例'].str.replace('折', '').astype(float) # 推荐值:移除百分号并转为浮点数 data['推荐值'] = data['推荐值'].str.replace('%', '').astype(float)

3.2 日期格式的统一处理

出版日期字段存在多种格式,需要统一:

# 将出版日期转为标准日期格式,再格式化为中文显示 data['出版日期'] = pd.to_datetime(data['出版日期']).dt.strftime('%Y年%m月%d日')

3.3 排行榜类型的清理

处理排行榜类型中的冗余字符:

# 移除"年"字并转为整数 data['排行榜类型'] = data['排行榜类型'].str.replace('年', '').astype(int)

4. 数据排序与索引重置

清洗后的数据需要进行合理排序和索引整理:

# 按推荐值降序排序 data.sort_values(by='推荐值', ascending=False, inplace=True) # 重置索引 data.index = [i for i in range(len(data))]

5. 数据分析与洞察提取

清洗后的数据已经可以进行有意义的分析了。以下是两个简单的分析示例:

5.1 最畅销图书统计

# 找出出版次数最多的图书 top_book = data['书名'].value_counts().idxmax() count = data['书名'].value_counts().max() print(f"出版次数最多的图书是《{top_book}》,共出现了{count}次")

5.2 作者多样性分析

# 统计唯一作者数量 author_count = data['作者'].nunique() print(f"数据集中共有{author_count}位不同的作者")

6. 实战技巧与常见陷阱

在实际操作中,有几个容易忽视但非常重要的细节:

  1. 链式操作的风险:避免连续使用多个方法调用(如data.str.replace().astype()),这可能导致难以调试的错误。分步操作更安全。

  2. 内存管理:处理大型数据集时,及时使用del删除不再需要的中间变量,或考虑使用dtype参数优化内存占用。

  3. 处理性能:对于超大数据集,可以考虑:

    • 使用chunksize参数分块读取
    • 尝试modin.pandas替代标准Pandas
    • 对字符串列使用category类型
  4. 验证转换结果:每次重要转换后,都应抽样检查结果是否符合预期:

# 检查折扣比例转换结果 print(data['折扣比例'].sample(5))
  1. 保存中间结果:复杂的清洗流程中,建议定期保存中间结果:
# 保存清洗后的数据 data.to_csv('cleaned_book_data.csv', index=False, encoding='utf-8-sig')

7. 扩展思考:自动化清洗流程

对于定期更新的数据集,可以考虑构建自动化清洗管道:

def clean_book_data(raw_data): # 实现所有清洗步骤 cleaned_data = raw_data.copy() # ...各清洗步骤... return cleaned_data # 使用管道处理新数据 new_data = pd.read_csv('new_book_data.csv') cleaned_new_data = clean_book_data(new_data)

更进一步,可以创建配置驱动的清洗系统,将清洗规则存储在JSON或YAML文件中,实现完全可配置的清洗流程。

http://www.jsqmd.com/news/598499/

相关文章:

  • WezTerm终端配置指南
  • AI Skills从入门到精通:教你写好AI操作手册,收藏这篇就够了!
  • 2026哪家公司气力输送设备口碑好/质量好? - 品牌推荐大师
  • 高通USB驱动在特殊启动模式下的深度解析:从Recovery到EDL的工程实践
  • 0设计模式使用场景
  • BRS——斯坦福李飞飞团队推出的全身轮式人形操作框架:推出遥操作接口JoyLo与全身视觉-运动注意策略WB-VIMA
  • 基于人为风险管控的钓鱼邮件综合防御体系研究
  • 每日安全情报报告 · 2026-04-06
  • 硬件知识--电感篇
  • 网工运维有必要“养龙虾”吗?
  • UniApp实战:集成高德与百度地图实现跨平台智能导航
  • 2026年防爆吸料机生产厂家年度评测:优质供应商产品与售后对比 - 品牌推荐大师
  • 笔记2——HTTP协议,Get,Post请求,URL的编码和解码
  • 实战对比:OLLVM在LLVM 18下的指令替换、控制流平坦化等混淆效果到底如何?
  • 告别模组管理烦恼:Lumafly让空洞骑士模组体验升级
  • 基于 EvilTokens 工具集的微软设备码钓鱼攻击机理与防御研究
  • 谷歌开源Gemma 4:256K原生多模态,免费商用
  • 基于PLC的私人车库自动门设计与实现——博图1200软件编程应用详解,含梯形图、组态动画及接线...
  • 别再傻傻拖拽了!Unity Scene视图里这个右键菜单,藏着实时预览摄像头的秘密
  • 【lvgl】配置lvgl如何运行在window中
  • 【27】软考软件设计师——数据流图(DFD)补全题满分精讲|下午15分大题深度拆解
  • JAVA重点基础、进阶知识及易错点总结(33)设计模式(代理、装饰器)
  • 开源工具ncmdump:3步解锁加密音乐,让网易云NCM文件在全设备自由播放
  • Qwen2.5-7B+vLLM离线推理实战:解决V100显卡兼容性问题
  • 避坑指南:RK3588以太网调试那些‘看起来通了但实际没通’的坑(附千兆网线识别与ifconfig -a用法)
  • 3步解锁QQ音乐加密文件:qmc-decoder让音乐真正属于你
  • 软测学习笔记|2026.4.4|错误推测法|因果图(2)
  • 路径规划算法仿真:A星算法详解及改进研究,包括效率提升、冗余拐角优化与路径平滑处理,可量化对比...
  • CNN卷积神经网络算法原理
  • 永磁同步电机无位置传感器矢量控制系统功能详解