0

0

Python数据分析项目复盘_常见问题与解决思路【教程】

冷炫風刃

冷炫風刃

发布时间:2025-12-25 21:55:02

|

559人浏览过

|

来源于php中文网

原创

CSV中文乱码需用encoding='gbk'或chardet探测;groupby.agg()列名混乱应改用命名聚合;绘图中文不显要设font.sans-serif;大文件内存爆掉须用chunksize分批读取。

python数据分析项目复盘_常见问题与解决思路【教程】

读取 CSV 时中文乱码或报 UnicodeDecodeError

Windows 默认用 gbk 编码保存文件,而 Python 3 的 pandas.read_csv() 默认尝试 utf-8,不匹配就直接报错。不是文件坏了,是编码没对上。

  • 先试 encoding='gbk'encoding='gb2312',多数本地 Excel 另存为 CSV 后适用
  • 实在不确定,用 open() 手动探测:
    import chardet
    with open('data.csv', 'rb') as f:
        print(chardet.detect(f.read(10000)))
    结果里的 'encoding' 字段就是该用的值
  • 长期协作建议统一导出为 UTF-8 with BOM(Excel 支持),然后固定用 encoding='utf-8-sig',避免 BOM 被当普通字符读入

df.groupby().agg() 返回列名丢失或嵌套层级混乱

新版 pandas(1.3+)默认启用 observed=False 和多级索引折叠逻辑,agg() 若传入字典(如 {'sales': 'sum', 'qty': ['mean', 'count']}),输出列名会变成元组,reset_index() 后也不直观。

  • 加参数 as_index=False 强制返回 DataFrame 而非 Series
  • 聚合后立刻用 columns = columns.map('_'.join) 展平多级列名(前提是 columns.nlevels > 1
  • 更稳妥的做法:改用命名聚合
    df.groupby('region').agg(
        total_sales=('sales', 'sum'),
        avg_qty=('qty', 'mean')
    )
    ——列名清晰、无嵌套、兼容性好

绘图时中文不显示或坐标轴重叠

matplotlib 默认字体不支持中文,且 plt.xticks() / plt.xlabel() 中文若未设置字体,会显示方块;图表元素挤在一起则常因 figsize 过小或未调用 plt.tight_layout()

  • 全局设字体(推荐):
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', 'DejaVu Sans']
    plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块
  • 单图微调:在 plt.show() 前加 plt.tight_layout(),或手动设 plt.subplots(figsize=(10, 6))
  • 导出图片时若仍模糊,加 dpi=300 参数:plt.savefig('plot.png', dpi=300, bbox_inches='tight')

内存爆掉:pd.read_csv() 加载大文件卡死

不是代码写错了,是数据量超出了可用内存。常见于几千万行以上、含长文本或未清理空列的 CSV。

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

下载

立即学习Python免费学习笔记(深入)”;

  • chunksize 分批处理:
    for chunk in pd.read_csv('big.csv', chunksize=50000):
        process(chunk)  # 每次只进内存 5 万行
  • 指定 usecols 只读需要的列,避免加载冗余字段
  • 对数值列提前设 dtype(如 {'user_id': 'category', 'score': 'float32'}),能省 30%~70% 内存
  • 真要全量加载,考虑换 dask.dataframepolars,它们天然惰性计算、内存友好

实际项目里,编码、分组、绘图、内存这四类问题占了数据清洗和可视化阶段八成以上的阻塞点。真正难的往往不是“不会写”,而是报错信息没指向真实原因——比如 UnicodeDecodeError 看似编码问题,有时其实是文件末尾多了不可见的 BOM 或控制字符。多看前几十字节的原始二进制,比反复试 encoding 更快。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

707

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

625

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

734

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

616

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1234

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

573

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

695

2023.08.11

笔记本电脑卡反应很慢处理方法汇总
笔记本电脑卡反应很慢处理方法汇总

本专题整合了笔记本电脑卡反应慢解决方法,阅读专题下面的文章了解更多详细内容。

1

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 9.5万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号