要理解RPA和Python的区别,先看它们各自做什么。
1、什么时候会用到RPA?
比如你的财务同事需要做财务对账,发票报销,税务申报等,这些流程看似容易,其实到操作层面很繁琐细碎,而且大多是重复性操作。
如果人工来处理财务之类的数据,很浪费时间,而RPA可以搭建一整套财务自动化的系统,从数据采集、存储、整合、分析、输出都帮你串起来,既节省了人力又极大的避免人为出错。
你可以把这个流程放到任何业务场景上,人力资源、供应链、保险理赔、设备管理等,都有RPA的用武之地。
这就是RPA,obotic process automation,机器人流程自动化。
2、什么是RPA技术?
RPA是一种模仿人类与软件交互方式的技术,用于执行大批量、可重复的任务,特别是财务、供应链之类的重复流程化业务。
你的IPhone上的快捷指令也是一种RPA,通过一系列指令的设置,实现自动化操作某个复杂任务。
RPA的一大特点是无代码或者低代码开发,RPA 能够复制人类执行基于计算机的流程的方式,你只需要在自动化软件上设置好流程和步骤,就可以实现复杂的操作。
最简单的 RPA 机器人是通过记录用户与应用程序交互时的点击和按键来创建的,比如刚说的手机快捷指令。
3、Python是否可以替代RPA呢?
并不能!!!
Python只是一种编程语言,你可以用它来编写一套RPA程序,但这个建立在你的Python能力非常NB的基础上,而且你要懂RPA涉及到的各种复杂的流程、技术和逻辑。
所以说RPA并不是Python,也不是编程,它是一套完整的自动化系统,涉及业务流程、接口协议、通信机制、ETL、数据库管理、数据建模、数据安全等等。
其中尤其要注意,设计一套RPA,对于业务流程需要很深的研究。
比如你想做个保单管理的RPA系统,首先你得要知道保单哪些环节可以通过RPA来提升效率,比如保单录入、更新、查询、续保、理赔等流程,这些流程涉及到用户的哪些数据、这些数据在哪些系统里等等,都需要很专业的保险行业知识。
所以单纯地以为学会Python,就不需要RPA,其实是不懂RPA。
当然你可以通过Python脚本开发一些简单的自动化工具,比如文档转换、网络爬虫、生成报表、图像处理等等,这些都可以通过相应的Python库很快地实现。
4、使用Python开发简单的自动化报表程序
下面举个例子:
你作为数据分析师,每周定期为公司基金销售数据制作报表 该报表包含以下内容:
- 绘制月度销售额趋势图
- 绘制基金产品销售额分布图
- 绘制未来6个月基金销售额预测趋势图
要求在excel中自动执行Python代码,每次更新数据只要点击xlwings插件执行即可。
xlwings是Python的第三方库,用来操作Excel,也有Excel的插件。
步骤如下:
「1. 在excel中调用Python脚本」
直接在命令行输入以下代码即可:
xlwings quickstart fund_sales
如果你想把文件创建到指定文件夹里,需要提前将命令行导航到指定目录。
创建好后,在fund_sales文件夹里会出现两个文件,.xlsm和.py文件。
「2. 编写Python脚本」
打开.py文件里在main函数里面写python代码,功能是为公司基金销售数据制作报表。
(其他代码不用动)
代码见下方
「3. 代开xlsm文件,点击run main,就会直接运行python脚本,就会自动制作报表」
代码如下:
import xlwings as xw
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams["font.sans-serif"]=["SimHei"] # 设置字体
plt.rcParams["axes.unicode_minus"]=False # 该语句解决图像中的“-”负号的乱码问题
def main():
# 打开Excel文件
wb = xw.Book.caller()
sheet = wb.sheets[0]
# 读取基金销售数据
data = sheet.range('A1').options(expand='table').value
# 将数据转换为Pandas DataFrame
df = pd.DataFrame(data[1:], columns=data[0])
df['月'] = df['日期'].dt.month
df['年'] = df['日期'].dt.year
# 绘制基金销售额月度趋势图
monthly_sales = df.groupby(['年', '月']).agg({'销售额': 'sum'}).reset_index()
monthly_sales['日期'] = pd.to_datetime(monthly_sales['年'].astype(str) + '-' + monthly_sales['月'].astype(str), format='%Y-%m')
monthly_sales = monthly_sales.sort_values('日期')
fig1, ax1 = plt.subplots()
sns.lineplot(x='日期', y='销售额', data=monthly_sales)
ax1.set(xlabel='日期', ylabel='销售额', title='基金销售额月度趋势图')
plt.xticks(rotation=45)
sheet.pictures.add(fig1, name='基金销售额月度趋势图', update=True, left=sheet.range('D2').left, top=sheet.range('D2').top)
# 绘制基金产品销售额分布图
fund_sales = df.groupby('基金名称').agg({'销售额': 'sum'}).reset_index()
fig2, ax2 = plt.subplots()
sns.barplot(x='销售额', y='基金名称', data=fund_sales)
ax2.set(xlabel='销售额', ylabel='基金名称', title='基金产品销售额分布图')
sheet.pictures.add(fig2, name='基金产品销售额分布图', update=True, left=sheet.range('D20').left, top=sheet.range('D20').top)
# 搭建线性回归模型,用于预测未来6个月的销售额
x = monthly_sales.index.values.reshape(-1, 1)
y = monthly_sales['销售额'].values
model = LinearRegression()
model.fit(x, y)
# 预测未来6个月销售额
future_months = 6
last_month = monthly_sales['日期'].max().to_period('M').to_timestamp().to_pydatetime()
next_months = pd.date_range(start=last_month, periods=future_months+1, freq='M')[1:]
next_months_index = np.arange(len(monthly_sales), len(monthly_sales)+future_months)
next_months_df = pd.DataFrame({'日期': next_months, '销售额': [np.nan]*future_months, '年': next_months.year, '月': next_months.month})
next_months_df['预测销售额'] = model.predict(next_months_index.reshape(-1, 1))
monthly_sales_pred = pd.concat([monthly_sales, next_months_df], ignore_index=True)
# 绘制未来6个月基金销售额预测趋势图
fig3, ax3 = plt.subplots()
sns.lineplot(x='日期', y='销售额', data=monthly_sales_pred,label='销售额',)
sns.lineplot(x='日期', y='预测销售额', data=monthly_sales_pred,label='预测销售额')
ax3.set(xlabel='日期', ylabel='销售额', title='未来6个月基金销售额预测趋势图')
plt.xticks(rotation=45)
sheet.pictures.add(fig3, name='未来6个月基金销售额预测趋势图', update=True, left=sheet.range('D40').left, top=sheet.range('D40').top)
@xw.func
def hello(name):
return f"Hello {name}!"
if __name__ == "__main__":
xw.Book("PythonExcelTest.xlsm").set_mock_caller()
main()
这就使用Python创建了一个简单的RPA程序,用来自动化使用基金数据创建报表。
大家可以试试,RPA是一个很好玩的东西。
最后,这里分享给大家一套免费的学习资料,包含视频、源码/电子书,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以加我微信一起来学习交流。
① Python所有方向的学习路线图,清楚各个方向要学什么东西
②Python、PyCharm学习工具包全家桶,环境配置教程视频
③Python全套电子书籍PDF,全部都是干货知识
④ 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
⑤ 100多个Python实战案例,学习不再是只会理论
全套Python学习资料分享:
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,还有环境配置的教程,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频全套
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
希望这些内容对大家有所帮助,因为你我都是热爱python的编程语言爱好者。