影刀RPA实操指南:电商采集数据清洗的5个核心步骤与Pandas高级技巧

采集回来的数据,直接分析肯定出错。

价格带“¥”符号,销量带“万”字,标题里有换行符和空格,还有重复商品和空值。手动清洗几百条数据要一两个小时,用影刀RPA配合Pandas,几分钟就能搞定。

核心就五步:去重、空值处理、格式统一、异常值检测、分组聚合。

picture.image

下面把完整流程拆开讲,都是电商采集后直接用的实战场景。

数据去重:按商品ID或链接去重

场景:采集了500条拼多多商品,其中有80条重复。

picture.image

方法:用“执行Python代码”指令,调Pandas的drop_duplicates。

操作步骤:

  1. 在右侧指令面板搜索“执行Python代码”
  2. 拖入流程,点击“编辑代码”

picture.image 3. 读取Excel,按商品ID去重,保留第一条

  1. 输出变量设为clean_df,后续指令引用
# 影刀RPA中执行Python:按商品ID去重
import pandas as pd


![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/3427c484115b4a8e880744cb1b2c1aaf~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1792123502&x-signature=osBVFSy3w4n77CaX%2FaeM%2FsvQ3h4%3D)
# 读取采集数据
df = pd.read_excel('拼多多商品数据.xlsx')

# 按商品ID去重,保留第一条
df = df.drop_duplicates(subset=['商品ID'], keep='first')

# 如果商品ID不唯一,用商品链接去重

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/a2f9bf76f23743ada6dbeabe3c247468~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1792123502&x-signature=MKZ12EKHAAxG5ogl8NWnCFvOpDc%3D)
# df = df.drop_duplicates(subset=['商品链接'], keep='first')

return df

注意:社区版30分钟/天,Pandas处理很快,但调试时建议用创业版。创业版无限制。

picture.image

空值处理:删除或填充缺失数据

场景:价格列有十几条空值,销量列也有缺失。

方法:用dropna删除空值行,或用fillna填充默认值。

操作步骤:

picture.image

  • 用df.isnull().sum()查看每列空值数量
  • 价格列空值:删除该行
  • 销量列空值:填充0
  • 标题列空值:填充“未知商品”
# 影刀RPA中执行Python:空值处理
import pandas as pd

df = pd.read_excel('拼多多商品数据.xlsx')

# 查看空值分布
print(df.isnull().sum())

# 删除价格为空的行
df = df.dropna(subset=['价格'])

# 销量空值填充0
df['销量'] = df['销量'].fillna(0)

# 标题空值填充“未知商品”
df['商品标题'] = df['商品标题'].fillna('未知商品')

return df
列名空值处理方式原因
价格删除行价格是核心字段
销量填充0可能确实无销量
标题填充“未知”保留记录
链接删除行链接是唯一标识

格式统一:价格、销量、日期标准化

场景:拼多多价格是“¥29.9”,淘宝是“29.90”,小红书是“29.9元”。

方法:用正则提取数字,统一转成浮点数。

# 影刀RPA中执行Python:统一价格格式
import re
import pandas as pd

df = pd.read_excel('多平台商品数据.xlsx')

def clean_price(raw):
    if pd.isna(raw):
        return 0.0
    nums = re.findall(r'[\d.]+', str(raw))
    return float(nums[0]) if nums else 0.0

df['价格'] = df['价格'].apply(clean_price)

# 销量清洗:“1.2万”转成12000
def clean_sales(raw):
    if pd.isna(raw):
        return 0
    nums = re.findall(r'[\d.]+', str(raw))
    if not nums:
        return 0
    num = float(nums[0])
    if '万' in str(raw):
        num *= 10000
    return int(num)

df['销量'] = df['销量'].apply(clean_sales)

return df

重点:清洗后价格保留两位小数,用round(num, 2)避免浮点误差。

异常值检测:识别不合理数据

场景:采集到价格“99999”或销量“-1”这种明显异常的数据。

方法:用Pandas的describe看分布,用条件筛选异常值。

# 影刀RPA中执行Python:异常值检测
import pandas as pd

df = pd.read_excel('拼多多商品数据.xlsx')

# 查看价格分布
print(df['价格'].describe())

# 筛选价格大于10000的异常值
outliers = df[df['价格'] > 10000]

# 筛选销量为负的异常值
negative_sales = df[df['销量'] < 0]

# 标记异常值,输出到单独文件
outliers.to_excel('异常值_价格过高.xlsx', index=False)
negative_sales.to_excel('异常值_销量为负.xlsx', index=False)

# 从主数据中删除异常值
df = df[(df['价格'] <= 10000) & (df['销量'] >= 0)]

return df
异常类型判断条件处理方式
价格过高> 10000标记并删除
销量为负< 0标记并删除
标题为空isnull填充“未知”
日期格式错正则不匹配重新解析

分组聚合:按平台或店铺统计

场景:清洗完数据,想按平台统计平均价格和总销量。

方法:用groupby分组,配合agg聚合。

# 影刀RPA中执行Python:分组聚合
import pandas as pd

df = pd.read_excel('多平台商品数据_清洗后.xlsx')

# 按平台分组,计算平均价格、总销量、商品数量
result = df.groupby('平台').agg({
    '价格': 'mean',
    '销量': 'sum',
    '商品标题': 'count'
}).rename(columns={
    '价格': '平均价格',
    '销量': '总销量',
    '商品标题': '商品数量'
}).round(2)

# 按平均价格降序
result = result.sort_values('平均价格', ascending=False)

# 写入Excel
result.to_excel('平台统计结果.xlsx')

return result

避坑:分组后索引会变成“平台”,写入Excel前用reset_index()把索引变回列。

常见问题速查

问题原因解决
去重后数据变少有重复ID正常,保留第一条
空值删除太多核心列空值多填充而非删除
价格清洗为0正则匹配失败检查原始格式
分组后索引乱没reset_index加reset_index
社区版额度不够30分钟/天创业版无限制

Q:魔法指令能生成数据清洗代码吗?

A:影刀3.0的魔法指令可以对话式生成Pandas片段,但清洗逻辑要自己检查。

Q:数据清洗后怎么自动发送?

A:用“发送邮件”指令,附件带上清洗后的Excel,收件人从配置表读取。

Q:清洗规则能复用吗?

A:可以。把清洗逻辑封装成子流程,输入原始数据,输出清洗后数据。

推荐资源

  • 影刀RPA官方学院“Python协同”专题课,免费
  • 影刀社区搜索“数据清洗”,有Pandas处理模板
  • Pandas官方文档“drop_duplicates”和“groupby”章节,有完整示例

#影刀RPA #RPA自动化 #数据清洗 #电商采集 #Pandas #数据去重

作者:林焱

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

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