尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

PyCharm科学计算模式实战:告别print调试,像Notebook一样高效分析数据

发布时间:2026/9/29 7:26:34

资讯中心
01
ARTICLE

PyCharm科学计算模式实战:告别print调试,像Notebook一样高效分析数据

PyCharm科学计算模式实战:告别print调试,像Notebook一样高效分析数据
1. 科学计算模式到底解决了什么问题先讲一个我自己的真实经历。早几年做数据分析的时候我的日常工作流是长这样的在PyCharm里写一段数据处理代码跑完然后密密麻麻的print(df.shape)、print(df.head())、print(df[列名].value_counts())堆满控制台。看输出看得眼睛花还得自己脑补这个DataFrame长什么样。改个参数再跑一次又是一轮print轰炸。后来切到Jupyter Notebook交互是爽了画图也方便但Notebook一是工程结构散漫二是代码稍微多一点就变得又臭又长想把它整理成可交付的脚本还要再折腾一遍。科学计算模式解决的就是这个矛盾它让你留在PyCharm这个正经IDE里拥有完整的工程管理、版本控制、重构和调试能力同时又像Notebook一样可以一段一段地执行代码实时看到变量内容和图表结果。这个模式的核心价值集中在三个词增量执行、变量可视化、图表面板。你用不着print就能直接看到每一步的DataFrame长什么样、内存占多少、某个统计指标算完是多少画出来的matplotlib和seaborn图会统一收进侧边栏不用反复弹窗。对AI开发来说这简直是做特征探索、数据清洗、样本分布分析时的利器——因为这些工作的共同特点是你需要频繁地看一眼中间结果改两行代码再看一眼。科学计算模式刚好把看的成本降到了几乎为零。简单说这功能主要适合这么几类人一是做数据分析和AI预处理的人二是需要在Python脚本里做科学计算、画图、看数值结果的人三是已经习惯PyCharm但眼馋Jupyter交互体验的人。至于说它能不能替代Notebook我的观点很明确两者各有用武之地科学计算模式的价值不是让你扔掉Notebook而是让你在做偏工程化的数据分析时不用在IDE和浏览器之间来回横跳。有一个点必须先说清楚科学计算模式是PyCharm专业版Professional Edition的功能社区版没有。如果你目前用的是社区版要么考虑专业版授权要么继续用编辑器Jupyter Notebook的组合方案。我不会在这篇文章里讲什么激活之类的操作正版功能值不值得付费每个人心里有自己的判断我只讲功能和用法。2. 开启科学计算模式先认识SciView面板科学计算模式的开启方式很简单菜单栏点击View → Scientific Mode勾上之后编辑器右下角会多出一个SciView工具窗口。如果你打开的是一个全新的Python文件PyCharm会默认让你选择以科学模式打开这时候编辑器的行号区域会出现绿色的小三角运行按钮文件内容也支持#%%分隔区块整个界面风格一下子就从普通代码编辑器变成了科学计算工作台。SciView窗口里有几个核心区域这也是整个科学计算模式的精髓所在变量区Variables所有在当前进程里存在的Python变量都会列在这里包括DataFrame、Series、数组、标量、模型对象等。选中的DataFrame可以直接在右侧的数据表格标签页里像Excel一样展开预览查看列名、行数、dtype和内存占用还可以点列头排序、做简单筛选。这个功能对快速了解一份数据集的结构非常有用比调df.info()再df.head()直观得多。数据表格区当你点选某个DataFrame变量时这里会展示它的具体内容。科学模式会把大表格分页展示不必担心一次性渲染几十万行把内存打爆。需要看某列分布或者找异常值的时候直接在这个表格里操作体验比控制台print好很多。图表区Plots你用matplotlib、seaborn、plotly生成的图表会自动出现在这里不会弹出一个难以管理的小窗口。多个图表并排排列、缩放、拖动、保存支持PNG、SVG等格式都很顺手。这一点有多重要用过Jupyter的人应该有体会——在Notebook里图是画在一个输出框里的想对比两次实验的曲线还得滚动屏幕。在SciView里你只需要在图表区左右切换对比就行了。运行控制台SciView下方会有一个独立的Python控制台它和编辑器之间共享同一个Python进程。也就是说你在编辑器里用Send to Process执行的代码和在这个控制台里手动敲的代码操作的是同一份变量空间。这给了你很大的自由度脚本里某段跑完了你可以在控制台里临时敲一句df[新增列] ...不用重新改文件再跑一遍。还有一个容易被忽略的点科学模式下的Python文件支持用#%%来把长脚本切分成一个个逻辑区块Cell每个区块左边会出现一个运行小按钮。点一下按钮或者光标停在这个区块里按快捷键就能只执行这一段代码前面的代码如果还没执行过会自动按顺序补跑。这其实就是MATLAB脚本cell风格的工作流习惯之后写长分析脚本非常舒服。3. 环境准备解释器、pandas包和Anaconda的一次性配置说实话我见过太多人在这一步卡住。科学计算模式本身不需要额外安装任何插件它是有PyCharm就带的功能但你的Python环境里如果没有pandas、matplotlib这些基础科学计算库打开变量区也只会看到一个空荡荡的列表。结合我这些年看到的各种群友踩坑经历这里把最关键的三个环境问题一次讲完。3.1 用venv建干净环境还是用Anaconda新建项目的时候PyCharm会问你选哪种解释器。我拿一个数据科学项目举例常见的选择有这几种方案优点缺点适合场景系统Python直接当解释器零配置启动快包容易装乱不同项目互相污染临时测试脚本不推荐PyCharm内置virtualenvvenv项目隔离干净pip安装方便需要自己逐个装包大多数日常数据分析项目推荐Anaconda/Conda环境科学计算包全家桶齐全环境管理强大环境体积大创建慢PyCharm里配置路径容易搞错经常切换不同科学计算环境的人推荐我自己现在的习惯是如果项目依赖不复杂就用venv如果明显是要做机器学习、深度学习相关的直接用Anaconda的conda环境因为你要的numpy、pandas、scikit-learn、pytorch这类包conda装起来省心很多不容易出现pip装一半编译报错的问题。3.2 最稳妥的Anaconda配置路径很多人的困惑是明明装了Anaconda但PyCharm里就是找不到那个Python解释器。其实操作路径在File → Settings → Project: 你的项目名 → Python Interpreter → Add Interpreter。点进去之后选Add Local Interpreter然后切到Conda Environment标签页。如果你已经创建好了conda环境在Existing environment那里选到anaconda3/envs/你的环境名/python.exeWindows或者/anaconda3/envs/你的环境名/bin/pythonmacOS/Linux就可以了。如果你是想让PyCharm帮你新建一个conda环境他也支持直接在New environment里填个名字比如ml_env然后选Python版本PyCharm会自动帮你把conda环境建好并激活。这一步完成之后你再打开终端PyCharm自带Terminal就能直接conda activate ml_env进屋干活了。3.3 pandas装不上多半是源的问题科学计算模式基本绕不开pandas。装这个包本身不难很多新手栽在网速和源的问题上。如果你执行pip install pandas matplotlib发现卡进度或者直接超时大概率是默认PyPI源访问慢。我个人的做法是直接换成国内镜像源比如清华源一行命令pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas matplotlib seaborn为了以后省事可以把默认源也改掉pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple如果你用的是conda也可以用conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge这类方式加速。这一套做完之后后面再装包基本能一路顺畅到底。还有一个细节值得提一句装包之前看一眼项目解释器有没有选对。很多人装包的时候用的是Anaconda Prompt或者系统终端装完回到PyCharm发现import还是失败。原因很简单——PyCharm项目里用的解释器和命令行里执行pip的解释器根本不是同一个。只要在PyCharm的Terminal里操作其实就默认和项目解释器绑定好了不容易出这种岔子。4. 实战演示跑一趟带图表的数据分析流程环境准备好之后咱们用一个尽可能接近日常工作的例子把科学计算模式的完整工作流走一遍。假设你现在拿到了一份电商订单数据orders.csv里面有三列订单日期、商品分类、销售额。你想做的事情很简单看看每个月总销售额的变化趋势。新建一个Python文件先写第一个区块import pandas as pd import matplotlib.pyplot as plt # 设置中文显示避免图表里的中文变方块 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False df pd.read_csv(orders.csv, encodingutf-8) df[order_date] pd.to_datetime(df[order_date]) df.head()在科学模式下你不需要碰运行按钮直接选中这段代码发送到进程就行。发送过去之后右边SciView的变量区里立刻出现df这个变量点一下它数据表格里就能直接看到前几行长什么样。这比print输出高到不知道哪里去了。接下来写第二个区块做一下简单的数据清洗然后按月聚合# 看看有没有缺失和重复 print(缺失值, df.isnull().sum().sum()) df df.drop_duplicates().dropna() # 按月汇总销售额 monthly df.groupby(df[order_date].dt.to_period(M))[sales_amount].sum() print(monthly)这一个区块发过去之后变量区里会出现monthly这个Series数据表格会展示月份和销售额的对照。你在下方控制台里敲一句monthly.mean()、monthly.max()也能立刻得到结果——记住了控制台跟SciView共享变量空间。最后画图monthly.plot(kindline, markero, figsize(10, 5)) plt.title(月度销售额趋势) plt.xlabel(月份) plt.ylabel(销售额)发送这个区块之后图不会弹窗弹得到处都是而是直接出现在SciView的Plots标签页里。你可以点开图、缩放、右键导出PNG整个过程就像在一个自带IDE的Notebook里干活。如果你想再试另一组参数比如把kindline换成kindbar只需要复制这个区块再改一行重新发送新旧两张图会并排出现在图表区对比起来非常直观。这背后做的事情其实很简单科学计算模式把matplotlib的图形后端接管了创建的figure自动注册到SciView图表面板。你甚至不需要写plt.show()图已经在那里等着你了。如果你习惯了Jupyter的操作这一步几乎是无缝过渡的。5. 科学模式不会告诉你的事情几个容易踩的坑用了大半年科学计算模式之后我总结出几个官网文档里不常写、但实际使用高频踩中的坑。这里一个个讲清楚帮你提前绕开。5.1 坑一Run整个文件和发送到进程是两套逻辑这是最先踩的坑也是最多人问的坑。在科学模式下你有一种执行方式是选中代码块点发送到进程另一种方式是直接点右上角的绿色运行三角Run。很多人的文件里有#%%分好的区块发送到进程跑得好好的但点了一次Run整个文件突然发现连pandas都import失败了或者报NameError: name df is not defined。原因在于Run整份文件时PyCharm是把整个文件当一个Python模块从头执行一遍执行环境和交互式进程是分开的。你在交互式进程里创建的变量只存在于那个进程的命名空间整个文件重新run的时候默认用的是全新的命名空间之前你那些手动发送的代码结果自然全没了。这跟Jupyter重启内核再全部重新运行的逻辑其实有点像只是PyCharm把这两种执行方式放得很近新手容易搞混。我的建议是既然要用科学模式就尽量统一用区块发送的方式跑。如果你确实需要整文件重跑那就从头到尾跑一遍别指望之前交互式操作留下的变量还能继续用。5.2 坑二plt.show()在某些情况下会卡住科学模式下matplotlib的backend已经变了正常画图直接发到进程就行不需要写plt.show()。但如果你之前的代码风格里习惯写plt.show()在某些版本和系统中会发现执行到这句时会弹出一个空白窗口然后卡住程序看起来像死了一样得手动关闭窗口才能继续。我实际遇到的情况是用了%matplotlib auto或者手动调整过backend之后plt.show()阻塞了blocking main processSciView图表区的图片也迟迟不出来。解决办法有两种一是直接不写plt.show()科学模式接管之后图会自动显示二是如果非要写就写plt.show(blockFalse)避免阻塞进程。5.3 坑三交互式探索后变量越堆越多内存悄悄涨科学模式用顺手之后你会忍不住在进程里反复试东试西。df1、df2、temp_df、result_2023、result_2024……这些变量全都会留在进程中。数据量小还好一旦是几千万行的DataFrame搞三五个副本内存基本当场爆炸。解决办法有两个一是养成随手清理的习惯在控制台里执行del df1, df2再用gc.collect()释放内存二是直接在SciView变量区右键选择清除所有变量把进程恢复到干净状态。我一般会在一轮探索结束、准备写正式代码前清除一次变量区防止变量引用混乱的同时也保护内存。内存这个事必须认真对待因为我真的见过同事因为变量越堆越多后面代码开始卡顿他还以为是机器性能不行结果清完变量区立刻飞起。5.4 坑四多次发送同一区块状态会不断叠加这个坑特别隐蔽。假设你有这样一个区块#%% data_list [] for x in range(5): data_list.append(x * 2)第一次发送到进程data_list是[0, 2, 4, 6, 8]如果你不改代码再次发送这个区块PyCharm会重新执行一遍但不会先清空data_list——所以结果变成[0, 2, 4, 6, 8, 0, 2, 4, 6, 8]。简单说你重复执行一个创建变量的block变量会不断累积而不是重置。这在纯Python文件整文件运行时不会发生因为每次运行模块都是新命名空间但交互式exec就是这样工作的。所以我建议在区块里尽量别写先初始化空容器再填充这种代码而是用一个明确的赋值表达式比如data_list [x * 2 for x in range(5)]。这样每次重复执行结果都是确定的不会因为执行的次数不同而状态混乱。5.5 坑五DataFrame表格预览的显示限制SciView的表格预览虽然强大但不是万能的。默认情况下它展示的列是有限制的如果表格有几十列后面的列会被折叠起来。有些场景下你可能会觉得这数据好像被截断了其实不是数据处理错了而是预览窗口的显示范围有限。遇到这种情况直接在数据表格上方的下拉框里切换列或者在控制台里用pd.set_option(display.max_columns, None)配合df.head()来查看完整内容。还有一个相关的小细节表格预览里显示浮点数时可能会隐藏掉尾数做精度判断的时候别只看预览要用df[列名].describe()或者直接取具体值看。6. 把科学模式用在AI项目里的几个进阶玩法科学计算模式完全可以当作日常AI开发工作台的核心组件来用。我这里说的AI项目不一定是几千张卡训练大模型而是更普遍的机器学习、数据处理、特征工程这类工作。这些场景下我把科学模式玩出了几个不太一样的用法。第一个用法是特征工程即时反馈流。做特征工程的时候你经常需要看某个新特征列和标签列之间的关系比如分组均值、相关系数、分布形状。在科学模式下生成一个特征、跑分组统计、画分布图三步动作可以像流水线一样在一个文件里反复执行。变量区和图表区把你每一次尝试的结果都留在那里回头写技术文档的时候直接翻记录就行比Notebook里一长串output更好追溯。第二个用法是配合远程解释器做深度学习实验。PyCharm支持远程解释器科学模式同样能用。比如你在本地打开项目解释器指向一台远程GPU服务器上的Python环境本地PyCharm就负责编辑代码、发送区块、接收SciView变量和图。训练日志、loss曲线这类matplotlib图会实时回到本地图表区变量的数值变化也一目了然。等于所有代码都在远程GPU上跑本地只承担IDE展示的工作体验非常顺滑。需要注意的是文件路径同步的问题代码里写死/home/user/data.csv之类绝对路径容易出岔子建议用相对路径或全局变量统一管理数据目录。第三个用法是配合AI辅助编码插件来提升写分析代码的效率。现在各种AI编程插件已经不少了从JetBrains官方的AI Assistant到国内的通义灵码、CodeGeeX之类都能直接在编辑器里帮你补全pandas的聚合写法、matplotlib画图代码生成复杂的数据清洗逻辑。我个人的习惯是让AI帮我写重复性高的胶水代码读表、选列、画标准图我自己的精力放在数据含义和结果判断上。比如订单按城市分布画条形图这种需求AI补全基本就是一行搞定我只需要把它跑出来再结合实际业务做判断。最后再分享一个小技巧把数据加载预处理单独放在一个#%%区块里模型实验的代码放后面。这样每次改动模型参数或者特征逻辑只要先把数据加载区块重新发送一遍后面的区块就能在统一的数据前提下反复调整不会因为改了中间变量而污染整个流程。这个习惯让我省了很多调试时间也少了很多结果对不上的痛苦。如果你之前一直在用print大法调试数据分析代码我真的建议花半小时把科学计算模式的这套工作流跑通。它不会替代Jupyter在自由探索场景下的便利性但在项目化、工程化的数据分析工作中它的价值是实打实的——至少我回不去那个控制台被print刷屏的年代了。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。