资讯动态

数据分析师Python工具箱:从数据清洗到可视化实战指南

发布时间:2026/10/9 3:47:20 来源:尧图企业网站定制
做数据分析这几年我最大的一个体会是工具不在多在于顺手。外面很多人一提到数据分析师第一反应就是“会Python吗”好像会Python就等于会数据分析。但真正入行之后你会发现Python只是起点关键是你手里攒下的那一套趁手的工具组合。今天这篇文章我就把自己常用的“数据分析师Python工具箱”完整摊开来讲包括每个工具解决什么问题、怎么选、怎么搭配使用以及我在真实项目里踩过的坑。不管你是刚准备转行数据分析的新人还是已经入行想优化自己工作流的同学这篇都能给你一个可以直接抄作业的参考框架。很多人学Python数据分析上来就报课、啃语法、背API学了大半个月还在纠结for循环怎么嵌套结果一碰到真实数据还是懵。我的看法是数据分析用的Python不需要你成为编程高手但一定要把正确的工具用熟。就像厨师不会因为一把刀好用就天天磨刀他要做的是知道什么菜用哪把刀。工具箱的意义也在这里——每个库学个六七成能解决业务里九成的问题剩下的再按需深挖。1. 工具箱的整体设计与选型思路先聊一个很多人忽略的问题为什么数据分析这行最后大家不约而同选了Python其实不是Python本身有多强而是它恰好把数据分析这条链路的每一环都占住了。从对接数据库、写接口拿数据到清洗整理、统计分析、建模预测再到出图表、做报表Python都能干而且每个环节都有成熟的第三方库。这意味着你只需要学一种语言就能把整条流水线打通不用像以前那样用SQL取数、用Excel清洗、用SPSS做分析、再用Tableau画图各个工具之间还要导来导去光格式转换就能耗掉半天。但Python生态太庞大了这也是新手最容易懵的地方。你随便一搜“Python数据分析库”能出来上百个哪个都有人推荐。所以我的工具箱选型从来不看哪个库火只看四个硬指标判断维度具体标准举例说明通用性能不能覆盖数据工作的多个环节pandas既能清洗又能做统计分析一个库顶半条流水线性能数据量上来之后扛不扛得住numpy的向量化计算比纯Python循环快几十倍生态周边配套是否丰富坏了有人修、出问题有人答用的人多踩坑的解决方案一搜就有易用性学习门槛是否合理API设计是否符合直觉pandas的API贴近日常表格操作习惯上手快按这个标准筛下来我常用的核心工具其实就十来款分成四层。最底下是numpy和pandas负责数据存储和清洗往上一层是matplotlib、seaborn、pyecharts负责可视化再往上是我用来取数和对接外部数据的requests、SQLAlchemy最上层就是一些辅助工具比如Jupyter Notebook做探索分析、openpyxl处理Excel、scikit-learn做建模。这个工具箱的搭建顺序也很重要我的建议是从数据分析最痛的“数据清洗”开始把pandas吃透再往外扩展不要一上来就想学机器学习。1.1 为什么把Python当数据分析主力工具你可能会说Excel不也能做数据分析吗没错Excel在数据量小、分析逻辑简单的时候确实高效但一旦数据量过了几十万行Excel就开始卡更别说做复杂的多表关联和自动化流程。我见过很多业务同学用Excel做月度报表每个月手动粘贴复制、VLOOKUP、透视表一套操作下来至少要花半天时间而且极易出错。这其实是数据分析里最典型的痛点工作高度重复、流程固定、容错率低。用Python把这些流程脚本化之后每次跑一遍脚本只要几分钟而且结果可复现逻辑可审计这才是数据分析师和“表哥表姐”拉开差距的地方。1.2 选库标准我判断一个库值不值得用只看这四点具体展开说这四条标准。通用性最好理解一个库能解决的问题域越宽你学习它的投入产出比就越高pandas就是典型例子它能读数据、清洗、转换、聚合、透视、导出一条龙全包。性能方面我在处理几百万行电商订单数据时感受特别明显纯Python循环遍历每一行去算金额可能需要几分钟换成pandas或numpy的向量化操作几秒钟就出结果这个差距在真实工作时就是“能不能准时下班”的区别。生态代表着这个库的生命力用的人越多你遇到问题越容易找到答案GitHub的issue解决得也越快能减少大量自己debug的时间。至于易用性我的观点是不要为“炫技”选工具API设计越贴近业务直觉越好能让代码读起来像大白话的库才是适合团队协作的库。2. 数据获取与清洗pandas和numpy是地基如果只让我从工具箱里选一个必须学透的库我毫不犹豫会选pandas。它是整个数据分析流程中的绝对核心负责把原始数据变成能分析的样子。很多新手问我数据分析先学什么我的回答永远是先把pandas用熟其他都好说。pandas的核心就两个数据结构Series和DataFrame。Series你可以理解成一列带索引的数据DataFrame就是一个带行索引和列名的表格。这么说吧如果你会看Excel你就能理解DataFrame——它就是一个内存里的Excel表格只不过你可以用代码对它做各种批量操作。我在带新人时最喜欢用的比喻是DataFrame像一沓有格式的纸质表格pandas就是你的手你想怎么翻、怎么改、怎么整理都行。2.1 从Excel/CSV/数据库把数据捞进来读入环节的常见坑实际项目里数据来源五花八门Excel报表、CSV导出、数据库查询结果、第三方API返回的JSON。pandas提供了统一的读取接口read_excel、read_csv、read_sql基本覆盖了绝大多数场景。但读入环节有几个坑我几乎每次帮人排查问题都会遇到。第一个坑是编码。CSV文件经常因为编码不一致出现乱码尤其是从业务系统导出的文件默认可能不是UTF-8。我的习惯是读取时直接指定编码参数比如pd.read_csv(数据.csv, encodinggbk)如果报错就换utf-8再试。第二个坑是数据类型自动识别错误。比如订单号这类以数字开头的IDpandas会自动判断成int类型导致前导零丢失日期列经常被读成字符串后续做时间筛选的时候各种报错。第三个坑是表头问题有的Excel文件前两行是标题和备注真正的表头在第三行此时就要用header参数指定行号。另外read_csv在处理大文件时有一个被很多人忽略的参数叫chunksize它可以分块读取文件而不是一次性全部读入内存配合dtype参数指定每列的数据类型能大幅降低内存占用。我之前处理过一个1.5GB的日志文件直接读取会导致内存溢出用分块读取加按需处理的方式问题就解决了。import pandas as pd # 读取Excel时指定sheet和表头行 df pd.read_excel(订单明细.xlsx, sheet_name9月, header1) # 读取大CSV时分块读取降低内存压力 chunk_iter pd.read_csv(行为日志.csv, chunksize100000, dtype{用户ID: int32}) result [] for chunk in chunk_iter: # 对每一块做处理 result.append(chunk[chunk[事件类型] click]) df pd.concat(result, ignore_indexTrue)2.2 清洗三板斧缺失值、重复值、类型转换数据读进来之后90%的原始数据都是“脏”的没法直接分析。我把清洗工作归纳成三板斧处理缺失值、去重、修正数据类型。很多分析结论最后跑偏不是因为算法不行而是数据在清洗环节出了问题所以这一步再怎么强调都不为过。缺失值处理最关键是判断“这个字段缺失了有没有业务含义”。比如用户填写的年龄字段为空可能就是用户不愿意填这在做用户画像分析时是一个独立特征不能简单填充或删除。我的处理原则是先df.isnull().sum()统计每个字段的缺失情况再用df.info()看字段类型然后逐字段决定策略——是删除整行、填充默认值、用前向/后向填充还是保留缺失作为独立类别。重复值处理相对简单df.drop_duplicates(subset[订单号])就可以按关键字段去重但这里有个细节去重前要判断哪个字段才是真正决定唯一性的而不是对全表所有字段去重。类型转换是新手最容易忽略的。比如金额字段读进来是字符串类型里面有千分位逗号或人民币符号直接求和不报错但结果全错日期字段是2023/09/01这种格式需要pd.to_datetime转成标准时间类型才能按月聚合。我的习惯是读取数据后先做一轮dtypes检查再统一处理。# 缺失值统计与处理 print(df.isnull().sum()) df[年龄] df[年龄].fillna(-1) # 缺失单独标记 # 去重并保留最新一条记录 df df.sort_values(下单时间).drop_duplicates(subset订单号, keeplast) # 类型转换 df[下单时间] pd.to_datetime(df[下单时间]) df[订单金额] df[订单金额].astype(float)2.3 numpy到底帮了什么忙向量化计算的威力numpy在工具箱里的定位是pandas的“发动机”。pandas底层的很多操作都是先调用numpy的数组运算再封装成更友好的接口。所以严格来说你每天都在用numpy只是自己没意识到。那为什么要单独掌握它因为有些数据操作用pandas写起来绕用numpy直接处理反而更干净比如对多维数组做数学变换、矩阵运算、复杂的条件筛选尤其在物联数据、图像数据、时序数据这类非表格结构化数据上numpy的优势更明显。numpy的核心是ndarray数组和向量化计算。所谓向量化计算就是不写循环直接对整组数据做运算。举个例子你想把一组销售数据按比例折算成含税金额用纯Python写循环要三行用numpy一行搞定而且运行速度快几十倍。我在实际项目里最常用numpy的场景是构建邻接矩阵做关系网络分析、做数组的切片与条件筛选、处理时间序列数据里的滑动窗口计算。很多人觉得numpy难学其实只要掌握数组创建、切片索引、where条件筛选、常用数学函数这四块就够应付九成的数据分析场景了。import numpy as np sales np.array([120, 340, 560, 210]) # 原始销售额 tax_rate 1.13 # 含税系数 sales_with_tax sales * tax_rate # 向量化计算一行搞定 # 条件筛选找出含税后金额大于300的订单 mask sales_with_tax 300 print(sales_with_tax[mask])3. 可视化与业务洞察matplotlib起步seaborn提升pyecharts表达数据清洗分析完了下一步是“看图说话”。很多人以为可视化就是把数据画成图表发给领导看其实可视化在数据分析里有两个完全不同的用途一是给自己看用来探索数据、发现规律、检查异常二是给业务方看用来传递结论、支撑决策。这两类用途对工具的要求完全不同所以我的工具箱里不止一个可视化库。给自己看的探索性图表要求的是快速、灵活、信息密度高。这个场景我基本用matplotlib加seaborn。matplotlib是所有Python可视化库的底层基础功能最全但API偏底层画一张图要写好几行代码才算配置好seaborn基于matplotlib做了封装专门面向统计图表一行代码就能画出一张带分布曲线、置信区间、分组色调的漂亮图非常适合做探索性分析。给业务方看的汇报图表重点是交互、美观、容易从网页分享我推荐pyecharts它基于ECharts生成HTML页面鼠标悬停有提示、能缩放、能联动观感上比静态图片高级很多尤其适合做周报、月报里的动态图表模块。3.1 分层使用探索期、汇报期、自动化看板分开选型具体怎么分配使用场景我一般是这样的拿到一份新数据先用pandas做聚合再用matplotlib直接画几张基础分布图快速扫一遍不用考虑美感纯粹为了找感觉。这个阶段常常能看到数据里的问题比如某个字段的分布极度偏斜、某些月份数据明显缺失、不同分组的差异比预期大得多。第二步是分析中期做深入对比时改用seaborn因为它对分类变量和连续变量的关系展现非常直观比如箱线图、小提琴图、回归拟合图能快速回答“两组数据有没有显著差异”这类问题。最后是输出阶段把成型的图表做成pyecharts的交互图放到报告里或者直接生成HTML让业务方在浏览器里点着看。阶段核心诉求工具选择输出形式探索期快速、灵活、能看分布matplotlib临时图片看完就删分析期揭示关系、做统计对比seaborn精选图表存为结论素材汇报期交互、美观、可分享pyechartsHTML页面嵌入报告3.2 三个高频可视化场景的代码示例我整理了三个最常出现在日常工作中的可视化场景每个都给出一段可以直接跑的示例代码。第一个是时间序列趋势图比如看每日销售额变化这是业务方看得最多的图表第二个是分组对比图比如不同产品线的利润率对比常用柱状图加误差线第三个是相关性热力图在做多特征分析时用来快速筛选重要变量。import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 场景一日销售额趋势 daily_sales df.groupby(df[下单时间].dt.date)[订单金额].sum() plt.figure(figsize(12, 5)) plt.plot(daily_sales.index, daily_sales.values, markero, linewidth1) plt.title(每日销售额趋势) plt.xticks(rotation45) # 解决横坐标太密集的问题 plt.tight_layout() plt.show() # 场景二不同产品线利润率对比 sns.barplot(datadf, x产品线, y利润率, cisd) plt.title(各产品线利润率对比) plt.show() # 场景三相关性热力图 numeric_cols df[[销售额, 订单量, 折扣率, 运费]].corr() sns.heatmap(numeric_cols, annotTrue, cmapRdYlBu_r, center0) plt.show()3.3 画图细节横坐标太密集这种问题怎么处理这里必须单独说一下可视化里最容易被忽略的细节问题横坐标文字重叠。几乎每个刚用matplotlib画图的人都遇到过——日期多或者分类多的时候横坐标标签挤成一坨完全看不出在写什么。这不是什么复杂的技术问题但处理好了能让图表专业度提升一大截。最常用的三种方式一是plt.xticks(rotation45)把标签旋转45度二是用plt.xticks(ticks)手动指定要显示的刻度间隔比如每7天显示一个日期三是调整画布尺寸plt.figure(figsize(12, 5))让图有足够的横向空间。此外用ax.xaxis.set_major_locator设置刻度定位器这种方式在动态生成图表时最实用能自动按固定间隔或时间段显示刻度。import matplotlib.dates as mdates fig, ax plt.subplots(figsize(12, 5)) ax.plot(daily_sales.index, daily_sales.values) ax.xaxis.set_major_locator(mdates.DayLocator(interval7)) # 每7天显示一个刻度 ax.xaxis.set_major_formatter(mdates.DateFormatter(%m-%d)) plt.xticks(rotation45) plt.tight_layout() plt.show()4. 数据采集与自动化requests、SQLAlchemy和调度技巧数据分析师的日常工作不只是处理别人给你的数据很多场景下需要自己去“找”数据。比如对接第三方平台的开放API拉取业务数据、从公司数据库里查询明细数据、爬取公开的行业数据做市场分析。这部分我常用的工具是requests和SQLAlchemy再加上几个自动化脚本的小技巧。requests是Python里最主流的HTTP请求库它的设计非常简洁get和post两个方法就覆盖了绝大部分接口对接场景。对接API的关键点在于处理认证、参数签名和分页。很多开放平台的API接口要求带token鉴权需要在请求头加上Authorization字段数据量大的接口通常做分页返回需要用循环控制页码直到取完所有数据。这个过程中最容易出问题的是频率限制某些平台对单位时间内的请求次数有严格限制一旦超了就被封IP所以我在写采集脚本时会主动加sleep延时宁可跑慢一点也要稳定。4.1 从网页和API拿数据requests的正确打开方式import requests import time import pandas as pd all_data [] for page in range(1, 20): resp requests.get( https://api.example.com/v1/orders, params{page: page, page_size: 100}, headers{Authorization: Bearer YOUR_TOKEN} ) data resp.json() if not data[items]: break all_data.extend(data[items]) time.sleep(1) # 频率控制避免触发限流 df pd.DataFrame(all_data)这段代码看起来简单但有几个细节值得说。请求参数用params而不是拼URL字符串requests会自动做URL编码能避免中文参数导致的报错。第三方的接口返回最常见的是JSON要先resp.json()解析成Python对象再看结构。如果拿到的是嵌套JSON一种比较实用的处理方式是先把整个JSON平铺化再用pd.json_normalize直接转成DataFrame能省去大量手写解析逻辑的时间。4.2 从数据库读数据SQLAlchemy的实用姿势数据分析师免不了和数据库打交道尤其在公司里最核心的业务数据都在数据库里。很多人用pandas的read_sql配合一个数据库连接串就能读数据但真正的生产环境数据读取我更推荐用SQLAlchemy来管理连接。它的好处是统一了不同数据库的方言你写同样的pandas代码只要换一个连接串就能在MySQL、PostgreSQL、SQL Server之间切换而不用改业务逻辑。我一般用SQLAlchemy创建引擎再配合read_sql读取数据。这里建议不要直接在数据库上跑特别复杂的聚合查询而是把原始明细数据拉回来用pandas处理。为什么因为数据库资源通常比较紧张运行重型查询可能会影响线上业务。把数据拉到本地之后用pandas做清洗和聚合更灵活调试方便出错了也不会影响生产库。from sqlalchemy import create_engine engine create_engine(mysqlpymysql://user:passwordhost:3306/business_db) df pd.read_sql(SELECT order_id, user_id, amount, created_time FROM orders WHERE created_time 2024-01-01, engine)4.3 把重复工作做成自动化脚本工具的最终价值体现在能解放你那些每周都要重复做的机械劳动上。最典型的就是周报月报。以前我每个月做电商运营报表时要做的事几乎一模一样从后台导出订单数据、清洗处理、算同比环比、画图表、写结论、做成PPT。一旦流程稳定我就交给脚本去干了。核心思路是把“从数据到图表”的每一步固化成函数通过一个入口脚本串联起来最后自动输出Excel报表和PPT素材全程不需要人工介入。这里有几个自动化脚本的实用经验。一是输入数据用统一命名规则放到固定目录脚本自动扫描最新文件减少手动改路径的操作。二是输出结果命名带上日期比如“运营月报_202409.csv”方便后续归档。三是给脚本加异常通知出错时能通过邮件或企业微信机器人推送告警这样哪怕你不在电脑前也知道任务跑失败了。四是使用计划任务在Windows上用任务计划程序在Linux上用cron就能实现凌晨自动跑数、早上上班直接看结果的效果。5. 项目实战电商快递账单数据分析怎么做工具说了一堆不落到项目里都是纸上谈兵。我拿一个比较常见的数据分析项目——电商快递账单数据分析——来完整拆解一遍从拿到原始数据到最后输出结论把工具箱里的东西串起来用。这个项目的热词搜索关注度很高是因为几乎所有做电商的公司都要面对快递费用核算问题而快递账单本身结构复杂、记录量大、容易出错是典型的数据分析应用场景。先说业务背景。电商公司每个月都会收到快递公司发来的账单里面是每一单的快递费明细日期、快递单号、重量、始发地、目的地、产品类型、计费方式、首重费用、续重费用、总费用。这些记录少则几万行多则几十万行。业务方需要搞清楚三个问题一是这个月的快递费总体上有没有异常为什么涨了二是不同快递公司的单价哪个更划算三是各个区域的快递费用结构是什么样的有没有优化空间。5.1 场景与目标账单数据能算出哪些业务价值把业务问题翻译成数据分析问题其实就是在找异常、做对比、分结构。快递账单的原始数据一般是一张超大的明细表直接看根本看不出问题必须经过聚合和对比。分析的目标可以拆成四个维度时间维度看趋势看每天/每周/每月的快递费用有没有异常波动快递公司维度做横向比价看各家平均首重价格、续重价格的差异重量区间维度看结构比如3公斤以内的订单占比多少这个结构直接决定了整体单均成本和谈判空间地区维度做成本分布看哪些线路单价特别高是不是可以通过调整发货仓来优化运费。5.2 完整分析流程拆解从原始数据到结论第一步把原始账单数据读入pandas先做一轮基础清洗。要注意的是快递账单里经常有异常数据比如重量为0的记录、金额为负的退单记录、重复录入的快递单号这些在聚合前就要处理干净不然后面的结论全偏。第二步构造关键派生字段。原始数据里有“首重费用”和“续重费用”但不同快递公司的计费规则不统一有的按“首重1kg续重每0.5kg”计费有的按“首重0.5kg续重每kg”计费直接比较没意义所以要计算“单均总费用”和“每公斤平均费用”这两个标准化指标。# 清洗去掉重量异常与重复单号 df df[df[重量(kg)] 0] df df.drop_duplicates(subset快递单号, keeplast) # 派生字段每公斤均价 总费用 / 重量 df[每公斤均价] df[总费用] / df[重量(kg)] # 按快递公司分组对比 company_summary df.groupby(快递公司).agg( 订单量(快递单号, count), 总费用(总费用, sum), 单均费用(总费用, mean), 每公斤均价(每公斤均价, mean) ).round(2) print(company_summary)第三步就是可视化输出。我通常会画三张图一张是每日快递费用的折线图看趋势和异常点一张是不同快递公司的单均费用横向对比柱状图这是业务最关心的还有一张是重量区间的费用分布饼图用来判断快递包裹的结构是否健康。这三张图画完业务结论基本就呼之欲出了。我在项目里跑完这个分析后发现有一个快递公司的单均费用明显高于其他家原因不是单价贵而是它承接的是偏远地区订单重量偏大导致续重费用高。这个结论单独看单价会被误导但结合重量结构分析后业务方就能做出更合理的决策不是盲目换快递商而是针对偏远线路单独谈价格。5.3 这个项目的延伸玩法快递账单分析做完其实还能继续延伸。往下可以接入每天的订单数据实现快递费的日监控一旦某天费用异常波动触发告警往上可以结合退货数据分析退货运费对利润的影响横着还能做各快递公司的时效对比从“成本时效”两个维度一起评估。这些延伸方向不需要引入复杂算法都是基于已有的数据用pandas加可视化的方式就能完成这也正是工具箱带给你的底气不是你会多少高大上的模型而是你能用最趁手的工具解决实际业务问题。6. 环境配置与常见问题排查聊完工具和项目最后一个绕不开的话题是环境配置。我发现一个特别普遍的现象很多人学数据分析第一个拦住他的不是语法也不是逻辑而是装环境。装Python装了半天路径配不好pip安装库各种报错代码还没写一行就已经想放弃了。这部分就系统讲一下我的环境配置方案和最常见的几个坑。6.1 环境选型Anaconda、Miniconda还是裸Python先给出结论做数据分析推荐直接用Anaconda或Miniconda不建议新手装“裸Python”再手动配环境。裸Python就是一个干干净净的解释器装库要自己用pip一个一个装而且极易出现不同项目依赖冲突的问题。Anaconda是一个自带几百个常用科学计算包的发行版装完即用。Miniconda则像一个精简版只带conda这个包管理器需要什么库自己装。方案适合谁优点缺点Anaconda新手、教学、不想折腾开箱即用自带Jupyter、pandas等常用包安装包体积大启动慢环境比较臃肿Miniconda多数从业者、想掌控环境体积小环境干净按需安装需要自己装常用库多一步操作裸Python熟悉环境管理的老手最轻量完全可控依赖管理麻烦新手易踩坑我目前的组合是Miniconda加Jupyter Notebook再加VS Code。Miniconda负责隔离不同项目的Python环境Jupyter Notebook用于探索性数据分析VS Code用来写正式的脚本和项目文件。Jupyter Notebook最让我喜欢的一点是“所见即所得”写完一行代码立刻能看到结果还能保留中间过程非常适合分析思路还不明确时的探索阶段。而一旦分析逻辑固化就把代码整理成标准的.py文件放到项目里做流程化调用。6.2 虚拟环境隔离是省时间的唯一捷径虚拟环境这个概念我觉得再怎么强调都不为过。它的作用简单说就是给每个项目单独隔一个“房间”每个房间里可以装不同版本的Python和不同版本的库互不干扰。比如你手上有一个老项目用的是pandas 1.1新项目要用pandas 2.0的版本如果全局环境只有一个装新库就可能把旧库覆盖掉直接导致老项目跑不了。用conda建虚拟环境每个项目独立就不会出这种问题。创建环境的命令非常简单conda create -n data_analysis python3.10 conda activate data_analysis conda install pandas numpy matplotlib jupyter我在实际工作中遇到过最尴尬的一次事故就是没分环境给一个已交付的自动化报表脚本升级库版本结果升级后某个API变了脚本直接跑不了因为是离线交付客户那边也没法远程排查最后只能花了一个下午紧急回滚环境。从此之后我所有项目一律先建虚拟环境哪怕只是为了一个小脚本也要隔离。这不是矫情而是经验教训换来的习惯。6.3 常见问题速查表安装、导入、乱码、性能为了让这篇文章更实用我把平时在安装和运行Python数据分析代码时最高频遇到的问题整理成一份速查表你可以直接收藏备用常见问题可能的触发原因解决方案pip安装超时/失败默认Python源在国外网络不稳定换成清华或阿里镜像源pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simpleImportError: No module named库没装到当前环境先conda activate对应的虚拟环境再用conda list确认库是否存在Jupyter里import成功但.py里import失败两个环境不是同一个Python确认which python或where python指向的路径是否一致CSV中文乱码文件编码与读取参数不匹配读取时显式指定encodingutf-8或gbkread_excel报错xlrd版本冲突Excel版本和xlrd库不兼容使用openpyxl作为引擎pd.read_excel(file, engineopenpyxl)DataFrame显示不全中间有省略号默认显示阈值限制设置pd.set_option(display.max_columns, None)和pd.set_option(display.max_rows, 100)代码跑得特别慢用了循环而不是向量化操作检查是否有for遍历DataFrame改用apply或直接向量化运算说句实在话上面遇到的大部分问题只要有一个干净的虚拟环境再养成“报错先看最后一行”的习惯都能很快解决。Python数据分析的报错信息其实非常友好它会直接告诉你问题出在哪个文件哪一行我见过很多新手一看见大段红字就慌了其实只要你耐着性子看最后几行至少能定位到七八成的问题。最后关于这个工具箱我再分享一点个人体会。很多人问我要不要把所有热门的Python库都学一遍我的答案从来都是“不需要”。数据分析的日常工作中pandas加numpy加两个可视化库再配一个环境管理工具已经能解决百分之八九十的问题。真正重要的不是你会多少个库而是你遇到一个具体问题时能不能快速判断出该用哪个工具、怎么把它组合进你的流程里。工具箱这个东西永远不是“学完再干”而是“边干边攒”。你每做完一个项目自己顺手用惯的那几个工具就会沉淀下来慢慢就变成只属于你自己的工具箱了。如果你在动手过程中遇到什么坑也欢迎随时来交流毕竟这些坑我自己全都踩过一遍。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑