
Python 这几年几乎成了“非程序员学编程”的首选语言。很多新手在 B站、CSDN 或其他平台上看到过类似《50集Python零基础入门教程 办公自动化 数据分析 赠源码 新手必看》这样标题的资源第一反应是先存进收藏夹结果一放就是一年。其实这类课程覆盖的知识点非常一致先掌握 Python 基础语法再用 openpyxl、pandas 这些库解决实际工作里的重复劳动最后用真实数据做一次分析练习。本文就把这套学习路径浓缩成图文版教程不讲虚的从安装 Python 开始带着你装环境、写语法、处理 Excel、分析数据。看完之后你不需要再到处保存“新手必看合集”直接把下面几节代码敲一遍你就能自己写出第一个办公自动化脚本。零基础学 Python最大的问题往往不是“不懂代码”而是不知道学完一段语法后它能干什么。所以我特意把内容分成三块环境搭建、基础语法、办公自动化和数据分析实战。每一块都给完整源码和运行思路你复制粘贴就能跑。1. 为什么说办公自动化和数据分析是新手最容易上手的方向先看一个非常现实的问题一个刚学会print(hello)的人下一步该学什么如果直接去看 Flask、Django 这类 Web 框架大概率会被路由、模板、ORM 绕晕。但如果他把目标定为“帮我自动处理 Excel 里的几千行数据”那他只需要用到循环、列表、字典、文件读写、几个第三方库这些知识点刚好构成一条完整的新手学习路径。办公自动化的核心价值是替代重复劳动。日常工作中很多任务并不需要多高深的技术只是量大、繁琐。比如把十几个 Excel 表格合并成一个把多个 TXT 文件里的关键字段提取出来把一堆 CSV 按日期重命名。这些事情用鼠标一个一个点一小时就过去了。写一个 Python 脚本通常几十行代码就能解决。python 处理 Excel 用的库叫 openpyxl处理数据用的库叫 pandas它们都是目前办公自动化和数据分析领域最常用的工具。数据分析则是在办公自动化基础上更进一步。办公自动化解决的是“文件处理效率”数据分析解决的是“数据背后有什么规律”。一个典型的例子你从系统里导出全年销售明细里面有上千行订单怎么快速知道哪个月份销售最高哪个产品线贡献最大用 Excel 透视表可以做但如果数据每月更新一次你每次都手动设置透视表范围、更新图表还是会累。用 Python 写一个数据清洗和统计脚本之后每个月只要重新跑一遍结果报表自动生成。为什么要强调“赠源码”这个概念因为新手学编程最忌讳看视频只看不练。很多课程附带的源码并不是让你收藏的而是用来对照运行、断点调试、二次修改的学习材料。正确的用法是先自己照着代码手敲一遍运行报错了再看源码里的写法差异而不是直接把源码跑一遍觉得“我会了”。这也是接下来所有实战案例的设计原则——代码要能直接运行运行结果要能解释清楚。2. Python 零基础环境搭建装好 Python、VS Code 和必备库环境搭建是新手最容易卡住的地方之一。你用的操作系统可能是 Windows、macOS 或 Linux不同系统安装方式稍有差异但思路是一样的都是把 Python 解释器装到电脑上再用 IDE 或编辑器写代码。2.1 安装 Python 解释器Windows 系统安装比较直接。打开 Python 官网下载页面选择最新的稳定版安装包比如 Python 3.11 或 3.12。安装时要特别注意勾选底部的 “Add Python to PATH” 选项如果没有勾选安装后在命令行里执行 python 会提示“不是内部或外部命令”。macOS 系统通常自带 Python 2但那是系统老版本不建议直接使用。建议从官网下载安装器或者通过 Homebrew 安装brew install python3.12Linux 系统的做法类似以 Ubuntu 为例sudo apt update sudo apt install python3 python3-pip版本选择建议以稳定为主。我写这篇文章时Python 3.10、3.11、3.12 都比较常见3.8 之后的语法基本兼容。你在网上看资料时如果遇到f-string、with语句等写法Python 3.6 以上都能支持。安装完成后验证版本的方式是在命令行执行python --version如果输出类似Python 3.12.x的结果说明安装成功。注意 Windows 下有时要执行python3而不是pythonLinux 下则可能反过来这取决于系统的软链接配置。2.2 安装 VS Code 并配置 Python 环境写 Python 代码的工具有很多新手阶段最推荐 VS Code原因是免费、跨平台、插件生态强大而且占用资源比 PyCharm 小。安装 VS Code 后需要在扩展市场里安装两个插件第一个是 Python 官方插件用于语法提示和调试第二个是 Pylance提供代码自动补全和类型提示。装完后按 CtrlShiftP输入 Python: Select Interpreter选择刚才安装的解释器版本。VS Code 里新建一个后缀为.py的文件后右上角会出现一个三角运行按钮点击即可运行当前脚本。如果在终端里运行需要先进入文件目录cd /path/to/your/script python hello.py2.3 使用 pip 安装第三方库办公自动化和数据分析要用到 openpyxl、pandas、matplotlib 等库。Python 安装这些库非常简单pip 会帮我自动处理大部分依赖关系。pip install openpyxl pandas matplotlib如果你的环境里存在多版本 Python可能需要用pip3来区分。安装过程中如果遇到网络超时或下载慢的情况可以换成国内镜像源例如清华源pip install openpyxl pandas matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple安装完成后在 Python 里执行import pandas不报错就说明环境配置成功。3. Python 基础语法核心知识点从变量到函数有人会觉得 Python 语法太简单不需要系统学直接拿项目练手就能会。这个说法只适合本身有其他编程语言经验的人对真正零基础的读者来说并不可取。项目实战能帮你建立兴趣但没有语法底子遇到报错时连“哪里错了”都看不出来。这篇的基础语法主要围绕后续办公自动化和数据分析案例挑最核心的部分展开。3.1 变量、数据类型与内置函数Python 是动态类型语言变量不需要声明类型直接赋值即可# 变量与数据类型 name 小明 # 字符串类型 str age 25 # 整数类型 int salary 8500.5 # 浮点数类型 float is_student False # 布尔类型 bool print(name, age, salary, is_student) print(type(name)) # 输出 class str这里要理解一个核心概念Python 中一切皆对象。变量实际上是指向对象的引用type()函数可以查看对象类型。刚入门时不需要深挖对象模型但要养成用type()和print()调试的习惯这两个函数能帮你弄清楚程序在每一步拿到的是什么。需要重点区分列表、元组和字典。列表用中括号元组用小括号字典用大括号。# 列表 list有序可修改 fruits [苹果, 香蕉, 橙子] fruits.append(葡萄) print(fruits[0]) # 输出 苹果 # 元组 tuple有序不可修改 point (3, 5) print(point[1]) # 输出 5 # 字典 dict键值对 person {name: 小红, age: 22, city: 上海} print(person[name]) # 输出 小红办公自动化和数据分析里列表是使用最频繁的结构因为一条数据可以看作一行记录多条记录堆在一起就是二维数据。字典则常用于表示带字段名的一条记录。3.2 条件判断与循环条件判断使用if、elif、else注意 Python 用缩进表示代码块同一个代码块的缩进必须一致。条件判断在数据清洗中非常常用比如把年龄大于 60 的客户标记为“老年用户”把销售额小于 1000 的订单标记为“低价值订单”。# 判断成绩等级 score 85 if score 90: grade 优秀 elif score 60: grade 及格 else: grade 不及格 print(grade) # 输出 及格循环主要掌握for循环因为这个场景在 Excel 遍历行、遍历文件列表时无处不在。配合range()函数可以生成数字序列# for 循环遍历列表 students [张三, 李四, 王五] for stu in students: print(当前学生, stu) # 循环搭配 range for i in range(1, 6): print(第, i, 次循环)还需要掌握while循环它的特点是先判断条件再执行适合循环次数不确定的场景比如不断读取文件直到没有新内容。3.3 函数与模块如果一段逻辑要反复使用就应该封装成函数。函数用def关键字定义def calc_area(radius): 计算圆的面积 area 3.14159 * radius ** 2 return area r 5 print(calc_area(r)) # 输出 78.53975函数的核心价值是“一次定义多次调用”让代码结构更清晰。数据分析过程中清洗逻辑通常会被封装成多个函数比如clean_date()、remove_duplicates()、fill_missing()这样主流程看起来就像在读文章一样容易理解。除了自定义函数Python 还允许把代码拆分到不同文件中形成模块化结构。一个.py文件就是一个模块其他文件通过import导入。第三方库的导入方式也是如此。4. 办公自动化实战用 Python 批量处理 Excel 文件环境搭好、基础语法过了下面进入最直观的实战环节。我选了一个每天都会遇到的场景一个文件夹下有多个销售报表 Excel每个表结构相同需要把它们合并成一个总表同时做简单的格式整理。这种需求如果用 Excel 自带功能来做需要反复打开文件、复制、粘贴不仅慢还容易出错。Python 脚本可以自动遍历文件夹几秒钟完成所有合并。4.1 创建测试文件运行下面的示例前建议先在本地创建几个测试用的 Excel 文件保证目录结构统一D:/sales_data/ ├── 1月销售表.xlsx ├── 2月销售表.xlsx └── 3月销售表.xlsx每个测试文件的列结构统一为订单编号、日期、销售员、销售额。为了方便测试我们先用 openpyxl 创建三个测试文件# 文件路径create_test_data.py from openpyxl import Workbook months [1月, 2月, 3月] sales_data { 1月: [(A001, 2025-01-05, 张伟, 1200), (A002, 2025-01-12, 李娜, 800)], 2月: [(B001, 2025-02-08, 王强, 1500), (B002, 2025-02-20, 张伟, 900)], 3月: [(C001, 2025-03-03, 李娜, 2000), (C002, 2025-03-15, 王强, 1100)], } for month, rows in sales_data.items(): wb Workbook() ws wb.active ws.title 销售明细 ws.append([订单编号, 日期, 销售员, 销售额]) for row in rows: ws.append(list(row)) wb.save(fD:/sales_data/{month}销售表.xlsx) print(f已生成 {month}销售表.xlsx)openpyxl的操作逻辑比较清晰Workbook()创建工作簿active获取默认工作表append()向工作表追加一行数据最后用save()保存。上面的代码里我特意把测试数据封装成字典循环时用for month, rows in sales_data.items()同时拿到 key 和 value这是 Python 里非常实用的写法。4.2 合并多个 Excel 文件生成测试文件后合并脚本的核心思路是先用os.listdir()扫描指定目录下所有.xlsx文件再逐个用openpyxl打开文件读取前几行或全部数据然后用append()写入目标文件。注意要跳过表头同时记录每个文件的来源方便后续追踪。# 文件路径merge_excel.py import os from openpyxl import Workbook, load_workbook source_dir D:/sales_data output_file D:/sales_data/全年汇总.xlsx # 创建目标工作簿 wb_output Workbook() ws_output wb_output.active ws_output.title 全年汇总 ws_output.append([订单编号, 日期, 销售员, 销售额, 来源文件]) # 遍历目录下所有 xlsx 文件 for filename in os.listdir(source_dir): if not filename.endswith(.xlsx) or filename.startswith(~$): continue if filename 全年汇总.xlsx: continue file_path os.path.join(source_dir, filename) wb_read load_workbook(file_path) ws_read wb_read.active # 按行读取数据从第 2 行开始跳过表头 for row in ws_read.iter_rows(min_row2, values_onlyTrue): ws_output.append(list(row) [filename]) print(f已合并 {filename}) wb_output.save(output_file) print(合并完成文件保存在, output_file)代码中有几个细节值得注意。第一os.listdir()会返回目录下所有文件名包括 Excel 临时文件这些临时文件名通常以~$开头所以代码里要判断过滤。第二iter_rows(min_row2, values_onlyTrue)表示从第二行开始按行读取返回的是元组values_onlyTrue参数能把单元格对象转换成实际值否则拿到的是一堆Cell对象。第三文件里可能包含你已经生成的汇总文件所以判断输出文件名跳过避免重复合并。4.3 运行与验证在命令行执行脚本python merge_excel.py正常情况下终端会依次打印已合并 1月销售表.xlsx 已合并 2月销售表.xlsx 已合并 3月销售表.xlsx 合并完成文件保存在 D:/sales_data/全年汇总.xlsx打开汇总文件后可以看到表格前四列是原始销售数据第五列是来源文件。这种“保留来源标识”的方式在实际工作中非常有用当后面数据核对出问题时你能快速定位到具体是哪个月的文件出了问题。4.4 扩展到 CSV 和 TXT除了 xlsxCSV 文件也是办公自动化的常见对象。CSV 本质是逗号分隔的纯文本文件读取时不需要openpyxl标准库里的csv模块就能搞定。批量合并 CSV 文件的思路与上面类似只是读取方式不同import csv import os source_dir D:/csv_data output_file D:/csv_data/合并结果.csv with open(output_file, w, newline, encodingutf-8) as f_out: writer csv.writer(f_out) for filename in os.listdir(source_dir): if not filename.endswith(.csv): continue file_path os.path.join(source_dir, filename) with open(file_path, r, encodingutf-8) as f_in: reader csv.reader(f_in) for row_index, row in enumerate(reader): if row_index 0 and filename ! 合并结果.csv: continue # 跳过每个文件的表头 writer.writerow(row)需要注意的是 CSV 文件读取时容易遇到编码问题。Excel 导出的 CSV 文件经常是 GBK 编码而 Python 默认用 UTF-8 读取这时需要把encodingutf-8换成encodinggbk否则会报UnicodeDecodeError。更稳妥的方案是先尝试 UTF-8失败了再用 GBK。这个思路同样适用于open()读取任何文本文件。5. 数据分析实战从 Excel 到统计报告办公自动化解决完“数据怎么整理”的问题下一步就是“整理完的数据怎么分析”。本文以 pandas 为核心从读取 Excel 开始完成数据清洗、统计分析和基础可视化。pandas 这类库的行列操作比 Excel 更灵活脚本化之后可以做到“数据一更新报表自动算”。5.1 用 pandas 读取 Excel 数据pandas 的read_excel()方法可以直接读取 xlsx 文件比 openpyxl 更简洁# 文件路径analysis_demo.py import pandas as pd df pd.read_excel(D:/sales_data/全年汇总.xlsx) print(df.head()) # 默认展示前 5 行 print(df.info()) # 查看数据类型和缺失情况 print(df.describe()) # 数值列统计描述df.head()的输出能帮你快速确认数据加载正确。df.info()会显示每一列的名称、非空值数量和数据类型这是数据清洗的第一步参考。pandas 中最重要的数据类型是 DataFrame它就像一张内存中的表格。DataFrame 有行索引index和列名columns两个维度通过这两个维度可以对数据进行任意筛选。5.2 数据清洗处理缺失值和重复值实际拿到的数据往往并不干净。部门导出的 Excel 里可能有空单元格、重复行、日期格式不统一等问题。pandas 提供了专门的方法处理这些场景# 假设已经读取了 df # 查看缺失值 print(df.isnull().sum()) # 删除所有字段都为空的行 df_dropna df.dropna(howall) # 删除某一列为空的行 df_clean df_dropna.dropna(subset[销售额]) # 去除重复记录 df_clean df_clean.drop_duplicates(subset[订单编号]) # 重置索引 df_clean df_clean.reset_index(dropTrue) print(df_clean.shape)数据清洗的通用流程是先看缺失再查重复最后调整数据类型。dropna的howall参数表示只有当整行所有字段都为空时才删除这个逻辑在实际业务中更安全不会把包含有效信息的行误删。subset参数指定判断缺失的列范围。处理日期列也是常见需求比如把字符串2025-01-05转换成 datetime 类型方便按月筛选df_clean[日期] pd.to_datetime(df_clean[日期]) df_clean[月份] df_clean[日期].dt.month print(df_clean.head())5.3 分组统计与透视分析数据清洗干净后开始做“销售员销售额汇总”“月度销售额统计”这类问题。pandas 的groupby()是实现分组聚合的核心方法# 按销售员统计总销售额 sales_by_person df_clean.groupby(销售员)[销售额].sum() print(sales_by_person) # 按月份统计销售额 sales_by_month df_clean.groupby(月份)[销售额].sum() print(sales_by_month) # 统计每个销售员的订单数和平均销售额 person_stats df_clean.groupby(销售员).agg( 订单数(订单编号, count), 总销售额(销售额, sum), 平均销售额(销售额, mean) ).reset_index() print(person_stats)agg()方法可以利用字典或命名参数同时做多种聚合计算。上面的代码用了 pandas 新的命名聚合写法在 pandas 0.25 之后的版本都支持。reset_index()的作用是把分组字段从索引位置还原成普通列方便后续保存到 Excel。如果想做类似 Excel 透视表的多维分析可以用pivot_table()# 透视表行是月份列是销售员值是销售额 pivot pd.pivot_table( df_clean, values销售额, index月份, columns销售员, aggfuncsum, fill_value0 ) print(pivot)5.4 保存结果到 Excel分析结果只打印在终端里还不够通常需要保存成 Excel 或 CSV 文件发给同事或做成日报。pandas 可以直接保存 DataFrame# 保存成一个带多个 sheet 的报告文件 with pd.ExcelWriter(D:/sales_data/销售分析报告.xlsx) as writer: person_stats.to_excel(writer, sheet_name销售员统计, indexFalse) sales_by_month.to_excel(writer, sheet_name月度统计) pivot.to_excel(writer, sheet_name透视表)运行这个文件后生成的 Excel 会包含三个工作表打开后可以直接给上级汇报。从这个案例中能明白为什么“数据分析”和“办公自动化”经常被放在一起讲前者需要从后者整理出来的数据中提炼价值后者的脚本又可以对前者实现自动化更新。5.5 用 matplotlib 做简单可视化文字数据不够直观时可视化是必须的。matplotlib 是 Python 基础的绘图库pandas 的绘图功能底层也依赖它。下面画一个简单的月度销售额折线图import matplotlib.pyplot as plt # 让图片支持中文显示 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False sales_by_month.plot(kindline, markero, title月度销售额趋势) plt.xlabel(月份) plt.ylabel(销售额) plt.savefig(D:/sales_data/month_sales.png) plt.show()中文显示是新手最容易踩的坑。matplotlib 默认字体里不包含中文字符如果不设置font.sans-serif图上的中文会显示成方框。不同操作系统的字体名称不一样Windows 一般用SimHeimacOS 可用Arial Unicode MS或PingFang SCLinux 可以尝试WenQuanYi Micro Hei。6. Python 新手常见的报错与排查思路代码写得越多遇到的报错越多样化。有些错误是语法层面的有些是环境配置问题有些是数据类型不对。这里总结零基础阶段出现频率最高的几类报错每类给出原因和解决方法。报错现象常见原因解决思路ModuleNotFoundError: No module named xxx没有安装对应第三方库或安装到了其他 Python 环境执行pip install xxx用 VS Code 切换解释器执行pip list确认安装NameError: name xxx is not defined变量名拼写错误或在函数外使用了函数内部变量检查变量拼写查看变量是否在函数外部定义IndexError: list index out of range访问列表索引超过了列表长度打印 list 长度使用len()判断后再访问TypeError: can only concatenate str (not int) to str用拼接了字符串和数字用str()转换数字或使用 f-stringUnicodeDecodeError读取文件时编码与文件实际编码不一致把encodingutf-8换成encodinggbk或用二进制模式读取FileNotFoundError文件路径写错或路径中含有中文字符导致转义问题使用绝对路径路径前加r原始字符串PermissionError文件被 Excel 或其他程序占用先关闭正在打开该文件的程序检查文件是否被锁定SyntaxError: invalid syntax中英文标点混用、缺少冒号、缩进错误检查代码中标点是否为英文格式确认 if/for 后加冒号下面详细讲两种处理思路。6.1 路径与转义问题Windows 系统的路径分隔符是反斜杠\但 Python 字符串里反斜杠是转义符所以直接写D:\sales_data\file.xlsx时\s可能会被解析成特殊字符。两种推荐写法一是字符串前面加r表示原始字符串二是把反斜杠替换成正斜杠/。# 推荐写法 path1 rD:\sales_data\file.xlsx path2 D:/sales_data/file.xlsx6.2 虚拟环境问题新手经常遇到“明明在终端里pip install成功到 VS Code 里运行却提示 ModuleNotFoundError”的情况。这是因为电脑里可能同时存在多个 Pythonpip 默认安装到其中一个而 VS Code 当前使用的是另一个。解决方案是使用 Python 虚拟环境。在项目目录执行python -m venv venvWindows 激活虚拟环境venv\Scripts\activatemacOS 或 Linux 激活source venv/bin/activate激活虚拟环境后终端提示符会多出一个(venv)前缀此时再执行pip install和python xxx.py两者就会指向同一个 Python 环境依赖混乱的问题基本不会再出现。7. 新手必看的源码阅读方法和最佳实践刚才提到“赠源码”对零基础新人来说源码不是收藏品而是练习的参考答案。拿到一套 Python 入门源码盲目从头读到尾效率很低更推荐的阅读顺序是先运行一遍看整体输出或界面效果。从程序入口开始读通常是if __name__ __main__:下面的部分。把主流程里的每个函数标记出来逐层往下看。不要急于理解每一行先抓住循环、条件、数据处理这三类逻辑。用print()在关键位置输出中间变量观察程序执行过程。自己修改一个小功能比如把输出目录改掉、把统计维度换掉。按照这个方式练习一篇源码效果比把源码抄三遍都要好。7.1 工程建议把脚本当作小型项目管理即使只是处理一个 Excel 文件也要养成良好的编码习惯。办公自动化脚本虽然短但如果以后要维护你就需要想清楚几个问题输入文件放在哪里输出文件放在哪里临时文件能不能自动清理代码里有没有硬编码路径。具体建议如下项目目录固定结构input/放原始文件output/放结果文件scripts/放代码。代码开头集中定义变量和路径不要散落在代码各处。Excel 文件处理前先备份原文件尤其是需要覆盖原文件的场景。批量操作时打印日志记录每个文件是否处理成功、跳过了哪几个文件。涉及删除、覆盖或修改原文件的操作先在测试数据上验证。# 推荐的脚本结构 import os from openpyxl import load_workbook INPUT_DIR D:/sales_data/input OUTPUT_DIR D:/sales_data/output LOG_FILE D:/sales_data/process.log def log_message(msg: str) - None: with open(LOG_FILE, a, encodingutf-8) as f: f.write(msg \n) print(msg) def process_one_file(filename: str) - bool: # 处理单个文件 pass7.2 数据安全与权限思维办公自动化脚本一旦接管日常任务就必须重视数据安全。一个删除操作可能需要覆盖几十个文件如果代码有 bug后果比手动操作严重得多。所以无论是处理 Excel 还是调用数据库都要遵守一个底线不修改原始文件不做无备份的批量删除不对生产数据执行未验证的操作。实际操作中建议采用三个层次保护数据第一层代码运行前用shutil.copy()把原文件备份到一个backup/目录。第二层涉及更新和删除逻辑时先输出日志说明“将要更新哪些行”确认无误后再真正执行写操作。第三层操作生产环境或敏感数据前在测试环境复制一份数据做验证使用最小权限的账号运行脚本。很多办公自动化教程容易忽略这一点但真正在工作中写过脚本的人都知道批量修改带来的风险是真实存在的。7.3 编码与命名规范Python 官方推荐使用 PEP 8 编码规范但这对于零基础新手来说不用背全部规则。一开始只要做到最基本的几点即可变量名使用小写字母加下划线函数名也遵循相同规则常量用大写每个函数写一行 docstring 说明用途。这类习惯能让你两个月后回看自己的代码时不至于完全看不懂。# 不推荐的命名 a 张三 x df.groupby(销售员)[销售额].sum() # 规范的命名 sales_name 张三 sales_by_person df.groupby(销售员)[销售额].sum()8. 从入门到实战一份可以跟着练的学习路线零基础到能独立做办公自动化和数据分析需要一定时间的刻意练习。这条路线不需要你上来就看完整本 Python 教程书正确做法是“边做边补、以练带学”。下面按阶段列一个比较可行的计划每个阶段都对应一套明确产出。8.1 第一阶段语法功底约 1-2 周这一阶段不需要碰任何第三方库专心跑代码。每天抽 40 分钟做以下练习变量和基础类型定义一个变量存储自己的名字、年龄、城市并用 f-string 格式化输出。条件判断写一个函数根据考试成绩返回“优秀/良好/及格/不及格”。for 循环和列表生成 1 到 100 的偶数列表计算总和。字典操作创建一个小型通讯录支持新增联系人、查找联系人。函数封装把上面的功能封装成函数并调用。每天的练习代码建议保存成独立.py文件文件名使用描述性名称比如05_even_sum.py。这些代码就是你的第一份“源码库”不需要多高深但记录了你从零到一的成长。8.2 第二阶段办公自动化入门约 2 周第一次真正体会到“写代码解决工作问题”的阶段。学习目标是熟悉openpyxl、os、shutil三个模块的常用功能。练习 1统计一个 Excel 文件里有多少行、多少列并打印每一行数据。练习 2把多个文本文件合并成一个 Excel每个文件的文件名作为一列。练习 3把一个文件夹下的所有.jpg图片复制到新目录并统一重命名为图片001.jpg的格式。这类练习题网上有很多变体核心都是围绕“遍历目录、读取文件、处理数据、输出结果”这四个步骤。8.3 第三阶段数据分析入门约 2-3 周熟悉 pandas 之后可以找一个自己感兴趣的日常数据做练习。比如导出微信或支付宝的年度账单 CSV 文件。用 pandas 统计支出最多的前 10 个商家。按月份统计线上消费金额变化趋势并用 matplotlib 画折线图。分析消费日期的星期分布找出自己最容易“冲动消费”的星期几。真实的个人数据比教学数据更能激发学习动力分析结果里可能会发现一些自己都没注意到的生活习惯。这就是数据分析的价值不是炫技而是通过数据发现规律辅助做决策。8.4 第四阶段综合项目和源码扩展把办公自动化和数据分析串起来的综合项目可以设计成“每个工作日自动生成前一天的销售日报”。需求拆解如下自动扫描某个业务系统导出的原始数据文件。使用 pandas 清理数据并计算当日关键指标。使用 openpyxl 生成日报 Excel并设置简单格式。自动使用 smtplib 把报告发送到指定邮箱。这个项目会用到模块化编程思想也是很多针对初学者设计的付费课程里的经典毕业设计。如果能把整个项目独立做出来自己会获得很强的成就感也说明知识已经成体系了。9. 给零基础学习者的几个心里话教程资源永远看不完代码也永远敲不完。你收藏的 50 集视频、几十份源码如果没有动手敲过一遍那它们就只是网盘里的文件。真正有效的学习闭环是这样的先看某个功能的效果产生兴趣再看不大于 20 行的核心示例弄懂大致思路然后关掉示例代码凭记忆自己实现一遍遇到报错时带着问题回看教程最后把调试通过的代码保存下来并在注释里记录排错过程。如果你真的照着这个步骤把文章里的三个实战脚本都运行了一遍从创建测试 Excel 到合并文件再到用 pandas 输出统计分析和可视化图片那你就已经不再是“零基础”了。你已经具备了把重复工作“外包”给代码的能力。剩下要做的事情很简单找一个自己最烦的重复表格任务写一个脚本代替它。下一篇可以尝试的内容有两个方向一是深入 openpyxl学习如何在 Excel 中设置单元格格式、边框、字体以及插入图表把自动化报告做得更精致二是学习 SQL 基本语法因为 Pthon 数据分析遇到超过百万行数据时pandas 的内存占用会很高这时数据库配合 Python 才是更合理的技术选型。先把基础打牢再往更深处走。