# 影刀RPA进阶教程:Pandas在影

影刀RPA进阶教程:Pandas在影刀中的常用操作——筛选/排序/合并/去重

Excel读取了几万行数据,影刀自带指令卡得要命。

筛选特定条件的数据、按销量排序、去重、合并多个表格——这些用Pandas一行代码搞定。
Pandas是Python的数据分析库,在影刀的“Python代码”指令里直接能用,而且不消耗RPA时长。

我也是非技术,只学了Pandas四五个函数,数据清洗效率翻了3倍。


picture.image

一、Pandas是什么——Excel的超级加强版

场景:处理超过5000行的表格,影刀的“读取区域”和“写入区域”已经很慢,再循环处理更是煎熬。

picture.image 核心:Pandas把表格变成一个“DataFrame”对象,可以用一行代码完成筛选、排序、分组、合并。

在影刀里使用Pandas

  1. 拖入 “Python代码” 指令。

picture.image 2. 点亮右上角的Python图标。

  1. 在代码里写import pandas as pd
  2. 注意:影刀社区版默认没有安装pandas,需要先安装(见文末资源)。

安装方法(只需做一次):

打开影刀安装目录下的Python环境,运行pip install pandas
或者用“运行Python文件”指令调用已安装pandas的外部环境。


二、读取Excel到Pandas——替代影刀读取区域

picture.image

# 输入:file_path(Excel文件路径)
# 输出:df(DataFrame对象)


![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/c494b24a7602460997f25a23b61e46bf~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781322560&x-signature=RHTHr4Zo3bS8LG8GUHM4nC%2Buwus%3D)
import pandas as pd

# 读取Excel,默认读取第一个sheet
df = pd.read_excel(file_path)


# 如果只读特定列(比如A、C、E列)
df = pd.read_excel(file_path, usecols="A,C,E")

# 如果第一行不是表头
df = pd.read_excel(file_path, header=None)

# 如果文件很大,只读前1000行
df = pd.read_excel(file_path, nrows=1000)

在影刀里使用
读完后df是一个DataFrame,你可以继续用Pandas操作。
操作完再写回Excel。


三、筛选数据——按条件挑出需要的行

场景:采集了1000个商品,只要价格大于100且销量大于500的。

# 筛选价格>100且销量>500
筛选后的df = df[(df['价格'] > 100) & (df['销量'] > 500)]

# 筛选标题包含“手机”的商品
筛选后的df = df[df['标题'].str.contains('手机', na=False)]

# 筛选价格在50到200之间的
筛选后的df = df[(df['价格'] >= 50) & (df['价格'] <= 200)]


# 排除某个店铺(不等于)
筛选后的df = df[df['店铺'] != '某某旗舰店']

常用筛选符号

  • & 且(注意用括号括起来)
  • |
  • ~ 非(取反)

四、排序——按一列或多列排序

场景:按销量从高到低排序,销量相同时按价格从低到高。

# 按销量降序(ascending=False)
df_sorted = df.sort_values('销量', ascending=False)

# 按销量降序,再按价格升序
df_sorted = df.sort_values(['销量', '价格'], ascending=[False, True])

影刀实操注意
排序后索引(行号)还是原来的顺序,如果想重置索引:

df_sorted = df_sorted.reset_index(drop=True)

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/05c90a6fd6ed4992a4ea1d0ba1cf3e80~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781322560&x-signature=7veDNjLFjGkvVL6LrPIeR5dCK8M%3D)

picture.image

picture.image

五、去重——删除重复行

picture.image 场景:商品采集时因为翻页重复抓了同一商品,需要去重。

picture.image

# 根据所有列去重(完全相同的行)
df_unique = df.drop_duplicates()

# 根据特定列去重(比如商品ID)
df_unique = df.drop_duplicates(subset=['商品ID'])

# 保留第一次出现的重复(默认),保留最后一次
df_unique = df.drop_duplicates(subset=['商品ID'], keep='last')

六、合并——把多个表格拼在一起

场景:分页采集了10个Excel文件,或者采集了多个关键词的结果,要合并成一个总表。

# 纵向拼接(行数增加,列数不变)
df_total = pd.concat([df1, df2, df3], ignore_index=True)

# 横向拼接(列数增加,按行索引对齐)
df_combined = pd.concat([df1, df2], axis=1)

# 按某个键合并(类似Excel的VLOOKUP)
# df1有商品ID和标题,df2有商品ID和价格,合并起来
df_merged = pd.merge(df1, df2, on='商品ID', how='left')

how参数

  • left:以左边表格为准,右边没有的填NaN
  • right:以右边为准
  • inner:只保留两边都有的
  • outer:保留所有行

七、分组统计——按店铺汇总销量

场景:想知道每个店铺的总销量、平均价格。

# 按店铺分组,计算销量总和、价格平均值
grouped = df.groupby('店铺').agg({
    '销量': 'sum',
    '价格': 'mean',
    '商品ID': 'count'  # 统计每个店铺的商品数量
}).reset_index()

常用聚合函数summeanmaxmincountnunique(去重计数)


八、写入Excel——把处理后的数据保存

# 直接覆盖写入
df.to_excel('结果.xlsx', index=False)  # index=False不写索引列

# 写入指定sheet
with pd.ExcelWriter('结果.xlsx') as writer:
    df.to_excel(writer, sheet_name='筛选后', index=False)
    df2.to_excel(writer, sheet_name='原始数据', index=False)

# 追加到已有Excel(不覆盖)
with pd.ExcelWriter('已有文件.xlsx', mode='a', if_sheet_exists='replace') as writer:
    df.to_excel(writer, sheet_name='新数据', index=False)

影刀专属注意
写出的Excel文件如果被影刀打开着,会报错。写之前先关闭影刀里的Excel。


九、完整实战:采集数据后用Pandas清洗

# === 在影刀Python代码指令里 ===
import pandas as pd

# 1. 读取原始采集数据(假设影刀已经用“读取区域”读到了一个二维列表)
# 这里演示从Excel读
df = pd.read_excel("C:/raw_data.xlsx")

# 2. 数据清洗
# 去掉价格为空的行
df = df.dropna(subset=['价格'])

# 去掉销量为0的商品
df = df[df['销量'] > 0]

# 将价格字符串转数字(如"¥129.00" -> 129.00)
df['价格'] = df['价格'].str.replace('¥', '').str.replace('元', '').astype(float)

# 按销量降序排序
df = df.sort_values('销量', ascending=False)

# 去重(按商品标题)
df = df.drop_duplicates(subset=['标题'])

# 3. 写入新文件
df.to_excel("C:/cleaned_data.xlsx", index=False)

# 4. 输出统计信息到影刀日志
print(f"原始数据{len(df)}行,清洗后{len(df)}行,总销量{df['销量'].sum()}")

十、Pandas vs 影刀原生指令性能对比

操作1000行数据10000行数据
影刀循环筛选2-3秒30秒以上
Pandas筛选0.05秒0.2秒
影刀去重(多个“删除重复行”指令)5秒卡死
Pandas去重0.02秒0.1秒
影刀合并多个表格手动操作慢不可行
Pandas合并0.1秒0.5秒

结论:数据量超过500行,无脑上Pandas。


常见问题速查

问题原因解决方法
import pandas as pd报错ModuleNotFoundError影刀环境没装pandas打开命令行,找到影刀Python路径,执行pip install pandas
读取Excel报错“No module named 'openpyxl'”缺少读取.xlsx的引擎pip install openpyxl
中文列名筛选时报错列名有空格或特殊字符df['列名'],列名前后不要有空格
df['价格'] > 100报错TypeError价格列是字符串先转数字:df['价格'] = pd.to_numeric(df['价格'], errors='coerce')
写入Excel后打开乱码编码问题加参数encoding='utf-8-sig'
社区版跑Pandas会扣时长吗Python代码指令本身不扣时长放心用,但pd.read_excel读取大文件会花几秒,这几秒会计入

推荐资源

  • 安装Pandas教程:B站搜“影刀RPA安装第三方库”,2分钟搞定。
  • 官方文档:pandas.pydata.org (看“Getting started”就够了)。
  • 我的学习路径:只学read_exceldrop_duplicatessort_valuesquery(筛选)、groupby,应付了90%场景。
  • 扩展阅读:系列第12篇《Python代码指令做数据清洗》——Pandas之前的必学基础。

作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论