前言
Excel 中可以使用 python 算是一个旧闻了,是 python 之父 Guido van Rossum 加入微软的重要产品。刚出来的第一时间我也尝鲜了,最近作图的时候,再次使用了这个功能,感觉非常方便,推荐大家也用一下。
优点:
- Python 在云端运行,无需部署环境。
- 可以编写脚本来自动化日常的 Excel 任务,如数据整理、图表生成等,提高工作效率。
- 快速响应,可视化选择数据,调整原始数据方便,所见即所得,比 jupyter notebook 更丝滑。
缺点:
云端运行的 python,对网速要求高,不方便加载除了标准库以外的第三方库。
好的,那我们就以日常工作中水质折线图为例,探究下 Excel 中使用 python 的魅力。
基础条件
支持 python 的 excel 版本。我是用的是 office 365。
Excel 中的 Python 目前为预览版,可能会根据反馈进行更改。若要使用此功能,请加入 Microsoft 365 会员计划,并选择“Beta 版频道”预览体验成员级别。
Excel 中的 Python 包括 anaconda 提供的一些标准 Python 库,用于提高数据分析和数据可视化能力。包括 Matplotlib、NumPy、Pandas、Seaborn、Statsmodels 等。
数据结构
一组在线水质检测数据,包括水质站点监测值和监测时间。
操作步骤
一、选择一个空单元格,点击公式-插入 python
二、数据结构预览
单元格输入以下代码
df=xl("A1:G98", headers=True)
df['监测时间'] = pd.to_datetime(df['监测时间'])
# 确保时间列是索引
df.set_index('监测时间', inplace=True)
df.describe()
按快捷键 crtl+enter 得到数据集结果。
仔细看下 excel 界面:
1 为代码输入区,可以调整宽度,自带代码高亮和代码提示。
2 为选择输出类型切换,包括值和 python 对象。
3 为结果展示区域,包括图片或者其他信息,图片的话需要调整单元格宽度。
4 为诊断信息,就像 python 的命令结果窗口,会给出成功或者报错信息。
可以说是一个简单的 IDE,五脏俱全。
三、绘图
选择一个较大的区域,最好是合并单元格,点击公式-插入 python。
单元格输入以下代码
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
# 解决坐标轴刻度负号乱码
plt.rcParams["font.sans-serif"] = ["Simhei"]
plt.rcParams["axes.unicode_minus"] = False
# 将监测时间列转换为datetime类型
df=xl("A1:G98", headers=True)
df['监测时间'] = pd.to_datetime(df['监测时间'])
# 确保时间列是索引
df.set_index('监测时间', inplace=True)
# 使用matplotlib绘制折线图
plt.figure(figsize=(10, 7)) # 设置图表大小
for column in df.columns:
plt.plot(df.index, df[column], label=column) # 绘制每列的折线图
# 添加标准值线(值为6),蓝色虚线
plt.axhline(6, color='blue', linestyle='--', label='标准值')
plt.title('5月各站点高锰酸盐指数变化趋势图') # 设置图表标题
# plt.xlabel('监测时间') # 设置x轴标签
plt.ylabel('监测值:mg/L') # 设置y轴标签
plt.xticks(rotation=0)
plt.tight_layout() # 自动调整子图参数,使之填充整个图像区域
# 修改图例位置
plt.legend(loc='lower left', bbox_to_anchor=(0, -0.15), ncol=len(df.columns), frameon=False)
plt.show()
结果如下:
利用 python 的 matplotlib 库绘图,就是这么丝滑。如果下次需要再次绘图,那么就不需要重复设置了,直接修改数据就好了。发现数据存在异常,修改异常值也是快速更新结果,非常方便。
结束语
这只是 excel 中使用 python 的一个小小示例,相信它能做的还有更多。有点担心 vba 的地位了。
最后,如果这篇文章有帮助到你,记得点赞,关注哦。
也欢迎关注我的微信公众号:环境猫 er。