{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### 用于分析市场指令相关的数据\n", "\n", "原始数据源: rpa_app_scene_info 表, 连表查询出**编辑**应用指令的数据\n", "\n", "分析目标:\n", "- 应用使用自定义指令的占比数量, 应用使用市场指令的占比数据\n", "- 分析高频使用的市场指令, 指令对应用的占比, 指令在总使用条数的占比\n", "- 针对 TOP 指令, 找到对应指令的使用热区" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 同步数据至本地\n", "- 同步数据库数据\n", "- 同步市场指令数据" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "最近编辑应用数据的总条数为:48969\n" ] } ], "source": [ "import pandas as pd\n", "import mysql.connector\n", "import warnings\n", "\n", "# 忽略特定警告\n", "warnings.filterwarnings(\n", " \"ignore\",\n", " category=UserWarning,\n", " message=\"pandas only supports SQLAlchemy connectable\",\n", ")\n", "\n", "\n", "db_host = \"sh-cdb-qlnh5ecg.sql.tencentcdb.com\"\n", "db_port = \"25944\"\n", "db_user = \"root\"\n", "db_password = \"VaDS4mrgKoJi\"\n", "db_name = \"xbot_market_info\"\n", "\n", "conn = mysql.connector.connect(\n", " host=db_host, port=db_port, user=db_user, password=db_password, database=db_name\n", ")\n", "\n", "query = \"SELECT * FROM rpa_app_scene_info_dev\"\n", "df = pd.read_sql(query, conn)\n", "conn.close()\n", "print(f\"最近编辑应用数据的总条数为:{df.shape[0]}\")" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "官方指令的总条数为:147\n" ] } ], "source": [ "import requests\n", "\n", "from typing import List\n", "from urllib import parse\n", "\n", "\n", "def get_token(username, password):\n", " \"\"\"\n", " 利用网页端获取 token\n", " :param username: 用户名\n", " :param password: 密码\n", " :return: token\n", " \"\"\"\n", " url = \"https://api.winrobot360.com/oauth/token\"\n", " data = {\n", " \"username\": username,\n", " \"password\": password,\n", " \"grant_type\": \"password\",\n", " \"scope\": \"all\",\n", " }\n", "\n", " payload = parse.urlencode(data)\n", " headers = {\n", " \"accept\": \"application/json\",\n", " \"authorization\": \"Basic Y29uc29sZTpzVVdpeTZzTmlYZDBlNUxo\",\n", " \"content-type\": \"application/x-www-form-urlencoded;charset=UTF-8\",\n", " }\n", " response = requests.request(\"POST\", url, headers=headers, data=payload).json()\n", "\n", " if response.get(\"success\") == \"false\":\n", " raise ValueError(response.get(\"msg\"))\n", " return response.get(\"access_token\")\n", "\n", "\n", "def get_activity_info(token, page=1, size=200):\n", " \"\"\"\n", " 获取活动信息列表\n", " :param token: 认证用的 token\n", " :param page: 分页页码,默认为 1\n", " :param size: 分页大小,默认为 10\n", " :return: 所有页的数据列表\n", " \"\"\"\n", " url = \"https://api.winrobot360.com/api/v1/robot/activity/package/list\"\n", " all_data = []\n", " while True:\n", " payload = {\n", " \"source\": \"market\",\n", " \"page\": page,\n", " \"size\": size,\n", " \"groupInfoUuid\": \"22222222-2222-2222-2222-222222222222\",\n", " \"marketUiTag\": \"\",\n", " \"uiaType\": \"pc\",\n", " \"order\": \"desc\",\n", " }\n", " headers = {\n", " \"Authorization\": f\"bearer {token}\",\n", " \"Accept\": \"application/json\",\n", " \"Accept-Encoding\": \"json\",\n", " }\n", " response = requests.get(url, headers=headers, params=payload)\n", " response_json = response.json()\n", " if not response.ok or not response_json.get(\"success\"):\n", " raise ValueError(response_json.get(\"msg\"))\n", " data = response_json.get(\"data\")\n", " all_data.extend(data)\n", " if not data or len(data) < size:\n", " break\n", " page += 1\n", " return all_data\n", "\n", "\n", "username = \"剑心@fckj\"\n", "password = \"320753691love\"\n", "token = get_token(username=username, password=password)\n", "activity_infos = get_activity_info(token)\n", "# print(activity_infos)\n", "market_activity_detail_data = {}\n", "for item in activity_infos:\n", " # print(item.get(\"packageName\"), item.get(\"packageViewName\"))\n", " market_activity_detail_data[item.get(\"packageName\")] = item.get(\"packageViewName\")\n", "\n", "print(f\"官方指令的总条数为:{len(market_activity_detail_data)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 自定义指令占比" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "最近编辑应用总数: 48969\n", "应用未使用自定义指令总数: 28800\n", "应用使用自定义指令总数: 20169\n", "应用使用自定义指令占比: 41.19%\n" ] } ], "source": [ "import json\n", "\n", "df[\"scene_info\"]\n", "df[\"extension_names\"] = df[\"scene_info\"].apply(\n", " lambda x: json.loads(x).get(\"extension_names\")\n", ")\n", "df[\"extension_names\"]\n", "empty_count = df['extension_names'].apply(lambda x: len(x) == 0).sum()\n", "non_empty_count = df['extension_names'].apply(lambda x: len(x) > 0).sum()\n", "\n", "\n", "print(f\"{'最近编辑应用总数:':<20}{len(df)}\")\n", "print(f\"{'应用未使用自定义指令总数:':<20}{empty_count}\")\n", "print(f\"{'应用使用自定义指令总数:':<20}{non_empty_count}\")\n", "print(f\"{'应用使用自定义指令占比:':<20}{non_empty_count / len(df):.2%}\")" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "最近编辑应用总数: 48969\n", "应用使用自定义指令总数: 20169\n", "应用使用市场自定义指令总数: 18920\n", "应用使用市场自定义指令占比: 38.64%\n", "市场自定义指令在使用自定义指令占比: 93.81%\n" ] } ], "source": [ "activity_code_keys = set(market_activity_detail_data.keys())\n", "\n", "used_market_activity_robot_count = df[\"extension_names\"].apply(lambda x: any(key in str(x) for key in activity_code_keys)).sum()\n", "print(f\"最近编辑应用总数: {len(df)}\")\n", "print(f\"应用使用自定义指令总数: {non_empty_count}\")\n", "print(f\"应用使用市场自定义指令总数: {used_market_activity_robot_count}\")\n", "print(f\"应用使用市场自定义指令占比: {used_market_activity_robot_count/len(df):.2%}\")\n", "print(f\"市场自定义指令在使用自定义指令占比: {used_market_activity_robot_count/non_empty_count:.2%}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 分析市场自定义指令使用情况" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### 市场指令在应用中的占比" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Excel扩展操作:\t7887\t41.69%\t16.11%\n", "列表扩展操作:\t2460\t13.00%\t5.02%\n", "日期时间扩展:\t2181\t11.53%\t4.45%\n", "网页扩展操作:\t2125\t11.23%\t4.34%\n", "登录扩展操作:\t1870\t9.88%\t3.82%\n", "弹窗智能侦测器:\t1722\t9.10%\t3.52%\n", "文件扩展功能:\t1447\t7.65%\t2.95%\n", "飞书电子表格(RPA):\t1301\t6.88%\t2.66%\n", "通用日期选择:\t1205\t6.37%\t2.46%\n", "数据库扩展操作:\t1058\t5.59%\t2.16%\n", "文本扩展功能:\t984\t5.20%\t2.01%\n", "XPath跨域获取网页元素:\t867\t4.58%\t1.77%\n", "滑块拼图验证码(免费):\t815\t4.31%\t1.66%\n", "个人微信:\t782\t4.13%\t1.60%\n", "并发调用子流程:\t772\t4.08%\t1.58%\n", "WPS 在线表格:\t713\t3.77%\t1.46%\n", "获取进程or杀进程:\t701\t3.71%\t1.43%\n", "应用帐号信息:\t696\t3.68%\t1.42%\n", "json数据提取:\t684\t3.62%\t1.40%\n", "紫鸟控制台操作:\t649\t3.43%\t1.33%\n", "图片扩展操作:\t635\t3.36%\t1.30%\n", "【付费】验证码识别(web):\t579\t3.06%\t1.18%\n", "飞书多维表格:\t552\t2.92%\t1.13%\n", "云码验证码扩展:\t546\t2.89%\t1.11%\n", "Cookie登录操作:\t364\t1.92%\t0.74%\n", "抖店操作:\t359\t1.90%\t0.73%\n", "数学函数操作:\t321\t1.70%\t0.66%\n", "钉钉在线表格操作:\t320\t1.69%\t0.65%\n", "懒加载操作:\t282\t1.49%\t0.58%\n", "SAP 扩展:\t259\t1.37%\t0.53%\n", "字典扩展操作:\t253\t1.34%\t0.52%\n", "拼多多数据获取:\t253\t1.34%\t0.52%\n", "MySQL扩展操作:\t250\t1.32%\t0.51%\n", "企业微信:\t229\t1.21%\t0.47%\n", "WPS 扩展:\t224\t1.18%\t0.46%\n", "钉钉云盘操作:\t221\t1.17%\t0.45%\n", "亚马逊卖家后台扩展操作:\t214\t1.13%\t0.44%\n", "计算机扩展:\t210\t1.11%\t0.43%\n", "Photoshop 操作:\t181\t0.96%\t0.37%\n", "钉钉机器人操作:\t176\t0.93%\t0.36%\n", "影刀离线OCR:\t164\t0.87%\t0.33%\n", "等待任意元素:\t161\t0.85%\t0.33%\n", "广告杀手:\t160\t0.85%\t0.33%\n", "消息推送:\t159\t0.84%\t0.32%\n", "PDF 扩展操作:\t150\t0.79%\t0.31%\n", "腾讯文档扩展:\t137\t0.72%\t0.28%\n", "动态调用:\t135\t0.71%\t0.28%\n", "(新版)生意参谋数据获取:\t132\t0.70%\t0.27%\n", "手机系统操作:\t130\t0.69%\t0.27%\n", "语音助手-edge-tts:\t129\t0.68%\t0.26%\n", "拼多多时间选择:\t121\t0.64%\t0.25%\n", "手机文件操作:\t117\t0.62%\t0.24%\n", "进度条扩展操作:\t104\t0.55%\t0.21%\n", "鼠标扩展操作:\t91\t0.48%\t0.19%\n", "DataFrame表格扩展指令集:\t90\t0.48%\t0.18%\n", "京东商智扩展操作:\t89\t0.47%\t0.18%\n", "获取图表元素数据:\t87\t0.46%\t0.18%\n", "生意参谋常用操作:\t76\t0.40%\t0.16%\n", "Word 扩展:\t76\t0.40%\t0.16%\n", "万相台无界版:\t73\t0.39%\t0.15%\n", "浏览器扩展:\t72\t0.38%\t0.15%\n", "隐藏/显示浏览器窗口:\t72\t0.38%\t0.15%\n", "视频操作操作:\t69\t0.36%\t0.14%\n", "旺店通自定义操作:\t68\t0.36%\t0.14%\n", "Outlook 扩展操作:\t67\t0.35%\t0.14%\n", "抖音时间选择:\t66\t0.35%\t0.13%\n", "淘宝时间选择:\t63\t0.33%\t0.13%\n", "链接编码和解码:\t60\t0.32%\t0.12%\n", "罗盘.经营:\t54\t0.29%\t0.11%\n", "赤兔名品_时间选择:\t50\t0.26%\t0.10%\n", "Sqlite3 扩展操作:\t48\t0.25%\t0.10%\n", "翻译扩展操作:\t48\t0.25%\t0.10%\n", "生意参谋时间选择操作:\t43\t0.23%\t0.09%\n", "京东商智数据获取-商家版:\t43\t0.23%\t0.09%\n", "维格表操作:\t40\t0.21%\t0.08%\n", "HubStudio浏览器扩展操作:\t39\t0.21%\t0.08%\n", "软件(win)扩展:\t35\t0.18%\t0.07%\n", "天猫宝贝上架:\t35\t0.18%\t0.07%\n", "阿里妈妈多平台数据获取:\t34\t0.18%\t0.07%\n", "Sql Server 扩展:\t33\t0.17%\t0.07%\n", "断言:\t31\t0.16%\t0.06%\n", "二维码条形码:\t30\t0.16%\t0.06%\n", "PPT 扩展:\t30\t0.16%\t0.06%\n", "Redis 扩展:\t29\t0.15%\t0.06%\n", "免费OCR:\t29\t0.15%\t0.06%\n", "京东商智数据获取-品牌版:\t29\t0.15%\t0.06%\n", "打印机扩展:\t28\t0.15%\t0.06%\n", "异步下载图片:\t27\t0.14%\t0.06%\n", "唯品会指令集:\t26\t0.14%\t0.05%\n", "巨量千川:\t25\t0.13%\t0.05%\n", "京准通操作:\t23\t0.12%\t0.05%\n", "电子发票识别:\t21\t0.11%\t0.04%\n", "生意参谋扩展操作(win):\t21\t0.11%\t0.04%\n", "RAR解压缩操作:\t21\t0.11%\t0.04%\n", "汇率查询与转换:\t20\t0.11%\t0.04%\n", "物流信息分析:\t20\t0.11%\t0.04%\n", "紫鸟浏览器API:\t18\t0.10%\t0.04%\n", "PostgreSQL 扩展:\t18\t0.10%\t0.04%\n", "CSV扩展操作:\t18\t0.10%\t0.04%\n", "获取Windows凭据:\t17\t0.09%\t0.03%\n", "淘系推广时间选择:\t15\t0.08%\t0.03%\n", "引入指定应用python模块:\t15\t0.08%\t0.03%\n", "网银安全控件输入:\t15\t0.08%\t0.03%\n", "物流信息查询:\t14\t0.07%\t0.03%\n", "云码验证码扩展(win):\t13\t0.07%\t0.03%\n", "巨量百应数据扩展 (达人版):\t12\t0.06%\t0.02%\n", "京东商智数据获取-品牌店铺版:\t12\t0.06%\t0.02%\n", "Oracle 扩展操作:\t11\t0.06%\t0.02%\n", "飞鸽客服系统扩展:\t11\t0.06%\t0.02%\n", "云码验证码扩展(手机):\t11\t0.06%\t0.02%\n", "精选联盟数据扩展 (商家版):\t11\t0.06%\t0.02%\n", "谷歌recaptcha验证码:\t11\t0.06%\t0.02%\n", "淘系推广数据获取:\t9\t0.05%\t0.02%\n", "企业微信-服务端:\t9\t0.05%\t0.02%\n", "POST文件上传:\t9\t0.05%\t0.02%\n", "快手扩展:\t8\t0.04%\t0.02%\n", "巨量纵横:\t8\t0.04%\t0.02%\n", "京东金融时间选择:\t8\t0.04%\t0.02%\n", "千牛扩展:\t7\t0.04%\t0.01%\n", "天猫字体解密扩展:\t7\t0.04%\t0.01%\n", "直播弹幕扩展:\t6\t0.03%\t0.01%\n", "Matplotlib:\t5\t0.03%\t0.01%\n", "影刀离线NLP:\t5\t0.03%\t0.01%\n", "AI拓展操作:\t4\t0.02%\t0.01%\n", "旺店通数据查询—旗舰版接口:\t4\t0.02%\t0.01%\n", "WPS 多维表格:\t4\t0.02%\t0.01%\n", "SSH 隧道:\t4\t0.02%\t0.01%\n", "万象隐藏:\t4\t0.02%\t0.01%\n", "京准通数据获取:\t4\t0.02%\t0.01%\n", "旺店通数据查询—企业版接口:\t3\t0.02%\t0.01%\n", "电商罗盘数据获取:\t3\t0.02%\t0.01%\n", "百度智能云指令:\t3\t0.02%\t0.01%\n", "巨量纵横通用时间选择:\t3\t0.02%\t0.01%\n", "批量数据抓取(Java):\t2\t0.01%\t0.00%\n", "Hana数据库扩展:\t2\t0.01%\t0.00%\n", "淘宝直播数据获取:\t1\t0.01%\t0.00%\n", "Canvas表格处理:\t1\t0.01%\t0.00%\n", "数电开票扩展(蒙柏):\t1\t0.01%\t0.00%\n", "大众点评解密操作:\t1\t0.01%\t0.00%\n", "阿普斯usb封装指令集:\t1\t0.01%\t0.00%\n" ] } ], "source": [ "# 遍历 activity_code_keys, 统计应用的使用次数\n", "\n", "# 确保 extension_names 列为字符串类型\n", "df[\"extension_names_str\"] = df[\"extension_names\"].astype(str)\n", "\n", "# 初始化计数字典\n", "market_activity_map_robot_count = {}\n", "\n", "# 使用矢量化操作统计每个 key 的出现次数\n", "for key in activity_code_keys:\n", " count = df[\"extension_names_str\"].str.contains(key).sum()\n", " if count > 0:\n", " market_activity_map_robot_count[key] = count\n", "\n", "# 按照使用次数从大到小排序\n", "market_activity_map_robot_count = dict(\n", " sorted(market_activity_map_robot_count.items(), key=lambda x: x[1], reverse=True)\n", ")\n", "\n", "# print(f\"\\t\\t市场指令应用占比\\t最近编辑应用占比\")\n", "for package_code, package_code_count in market_activity_map_robot_count.items():\n", " # if package_code_count < 500:\n", " # continue\n", " print(\n", " f\"\"\"{market_activity_detail_data.get(package_code)}:\\t{package_code_count}\\t{package_code_count / used_market_activity_robot_count:.2%}\\t{package_code_count / len(df):.2%}\"\"\"\n", " )\n", " # print(f\"{market_activity_detail_data.get(package_code)}:\\t{package_code_count}\")" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "引用超过 1000个应用的指令集\n", "Excel扩展操作:\t7887\n", "列表扩展操作:\t2460\n", "日期时间扩展:\t2181\n", "网页扩展操作:\t2125\n", "登录扩展操作:\t1870\n", "弹窗智能侦测器:\t1722\n", "文件扩展功能:\t1447\n", "飞书电子表格(RPA):\t1301\n", "通用日期选择:\t1205\n", "数据库扩展操作:\t1058\n" ] } ], "source": [ "# market_activity_map_robot_count 超过 1000个的指令集\n", "print(\"引用超过 1000个应用的指令集\")\n", "activity_over_1000 = {k: v for k, v in market_activity_map_robot_count.items() if v > 1000}\n", "for package_code, package_code_count in market_activity_map_robot_count.items():\n", " if package_code_count < 1000:\n", " continue\n", " print(f\"{market_activity_detail_data.get(package_code)}:\\t{package_code_count}\")" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "引用超过 100 - 1000应用的指令集\n", "文本扩展功能:\t984\n", "XPath跨域获取网页元素:\t867\n", "滑块拼图验证码(免费):\t815\n", "个人微信:\t782\n", "并发调用子流程:\t772\n", "WPS 在线表格:\t713\n", "获取进程or杀进程:\t701\n", "应用帐号信息:\t696\n", "json数据提取:\t684\n", "紫鸟控制台操作:\t649\n", "图片扩展操作:\t635\n", "【付费】验证码识别(web):\t579\n", "飞书多维表格:\t552\n", "云码验证码扩展:\t546\n", "Cookie登录操作:\t364\n", "抖店操作:\t359\n", "数学函数操作:\t321\n", "钉钉在线表格操作:\t320\n", "懒加载操作:\t282\n", "SAP 扩展:\t259\n", "字典扩展操作:\t253\n", "拼多多数据获取:\t253\n", "MySQL扩展操作:\t250\n", "企业微信:\t229\n", "WPS 扩展:\t224\n", "钉钉云盘操作:\t221\n", "亚马逊卖家后台扩展操作:\t214\n", "计算机扩展:\t210\n", "Photoshop 操作:\t181\n", "钉钉机器人操作:\t176\n", "影刀离线OCR:\t164\n", "等待任意元素:\t161\n", "广告杀手:\t160\n", "消息推送:\t159\n", "PDF 扩展操作:\t150\n", "腾讯文档扩展:\t137\n", "动态调用:\t135\n", "(新版)生意参谋数据获取:\t132\n", "手机系统操作:\t130\n", "语音助手-edge-tts:\t129\n", "拼多多时间选择:\t121\n", "手机文件操作:\t117\n", "进度条扩展操作:\t104\n" ] } ], "source": [ "print(\"引用超过 100 - 1000应用的指令集\")\n", "activity_over_1000 = {\n", " k: v for k, v in market_activity_map_robot_count.items() if v > 1000\n", "}\n", "for package_code, package_code_count in market_activity_map_robot_count.items():\n", " if 100 < package_code_count < 1000:\n", " print(f\"{market_activity_detail_data.get(package_code)}:\\t{package_code_count}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "业务指令主要占 100 - 1000 的引用量" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "引用小于 100 应用的指令集\n", "鼠标扩展操作:\t91\n", "DataFrame表格扩展指令集:\t90\n", "京东商智扩展操作:\t89\n", "获取图表元素数据:\t87\n", "生意参谋常用操作:\t76\n", "Word 扩展:\t76\n", "万相台无界版:\t73\n", "浏览器扩展:\t72\n", "隐藏/显示浏览器窗口:\t72\n", "视频操作操作:\t69\n", "旺店通自定义操作:\t68\n", "Outlook 扩展操作:\t67\n", "抖音时间选择:\t66\n", "淘宝时间选择:\t63\n", "链接编码和解码:\t60\n", "罗盘.经营:\t54\n", "赤兔名品_时间选择:\t50\n", "Sqlite3 扩展操作:\t48\n", "翻译扩展操作:\t48\n", "生意参谋时间选择操作:\t43\n", "京东商智数据获取-商家版:\t43\n", "维格表操作:\t40\n", "HubStudio浏览器扩展操作:\t39\n", "软件(win)扩展:\t35\n", "天猫宝贝上架:\t35\n", "阿里妈妈多平台数据获取:\t34\n", "Sql Server 扩展:\t33\n", "断言:\t31\n", "二维码条形码:\t30\n", "PPT 扩展:\t30\n", "Redis 扩展:\t29\n", "免费OCR:\t29\n", "京东商智数据获取-品牌版:\t29\n", "打印机扩展:\t28\n", "异步下载图片:\t27\n", "唯品会指令集:\t26\n", "巨量千川:\t25\n", "京准通操作:\t23\n", "电子发票识别:\t21\n", "生意参谋扩展操作(win):\t21\n", "RAR解压缩操作:\t21\n", "汇率查询与转换:\t20\n", "物流信息分析:\t20\n", "紫鸟浏览器API:\t18\n", "PostgreSQL 扩展:\t18\n", "CSV扩展操作:\t18\n", "获取Windows凭据:\t17\n", "淘系推广时间选择:\t15\n", "引入指定应用python模块:\t15\n", "网银安全控件输入:\t15\n", "物流信息查询:\t14\n", "云码验证码扩展(win):\t13\n", "巨量百应数据扩展 (达人版):\t12\n", "京东商智数据获取-品牌店铺版:\t12\n", "Oracle 扩展操作:\t11\n", "飞鸽客服系统扩展:\t11\n", "云码验证码扩展(手机):\t11\n", "精选联盟数据扩展 (商家版):\t11\n", "谷歌recaptcha验证码:\t11\n", "淘系推广数据获取:\t9\n", "企业微信-服务端:\t9\n", "POST文件上传:\t9\n", "快手扩展:\t8\n", "巨量纵横:\t8\n", "京东金融时间选择:\t8\n", "千牛扩展:\t7\n", "天猫字体解密扩展:\t7\n", "直播弹幕扩展:\t6\n", "Matplotlib:\t5\n", "影刀离线NLP:\t5\n", "AI拓展操作:\t4\n", "旺店通数据查询—旗舰版接口:\t4\n", "WPS 多维表格:\t4\n", "SSH 隧道:\t4\n", "万象隐藏:\t4\n", "京准通数据获取:\t4\n", "旺店通数据查询—企业版接口:\t3\n", "电商罗盘数据获取:\t3\n", "百度智能云指令:\t3\n", "巨量纵横通用时间选择:\t3\n", "批量数据抓取(Java):\t2\n", "Hana数据库扩展:\t2\n", "淘宝直播数据获取:\t1\n", "Canvas表格处理:\t1\n", "数电开票扩展(蒙柏):\t1\n", "大众点评解密操作:\t1\n", "阿普斯usb封装指令集:\t1\n" ] } ], "source": [ "print(\"引用小于 100 应用的指令集\")\n", "activity_over_1000 = {\n", " k: v for k, v in market_activity_map_robot_count.items() if v > 1000\n", "}\n", "for package_code, package_code_count in market_activity_map_robot_count.items():\n", " if package_code_count < 100:\n", " print(f\"{market_activity_detail_data.get(package_code)}:\\t{package_code_count}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### 不同指令在市场指令的占比" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "总计使用市场自定义指令的数量: 75642\n", "使用市场指令在使用自定义指令应用的平均数: 4.00\n" ] } ], "source": [ "used_activity_data = df['extension_names'].explode().dropna().tolist()\n", "used_market_activity_data = [\n", " extension_name\n", " for extension_name in used_activity_data\n", " if any(key in extension_name for key in activity_code_keys)\n", "]\n", "print(f\"总计使用市场自定义指令的数量: {len(used_market_activity_data)}\")\n", "print(f\"使用市场指令在使用自定义指令应用的平均数: {len(used_market_activity_data)/used_market_activity_robot_count:.2f}\")" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [], "source": [ "# 对原始数据进行解析\n", "used_market_activity_detail_data = []\n", "for item in used_market_activity_data:\n", " # print(item)\n", " _, package_code, activity_code=item.split(\".\", 2)\n", " used_market_activity_detail_data.append({\"package_code\": package_code, \"activity_code\": activity_code})" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "自定指令使用的条数分析\n", "Excel扩展操作: 23339\n", "列表扩展操作: 4208\n", "飞书电子表格(RPA): 3352\n", "网页扩展操作: 2424\n", "日期时间扩展: 2396\n", "登录扩展操作: 2305\n", "XPath跨域获取网页元素: 2075\n", "弹窗智能侦测器: 2035\n", "飞书多维表格: 1977\n", "WPS 在线表格: 1949\n", "文件扩展功能: 1675\n", "数据库扩展操作: 1581\n", "紫鸟控制台操作: 1503\n", "通用日期选择: 1489\n", "个人微信: 1302\n", "SAP 扩展: 1114\n", "文本扩展功能: 1104\n", "钉钉在线表格操作: 1055\n", "图片扩展操作: 1035\n" ] } ], "source": [ "# 通过 package_code 统计 activity_details 中的活动数量\n", "from collections import Counter\n", "\n", "# 汇总 package_code 数量\n", "summary = Counter(item[\"package_code\"] for item in used_market_activity_detail_data)\n", "\n", "# 输出结果\n", "result = dict(summary)\n", "\n", "# 将结果按数量从大到小排序\n", "sorted_result = summary.most_common()\n", "\n", "\n", "print(\"自定指令使用的条数分析\")\n", "for package_code, package_code_count in sorted_result:\n", " if package_code_count < 1000: continue\n", " print(f\"{market_activity_detail_data.get(package_code)}: {package_code_count}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "? 业务指令占比使用率比较低, 但是占用了大量的元素维护工作, 比如: 生意参谋操作, 京东生意参谋操作\n", "(也有可能数据失真, 无法准确反映实际情况)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 高频指令的热区分析" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Excel 扩展指令" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C_01_筛选: 3463\n", "A_01_单元格公式向下填充: 2857\n", "D_03_查找数据所在行: 2230\n", "C_03_清除筛选: 1864\n", "C_05_删除筛选内容: 1710\n", "C_04_读取筛选内容: 1661\n", "B_02_内容替换: 1213\n", "A_03_自动向下填充: 1211\n", "D_02_查找数据所在列: 1209\n", "B_04_区域文本转数字: 825\n", "B_01_分列: 739\n", "B_03_区域截图: 560\n", "A_06_公式转换成值: 552\n", "D_01_数字列名转换: 526\n", "B_07_取消合并单元格: 398\n", "A_04_单元格填充图片: 342\n", "D_04_合成字典_列表拼接: 316\n", "B_05_区域数字转文本: 285\n", "A_02_单元格公式向右填充: 253\n", "A_05_空白单元格填充: 185\n", "D_12_冻结首行: 176\n", "D_11_自动换行: 155\n", "D_05_合成字典_数字累加: 91\n", "C_02_筛选颜色: 75\n", "B_14_获取合并单元格区域: 62\n", "B_08_设置单元格超链接: 59\n", "D_07_隐藏取消隐藏工作表: 58\n", "D_06_删除所有图片: 48\n", "B_10_导出单元格图片: 44\n", "B_09_获取单元格超链接: 32\n", "D_10_设置密码: 31\n", "refresh_pivot_table: 28\n", "B_11_删除单元格图片: 20\n", "A_07_新建注释: 19\n", "B_13_获取背景色: 14\n", "D_08_获取隐藏的工作表名: 11\n", "D_09_合并计算: 9\n", "B_06_读取单元格注释: 6\n", "D_13_设置切片器: 2\n" ] } ], "source": [ "# 获取 activity_details中每一项 package_code 为activity_excel_v2 的item\n", "activity_details_activity_excel_v2 = [item for item in used_market_activity_detail_data if item[\"package_code\"] == \"activity_excel_v2\"]\n", "\n", "# 根据 activity_code 统计数量\n", "summary_activity_code = Counter(item[\"activity_code\"] for item in activity_details_activity_excel_v2)\n", "\n", "# 按顺序输出结果\n", "sorted_summary_activity_code = summary_activity_code.most_common()\n", "# 打印出来\n", "for activity_code, used_market_activity_robot_count in sorted_summary_activity_code:\n", " print(f\"{activity_code}: {used_market_activity_robot_count}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### 云码验证码指令" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "std_slider_captcha: 199\n", "ali_slider_captcha: 110\n", "dy_slider_captcha: 90\n", "std_alphanum_captcha: 68\n", "jd_rotate_captcha: 66\n", "xhs_rotate_captcha: 47\n", "jd_click_select_captcha: 45\n", "std_trace_captcha: 44\n", "std_click_select_captcha: 11\n", "cs_word_order_click_select_captcha: 11\n", "jd_click_select_captcha_original: 10\n", "dy_double_rotate_captcha: 9\n", "cs_space_same_object_captcha: 8\n", "jd_trace_captcha: 6\n", "chinatax_captcha: 4\n", "ali_click_select_captcha: 3\n", "cs_oocl_captcha: 3\n", "cs_temu_captcha: 2\n", "tx_six_squares_captcha: 2\n", "orangebank_slider_captcha: 1\n" ] } ], "source": [ "# 获取 activity_details中每一项 package_code 为activity_excel_v2 的item\n", "activity_details_activity_excel_v2 = [\n", " item\n", " for item in used_market_activity_detail_data\n", " if item[\"package_code\"] == \"activity_jfbym\"\n", "]\n", "\n", "# 根据 activity_code 统计数量\n", "summary_activity_code = Counter(\n", " item[\"activity_code\"] for item in activity_details_activity_excel_v2\n", ")\n", "\n", "# 按顺序输出结果\n", "sorted_summary_activity_code = summary_activity_code.most_common()\n", "# 打印出来\n", "for activity_code, used_market_activity_robot_count in sorted_summary_activity_code:\n", " print(f\"{activity_code}: {used_market_activity_robot_count}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 下一步\n", "\n", "自定义指令分布的版本信息, 推测指令对应用的影响范围(暂无数据)\n", "\n", "下架指令的依据\n", "\n", "进步探索新的指令集" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 2 }