ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Python实验报告实战:从环境配置到数据分析可视化

Python实验报告实战:从环境配置到数据分析可视化 最近帮几个学弟学妹看Python实验报告说句实话大部分人写的不是实验报告而是代码粘贴作业。项目标题是python实验报告听起来像学校布置的普通作业但真正把它写好的人不多。我前阵子刚完成一份数据分析方向的Python实验从选题、装环境、写代码到排版打印里里外外折腾了三天踩了无数坑。这篇文章就把我完整踩坑和整理报告的过程分享出来适合正在写Python实验报告、或者想从零开始做一个小项目练手的同学参考。我特别想强调一下实验报告不是代码的堆叠而是一个让别人能复现你思路的工程文档。你选了什么题目、为什么选这个题目、环境怎么搭、代码为什么这么写、运行结果说明了什么、遇到报错怎么解决这些才是实验报告真正值钱的部分。下面的内容我会拿一份我自己写过的电商订单数据分析与可视化实验作为案例把整个流程拆开揉碎保证你看完能直接照着写。1. 先搞清楚实验报告到底要写什么选题与整体设计1.1 实验题目怎么定别再用Python程序设计这种泛题很多人的实验报告题目是Python语言实验Python程序设计基础一看就是从教学大纲里抄的。这种题目不是不行而是太宽泛了老师看完第一眼就失去兴趣你自己写着也没方向。我自己的经验是实验报告一定要围绕一个有数据、有处理、有输出的具体任务。比如我做的是电商订单数据的分析与可视化题目稍微长一点没关系但要能一眼看出你做了什么。为什么选这个题目三个原因数据容易获取甚至自己可以生成一份模拟订单数据实验过程完全可控涉及的知识点覆盖面广包括列表、字典、文件读写、Pandas数据处理、Matplotlib可视化都是Python基础阶段必须掌握的内容结果直观柱状图、饼图、折线图一出来报告的观感立刻不一样在评分上是很加分的。如果你正在发愁选题可以从这几个方向里挑一个数据分析与可视化、爬虫数据清洗、小游戏开发比如猜数字、四叶草绘图、自动化办公批量处理Excel、量化交易策略回测仅做数据回放不涉及真实交易。每个方向都能做出丰富的实验报告关键是不要贪大实验范围控制在一个核心任务上比如读取CSV文件-清洗数据-按类别统计-画三张图这样一个闭环就够了。1.2 实验目的和内容拆解宁可多写十行不写一句空话实验目的不是抄课本上的巩固Python基础知识而是要写得可衡量、可复现。我看过一份写得比较好的报告它的实验目的长这样掌握使用Pandas读取CSV文件、查看数据基本信息、处理缺失值的方法掌握数据分组与聚合操作能按商品类别、月份维度统计销售额和订单量掌握Matplotlib绘制柱状图、折线图和饼图的基本语法并能对图表进行中文字体配置能够根据图表结果输出清晰的数据分析结论和改进建议。每一条都是动词具体工具可验证结果这才叫实验目的。后续的实验内容也建议直接和目的一一对应数据准备、数据清洗、数据统计、数据可视化、结论分析。这样整个实验报告的逻辑链条就非常清楚先说明要做什么接着展示怎么做最后说明结果是什么。1.3 报告整体结构先行规划先建框架再填肉写实验报告最忌讳的是代码写完了、结果跑出来了才开始拼报告。我在动手之前会先在空白文档里列一个结构草案实验名称与实验环境实验目的实验内容与步骤核心代码与运行结果实验结果分析与结论实验心得与遇到的问题别小看这个框架它决定了你后续写作的效率。你在写代码、调参数、遇到报错的时候脑子里要有一个哪些内容将来要放进哪个章节的意识。比如我在调试Matalb不是是Matplotlib中文乱码时就顺手把报错信息、解决过程、最终代码都记在一个临时文档里后面写实验心得的时候直接用不用重新靠回忆省了很多时间。2. 别在环境配置上浪费时间Python安装与开发环境实操2.1 Python下载安装一个勾选项没选后面全是眼泪先说安装。如果你用的是Windows最常踩的坑就是安装Python时没有勾选Add Python to PATH。这个意思是把Python加入系统环境变量没勾选的话你在命令行输入python会出现不到“python不是内部或外部命令”的错误。我的建议是到官网下载Python 3.10或者3.11版本别急着上最新版3.12因为部分第三方库的兼容性有时候跟不上。双击安装包后一定要注意勾选Add Python to PATHInstall for all users可选但省心装完后打开命令行输入python --version如果能输出版本号说明安装成功。如果提示不是内部命令多半是环境变量没配好。Windows的解决方案是设置 - 系统 - 关于 - 高级系统设置 - 环境变量 - Path - 新建把Python的安装目录和Scripts目录添加进去比如C:\Python311 C:\Python311\Scripts然后重新打开命令行。在Linux系统上安装Python则简单得多不管是用apt、yum还是源码编译装完基本都在PATH里。但Linux自带的Python版本可能偏低建议用pyenv或者conda管理版本避免系统Python被搞乱。2.2 开发环境选择VSCode和PyCharm哪个更省心个人体验是如果电脑配置一般推荐VSCode如果你希望开箱即用推荐PyCharm Community版。VSCode的优势是轻量但需要自己配置Python解释器。经常有同学在VSCode里写完代码一运行就报错说找不到Pandas原因通常是VSCode里选择的Python解释器和终端里用的Python不是同一个。我自己在VSCode里的标准配置流程是安装Python扩展CtrlShiftP打开命令面板输入Python: Select Interpreter选择你希望使用的那个Python环境新建一个终端再次确认终端里输入python --version显示的应该和解释器一致。如果你创建了虚拟环境建议在项目根目录下新建.vscode文件夹里面放一个settings.json把解释器路径固定下来{ python.defaultInterpreterPath: .venv/Scripts/python.exe, python.terminal.activateEnvironment: true }这样做的好处是哪怕你以后重新打开项目解释器都不会跑偏。之前在配置Python环境的时候很多同学遇到过这样一个报错cannot be resolved against python helper roots。这个报错很抽象我排查了半天发现就是VSCode的Python扩展找不到解释器目录。解决办法是先确认Python安装路径存在再在VSCode里重新选择解释器最后重载窗口。如果还没解决就把.vscode目录下的配置清理干净重新设置。2.3 第三方库安装pip慢、找不到包、装不上怎么办这次实验需要用到的库是numpy、pandas、matplotlib。很多人上来就是pip install pandas然后卡死或者慢到怀疑人生。这时不要硬等换成国内源就好。我习惯用清华源pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple也可以设置成默认源减少每次敲参数pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple如果你要装的包名不确定也很容易踩坑。比如有同学问我“python下载cv2”然后直接pip install cv2结果报错找不到cv2。那是因为OpenCV的包名是opencv-python安装命令是pip install opencv-python类似的情况还有Pillow而不是PILbeautifulsoup4而不是bs4requests就是requests。安装任何第三方库之前先去PyPI搜索确认包名别凭感觉。2.4 虚拟环境强烈建议每个实验项目单独隔离学生写实验报告我觉得最容易被忽略的就是虚拟环境。你可能会在同一个Python里装了几十个包今天这个实验装个OpenCV明天那个实验装个TensorFlow时间久了依赖冲突会让你崩溃。我的习惯是每个实验项目都创建独立虚拟环境python -m venv venvWindows激活venv\Scripts\activateLinux/macOS激活source venv/bin/activate激活后命令行会多一个(venv)前缀之后pip install的包只会装到这个环境里不影响全局环境。写实验报告时在实验环境部分写下Python版本和主要库版本别人复现起来也非常方便。3. 实验核心代码与结果分析以电商数据可视化为例3.1 数据准备没有现成数据自己造一份可复现的数据我这次实验没有现成的订单数据最简单的方式是自己生成一份。为了让实验报告可复现我设置了随机种子这样不管谁运行生成的数据都是一样的。下面是生成订单数据的代码我把它写成一个脚本import csv import random from datetime import datetime, timedelta random.seed(42) # 商品类别和城市 categories [手机数码, 家用电器, 服饰鞋包, 美妆护肤, 食品生鲜] cities [北京, 上海, 广州, 深圳, 杭州] # 生成1000条订单 with open(orders.csv, w, newline, encodingutf-8) as f: writer csv.writer(f) writer.writerow([订单编号, 下单日期, 城市, 商品类别, 销售额, 数量]) for i in range(1, 1001): order_id fORD{i:04d} # 随机日期2024年1月1日到6月30日 start datetime(2024, 1, 1) order_date start timedelta(daysrandom.randint(0, 180)) city random.choice(cities) category random.choice(categories) amount round(random.uniform(20, 2000), 2) quantity random.randint(1, 5) writer.writerow([order_id, order_date.strftime(%Y-%m-%d), city, category, amount, quantity]) print(模拟订单数据生成完成共1000条。)为什么设置random.seed(42)因为实验报告里如果每次运行数据都不一样那你的分析结果也每次不一样。固定种子可以保证任何人运行同一个脚本都能得到相同结果这对于实验的可复现性非常重要。3.2 数据读取与清洗拿到数据先看结构、查缺失、处理异常读取数据是Pandas的拿手好戏import pandas as pd df pd.read_csv(orders.csv, encodingutf-8) print(df.head()) print(df.info())输出类似订单编号 下单日期 城市 商品类别 销售额 数量 0 ORD0001 2024-05-18 上海 服饰鞋包 986.41 3 1 ORD0002 2024-01-12 广州 美妆护肤 1235.73 2 ...df.info()会显示每列类型和缺失值数量。如果是真实数据清洗阶段至少要做三步删除重复订单号处理销售额小于等于0的异常记录把下单日期转为datetime类型方便按月统计。# 删除重复订单 df df.drop_duplicates(subset订单编号) # 过滤异常销售额 df df[df[销售额] 0] # 日期转换 df[下单日期] pd.to_datetime(df[下单日期]) print(数据清洗完成剩余记录数, len(df))清洗这一步不能省略直接读数据、直接画图如果报告的数据本身有问题分析结果完全不可信。这也是实验报告评分时老师非常看重的一个环节。3.3 数据统计分组聚合是最核心的操作接下来统计各商品类别的销售额占比、各城市订单量以及每月销售额变化趋势。# 按商品类别统计销售额 category_sales df.groupby(商品类别)[销售额].sum().sort_values(ascendingFalse) print(category_sales) # 按城市统计订单量 city_orders df[城市].value_counts() print(city_orders) # 按月统计销售额 df[月份] df[下单日期].dt.to_period(M) monthly_sales df.groupby(月份)[销售额].sum() print(monthly_sales)这段代码的输出结果就是后续图表的底层数据来源。需要注意的是groupby后索引是分组字段如果你想把索引变成普通列可以用.reset_index()。在实验报告中贴运行结果时我会建议不要把控制台原始输出全部贴上去而是整理成表格形式比如商品类别销售额元占比手机数码251234.5626.3%家用电器234567.8924.5%这样老师一眼就能看懂不用去数控制台的空格。3.4 可视化Matplotlib画三张图顺便解决中文乱码画图之前先做字体设置。如果不设置图里的中文会变成一个个方框。Windows下常用的黑体是SimHeiMac/Linux可以用import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False注意axes.unicode_minus要设为False否则坐标轴的负号会显示异常。先画一张各品类销售额柱状图plt.figure(figsize(10, 6)) category_sales.plot(kindbar, colorskyblue) plt.title(各商品类别销售额对比) plt.xlabel(商品类别) plt.ylabel(销售额元) plt.xticks(rotation45) plt.tight_layout() plt.savefig(category_sales.png, dpi300) plt.show()这里我用savefig先保存图片再show。如果你先show再savefig保存出来的图片可能是空白或丢失内容的。接着画每月销售额折线图看趋势plt.figure(figsize(10, 6)) monthly_sales.plot(markero, colororange) plt.title(2024年上半年月度销售额趋势) plt.xlabel(月份) plt.ylabel(销售额元) plt.grid(True, linestyle--, alpha0.6) plt.tight_layout() plt.savefig(monthly_sales.png, dpi300) plt.show()再画一张城市订单量占比饼图plt.figure(figsize(8, 8)) plt.pie(city_orders, labelscity_orders.index, autopct%.1f%%, startangle90) plt.title(各城市订单量占比) plt.axis(equal) plt.tight_layout() plt.savefig(city_orders.png, dpi300) plt.show()三张图做完报告的可视化部分就很充实了。但我还要多说一句图表只是展示形式报告的核心在于你怎么解读它。不要只贴图下面至少写两三句话说明从图中可以看出什么、为什么会这样、有什么建议。比如从订单量饼图中看出上海订单占比最高可以进一步分析是否与促销活动、人口密度有关对后续运营提出建议。3.5 分析结论怎么写从看到了到建议做实验报告里最容易被忽略的就是结论。很多人写从图中可以看出手机数码销售额最高然后就没有了。这不算分析充其量是看图说话。我会这样写手机数码品类销售额最高约占总销售额的26%说明该品类是店铺的核心收入来源建议保持货源稳定并针对手机配件等关联商品做捆绑推荐月度销售额在3月和6月出现两个小高峰可能与季节促销有关后续可以结合具体营销活动日期进行交叉验证上海和北京两个城市的订单量合计占比超过40%建议针对一线城市用户推出同城达服务同时关注三四线城市的增长潜力。这些结论不需要多高深但一定要紧扣图表数据并且给出可执行的建议。这也是实验报告加分的关键。4. 实验报告避坑指南从报错到排版的完整实录4.1 pip安装报错与国内源配置速查我在配置环境过程中遇到最典型的几个报错整理成表格方便你直接对照报错信息原因解决办法Could not find a version that satisfies the requirement cv2包名错误OpenCV包名是opencv-pythonpip install opencv-pythonReadTimeoutError / Connection timeout网络问题加国内源如清华源或者pip install xxx --default-timeout100PermissionError: [WinError 5]权限不足命令行以管理员身份运行或加--userCannot uninstall numpynumpy版本冲突pip install --ignore-installed numpy pandas国内源不是只有清华阿里、豆瓣、中科大也有但我觉得清华源稳定性和速度都不错。如果你在Linux下安装系统级Python包遇到权限问题用pip install --user可以装到当前用户目录避免污染系统环境。4.2 VSCode解释器和路径问题那个奇怪的报错怎么解决cannot be resolved against python helper roots这个报错我在网上搜到最靠谱的解决路径是打开VSCode设置搜索python.defaultInterpreterPath填写一个绝对路径比如C:\Python311\python.exe再搜索python.analysis.extraPaths把项目目录或虚拟环境site-packages加进去保存设置后CtrlShiftP运行Developer: Reload Window。如果这样还不行就去扩展商店把Python扩展卸载重装一遍。很多时候不是配置问题而是扩展本身有点抽风。另外VSCode终端运行代码时如果提示ModuleNotFoundError: No module named pandas但你在左侧选择解释器时明明选了有pandas的环境原因是终端没有激活对应的虚拟环境。处理方法是在VSCode里重新创建终端或者手动执行# Windows venv\Scripts\activate # Linux/macOS source venv/bin/activate激活后终端前缀会变化这时运行代码就不会找不到包了。4.3 Matplotlib中文乱码、图例不显示、保存空白中文乱码是实验报告最常见的危机。我总结的经验是Windows系统优先用SimHei一般设置后立刻生效Mac系统字体名可能是Arial Unicode MS或者PingFang SC可以逐个测试Linux服务器上没有中文字体画图时可以用一个万能方案用英文标签然后在报告正文里用中文解释。这不丢人反而显得你处理得灵活。如果设置了字体仍然乱码大概率是字体缓存问题可以删除用户目录下的.matplotlib/font_list*.json缓存文件重启再试。图例不显示常见原因是plt.legend()用在了图表绘制之前或者图表的label没设置。记住每个plot、bar、pie都需要在对应函数里设置label参数最后才能用legend。保存图片空白我踩过一次坑。当时我在show之后才调用savefig结果因为show会创建新图导致savefig保存的是空画布。正确写法是savefig放在show之前。我习惯把保存操作用一个变量控制比如设置dpi300保存png或jpg。4.4 实验报告排版技巧让老师一眼看懂你的工作量代码截图不是不行但一张超长的代码截图放在Word里不仅模糊还容易显得不专业。我建议代码用等宽字体比如Consolas字号比正文小一号可以用代码块形式直接插入Word运行结果尽量整理成表格别直接贴控制台图表统一编号加上图题比如图1 各商品类别销售额对比在报告开头加一段实验环境写上操作系统、Python版本、编辑器、主要第三方库版本这样别人能直接复现。一个简洁的实验环境表格可以长这样项目版本/说明操作系统Windows 11 / Ubuntu 22.04Python3.11.7编辑器VSCode Python扩展pandas2.2.0matplotlib3.8.3numpy1.26.44.5 调试心得把报错过程写进报告反而更亮眼有一个容易被忽视的技巧最优秀的实验报告不是所有地方都顺顺利利跑通的报告而是记录了关键报错和解决过程的报告。比如我会在实验心得部分写初次运行matplotlib画图时图内中文显示为方框。我查阅文档后确认是默认字体不支持中文通过在代码中设置plt.rcParams[font.sans-serif] [SimHei]解决。这让我意识到环境配置是实验的重要组成部分不能轻视。这种内容既真实又专业还展示了你的问题排查能力。老师看到这样的心得通常比看到我学会了Python要欣慰得多。5. 结语实验报告的真正价值在于可复现、有思考说实话写一份能拿出手的Python实验报告核心就两点一是让读者能照着你的步骤把结果跑出来二是让读者看到你对结果的思考。前者靠环境记录、代码完整性、图表规范来保证后者靠数据分析结论和问题排查过程来体现。我个人实操中的体会是不要为了写报告而写报告把它当作一次小小的项目复盘。你在这个实验里选了哪个数据集、为什么这样清洗、图表里哪些信息最有价值、踩过的坑怎么解决这些内容比一段运行完美的代码更有分量。后续如果时间充裕你还可以在此基础上扩展比如用爬虫获取真实网页数据、把多张图整合成一份PDF报告、利用Flet做一个简单的可视化界面。这些方向都能让同一个实验内容长出新东西。最后再分享一个小技巧每次写完实验报告自己从头到尾复现一遍打开全新的命令行按报告里的步骤一步步执行。如果哪一步缺失、哪个参数不对马上就能发现。你替读者先踩一遍坑你的报告自然就不会差。
返回列表