Python和RPA之间的区别和联系

Python是实现RPA的工具之一,且RPA要复杂的多,远不是会Python这么简单。

要理解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是一个很好玩的东西。

相关推荐
数据智能老司机6 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机7 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机7 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机7 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i7 小时前
drf初步梳理
python·django
每日AI新事件7 小时前
python的异步函数
python
这里有鱼汤9 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook18 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室18 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三20 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试