✨前言:老板的"灵魂拷问"
事情是这样的,某天老板突然丢过来一个Excel表格,拍着桌子说:
"小李,这个Excel里几千行数据,你给我整理一下,明天早上要用!"
我当时差点没把手里的奶茶喷出来,心想:几千行?手动改?我这怕不是得改秃了!
于是,我默默打开了我的Python神器------pandas
和openpyxl
,不到十分钟,任务搞定,潇洒下班。老板看着整齐的数据,眼里透着光,转头又给我派了个新活儿......
既然自动化办公这么香,那今天就给大家分享20个超实用的Excel操作脚本,让你轻松搞定表格数据处理,成为职场效率王!💡
在学习技能之前确保电脑里已经安装了pandas
和openpyxl
这2个必备神器!
pip install pandas openpyxl
🔢 1. 读取Excel文件
python
import pandas as pd
# 读取Excel
df = pd.read_excel("data.xlsx")
print(df.head()) # 查看前5行数据
💡 用途:打开Excel文件,读取数据,如果Excel中多个Sheet里都有数据,默认获取第一个Sheet里的数据。
🔢 2. 保存Excel文件
python
df.to_excel("output.xlsx", index=False)
💡 用途 :保存DataFrame格式数据为Excel文件,index=False
表示不保存索引。
🔢 3. 读取多个Sheet
python
df_dict = pd.read_excel("data.xlsx", sheet_name=None) # 读取所有Sheet
print(df_dict.keys()) # 打印所有Sheet名称 比如 dict_keys(['Sheet1', 'Sheet2'])
# 遍历df_dict打印出所有的数据
for key in df_dict:
print(df_dict[key]) # 根据key值获取df_dict中存放的dataframe格式数据
💡 用途:一次性读取多个Sheet,返回字典格式,这个字典value对应了一个Dataframe格式的数据。
🔢 4. 选取特定列
python
selected_columns = df[["姓名", "工资"]]
print(selected_columns.head())
💡 用途:提取某些关键列,方便分析。
🔢 5. 过滤数据
python
high_salary = df[df["工资"] > 10000] # 筛选工资大于1万的员工
print(high_salary)
💡 用途:数据筛选,比Excel的筛选功能还强大。
🔢 6. 处理空值
python
df.fillna("缺失值", inplace=True) # 用"缺失值"填充空值
df.dropna(inplace=True) # 删除含空值的行
💡 用途 :处理空白单元格,防止数据异常。在 pandas
里,inplace=True
的作用是直接在原数据上进行修改,而不返回新的 DataFrame。
🔢 7. 添加新列
python
df["奖金"] = df["工资"] * 0.1 # 工资的10%作为奖金
💡 用途:快速计算并添加新列。
🔢 8. 修改列名
python
df.rename(columns={"姓名": "员工姓名"}, inplace=True)
💡 用途:更改列名,增强可读性。
🔢 9. 按条件修改数据
python
df.loc[df["工资"] < 5000, "工资"] = 5000 # 最低工资设为5000
💡 用途:把工资列中值小于5000的都改成5000,批量修改数据,比手动改省事多了。
🔢 10. 排序数据
python
df.sort_values(by="工资", ascending=False, inplace=True)
💡 用途 :按工资降序排列。ascending=False
是降序,ascending=True
是升序。
🔢 11. 计算数据统计值
python
df["工资"].mean() # 计算平均值
df["工资"].sum() # 总和
df["工资"].max() # 最大值
df["工资"].min() # 最小值
df["工资"].median() # 中位数
df["工资"].std() # 标准差(衡量数据波动)
df["工资"].var() # 方差(数据的离散程度)
df["工资"].count() # 计数(非空值数量)
df["工资"].describe() # 一次性输出所有统计信息
💡 用途:数据统计,计算平均值、最大值等。
🔢 12. 合并两个表格
python
df_new = pd.merge(df1, df2, on="员工ID", how="left")
💡 用途:类似Excel的VLOOKUP,这个代码的作用是 基于"员工ID"这个列,把 df2 的数据合并到 df1,并使用 left join 方式来匹配数据。
🔢 13. 透视表
python
pivot = df.pivot_table(values="工资", index="部门", aggfunc="sum")
💡 用途:数据透视表,返回Dataframe格式,轻松分析数据。
🔢 14. 生成Excel带格式
python
from openpyxl import Workbook
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active
ws["A1"] = "姓名"
ws["A1"].font = Font(bold=True) # 加粗
wb.save("styled.xlsx")
💡 用途:添加格式,提升Excel美观度。
🔢 15. 读取Excel某个单元格
python
from openpyxl import load_workbook
wb = load_workbook("data.xlsx")
ws = wb.active
print(ws["B2"].value) # 读取B2单元格
💡 用途:单元格精确读取。
🔢 16. 写入Excel单元格
python
ws["C2"] = "新数据"
wb.save("data.xlsx")
💡 用途:向Excel写入数据。
🔢 17. 删除某列
python
df.drop(columns=["奖金"], inplace=True)
💡 用途:删除不需要的数据列。
🔢 18. 复制数据
python
copied_df = df.copy()
💡 用途 :避免修改原数据。copied_df = df.copy()
之所以要用 .copy()
,是为了创建 df
的一个真正的副本,而不是简单的引用。如果你直接写 copied_df = df
,那么 copied_df
其实只是 df
的一个视图,它们指向同一个数据对象,修改 copied_df
也会影响 df
,反之亦然。
🔢 19. 批量写入多个Sheet
python
with pd.ExcelWriter("output.xlsx") as writer:
df1.to_excel(writer, sheet_name="Sheet1")
df2.to_excel(writer, sheet_name="Sheet2")
💡 用途:一次性写入多个Sheet。
🔢 20. 生成柱状图
python
df.plot(kind="bar", x="姓名", y="工资")
💡 用途 :数据可视化,这行代码生成的图表默认会直接显示在Jupyter Notebook
或交互式环境(如IPython
)里,但是如果你在终端或Python
脚本中运行,图可能不会自动弹出。
让图表显示:
✅ 方法 1:加上 plt.show()
python
import matplotlib.pyplot as plt
df.plot(kind="bar", x="姓名", y="工资") # 生成柱状图
plt.show() # 显示图表
plt.show()
会弹出一个窗口,把图像展示出来。
✅ 方法 2:保存为图片
如果想把图表保存成图片文件,可以用:
python
df.plot(kind="bar", x="姓名", y="工资")
plt.savefig("salary_chart.png") # 保存成PNG文件
这样你就可以在文件夹里找到 salary_chart.png
了!
🎉总结
学会这些Excel自动化脚本,能让你从手工整理Excel的苦力活中解放出来,早下班不是梦!希望大家都能成为Python自动化办公的高手,遇到Excel问题,不要慌,Python安排上!🚀
有啥问题,评论区见~ 😆