Files
F6--/张阳脚本/竞品系统数据导出/爱车店.ipynb
T
2026-01-30 11:28:35 +08:00

1462 lines
77 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2025-06-23T01:37:53.315481Z",
"start_time": "2025-06-23T01:37:42.166101Z"
}
},
"source": [
"from selenium import webdriver\n",
"from selenium.webdriver.common.by import By\n",
"from selenium.webdriver.support.ui import WebDriverWait\n",
"from selenium.webdriver.support import expected_conditions as EC\n",
"import time\n",
"from urllib.parse import urljoin\n",
"import pandas as pd\n",
"from selenium.webdriver import Chrome\n",
"from selenium.webdriver.chrome.service import Service\n",
"from datetime import datetime\n",
"from selenium.webdriver.chrome.options import Options\n",
"from datetime import datetime, timedelta\n",
"from selenium.common.exceptions import NoSuchElementException\n",
"from tqdm import tqdm\n",
"from selenium.common.exceptions import TimeoutException\n",
"\n",
"# 设置Chrome选项\n",
"chrome_options = Options()\n",
"# 设置为无头模式(不打开浏览器窗口)\n",
"# chrome_options.add_argument('--headless')\n",
"chrome_options.add_argument('--disable-gpu')\n",
"chrome_options.add_argument('--no-sandbox')\n",
"\n",
"# 指定ChromeDriver路径\n",
"service = Service(executable_path='D:\\ProgramTools\\chromedriver-win64\\chromedriver.exe')\n",
"\n",
"# 创建WebDriver对象\n",
"driver = webdriver.Chrome(service=service, options=chrome_options)\n",
"\n",
"# 目标网址\n",
"# url = 'http://xlsf.aichedian.com/order/order-detail/1115935207959/ # 爱车店有不同的网址\n",
"url = 'http://best.aichedian.com/order/order-detail/1115935207959/'\n",
"username = '15307259977'\n",
"password = 'juanzi810119'\n",
"\n",
"# 访问网页\n",
"driver.get(url)\n",
"\n",
"WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, f'//*[@id=\"username\"]'))).send_keys(username)\n",
"WebDriverWait(driver, 10).until(\n",
" EC.presence_of_element_located((By.XPATH, f'//*[@id=\"login_form\"]/div[4]/div/input'))).click()\n",
"time.sleep(5) # 提供时间选择门店\n",
"WebDriverWait(driver, 10).until(\n",
" EC.presence_of_element_located((By.XPATH, f'//*[@id=\"login_form\"]/div[3]/div[2]/div/input'))).send_keys(password)\n",
"WebDriverWait(driver, 10).until(\n",
" EC.presence_of_element_located((By.XPATH, f'//*[@id=\"login_form\"]/div[4]/div/input'))).click()\n",
"\n",
"time.sleep(2)\n",
"\n",
"# 设置起始日期为今天,结束日期为两年前 # 需要修改日期\n",
"end_date = datetime.now()\n",
"start_date = end_date - timedelta(days=1552) #786\n",
"current_date = start_date\n",
"all_data = []\n",
"\n",
"# 定义表头\n",
"headers = [\n",
" '订单号',\n",
" '开单时间', '入账时间', '车辆', '车主', '订单详情',\n",
" '车牌号码', '车辆品牌', '会员卡号', '车主姓名', '联系方式',\n",
" '服务名称', '销售人员', '施工人员', '应付金额', '施工时间', '完工时间', '服务评分',\n",
" '产品名称', '型号', '单价', '数量', '总价', '销售人员', '销售时间',\n",
" '支付方式', '账号', '金额', '时间', '备注'\n",
"]\n",
"\n",
"# 进度条\n",
"# date_range = pd.date_range(start=start_date, end=end_date)\n",
"date_range = pd.date_range(start=start_date, end=start_date+1)\n",
"first_date = \"2021-04-03\"\n",
"now_date = datetime.now().strftime('%Y-%m-%d')\n",
"\n",
"# 转换为 pandas 的 Timestamp 类型\n",
"start = pd.to_datetime(first_date)\n",
"end = pd.to_datetime(now_date)\n",
"\n",
"# 初始化当前时间指针\n",
"current = start\n",
"\n",
"range_one_year = pd.date_range(start=first_date, end=now_date)\n",
"with tqdm(total=len(date_range), desc=\"处理日期\") as pbar:\n",
" no_data_count = 0 # 记录连续没有数据的次数\n",
" for current_date in date_range:\n",
" date_str = current_date.strftime('%Y/%m/%d')\n",
" # url = f'http://xlsf.aichedian.com/report/order-count-detail/?dt={date_str}'\n",
" url = f'http://best.aichedian.com/report/order-stat/?start_date=2025/06/01&end_date=2025/06/23&tab=1'\n",
"\n",
" driver.get(url) # 获取每日订单\n",
" # 获取指定 XPath 下的所有 <tr> 元素\n",
" xpath = '//*[@id=\"x-single-content\"]/table[2]/tbody/tr'\n",
" try:\n",
" rows = WebDriverWait(driver, 5).until(\n",
" EC.presence_of_all_elements_located((By.XPATH, xpath))\n",
" )\n",
" if not rows:\n",
" raise NoSuchElementException # 如果没有找到任何行,抛出异常\n",
" no_data_count = 0 # 重置计数器\n",
" except TimeoutException:\n",
" no_data_count += 1\n",
" if no_data_count >= 30:\n",
" print(\"连续30天没有数据,退出循环\")\n",
" break\n",
" pbar.update(1)\n",
" continue\n",
"\n",
" for row in rows:\n",
" # 获取每一行中的所有 <td> 元素\n",
" cells = row.find_elements(By.TAG_NAME, 'td')\n",
" row_data = [cell.text for cell in cells] # 将一行中的所有单元格文本存入列表\n",
" start_dj_data = row_data[0] # 开始时间\n",
" get_money_data = row_data[1] # 入账时间\n",
" car_number = row_data[2] # 车牌名称\n",
" customer = row_data[3] # 假设第二列是客户名称\n",
" order_details = '\\n'.join(row_data) # 将行数据合并为一个字符串,每列之间用换行符分隔\n",
"\n",
" for cell in cells:\n",
" try:\n",
" base_url = 'http://xlsf.aichedian.com/'\n",
" link = cell.find_element(By.XPATH, './/a[@class=\"underline-styled\"]')\n",
" relative_url = link.get_attribute('href')\n",
" absolute_url = urljoin(base_url, relative_url) # 明细url\n",
" details_id = absolute_url.split('/')[-2]\n",
" driver.get(absolute_url) # 获取订单明细\n",
"\n",
" # 获取基本信息\n",
" base_details = WebDriverWait(driver, 10).until(\n",
" EC.presence_of_element_located((By.XPATH, f'//*[@id=\"x-single-content\"]/ul'))\n",
" )\n",
" li_items = base_details.find_elements(By.TAG_NAME, 'li')\n",
" base_info = {li.text.split(':')[0].strip(): li.text.split(':')[1].strip() if ':' in li.text else ''\n",
" for li in li_items}\n",
"\n",
" # 获取具体信息,如果不存在则返回空字符串\n",
" license_plate = base_info.get('车牌号', '')\n",
" customer_name = base_info.get('客户名称', '')\n",
" order_id = base_info.get('订单编号', '')\n",
"\n",
" # 获取服务项目\n",
" service_info = []\n",
" try:\n",
" h3_element = WebDriverWait(driver, 0.2).until(\n",
" EC.presence_of_element_located((By.XPATH, '//h3[text()=\"服务项目\"]'))\n",
" )\n",
" if h3_element.text == \"服务项目\":\n",
" table = h3_element.find_element(By.XPATH, './following-sibling::table')\n",
" rows = table.find_elements(By.TAG_NAME, 'tr')\n",
" for row1 in rows[1:]:\n",
" li_items = row1.find_elements(By.TAG_NAME, 'td')\n",
" service_info.append({\n",
" '服务名称': li_items[0].text,\n",
" '销售人员': li_items[1].text,\n",
" '施工人员': li_items[2].text,\n",
" '应付金额': li_items[3].text,\n",
" '施工时间': li_items[4].text,\n",
" '完工时间': li_items[5].text,\n",
" '服务评分': li_items[6].text\n",
" })\n",
" except:\n",
" pass\n",
"\n",
" # 获取销售产品\n",
" product_info = []\n",
" try:\n",
" h3_element = WebDriverWait(driver, 0.2).until(\n",
" EC.presence_of_element_located((By.XPATH, '//h3[text()=\"销售产品\"]'))\n",
" )\n",
" if h3_element.text == \"销售产品\":\n",
" table = h3_element.find_element(By.XPATH, './following-sibling::table')\n",
" rows = table.find_elements(By.TAG_NAME, 'tr')\n",
" for row2 in rows[1:]:\n",
" li_items = row2.find_elements(By.TAG_NAME, 'td')\n",
" product_info.append({\n",
" '产品名称': li_items[0].text,\n",
" '型号': li_items[1].text,\n",
" '单价': li_items[2].text,\n",
" '数量': li_items[3].text,\n",
" '总价': li_items[4].text,\n",
" '销售人员': li_items[5].text,\n",
" '销售时间': li_items[6].text\n",
" })\n",
" except:\n",
" pass\n",
"\n",
" # 获取支付记录\n",
" payment_info = []\n",
" try:\n",
" h3_element = WebDriverWait(driver, 0.2).until(\n",
" EC.presence_of_element_located((By.XPATH, '//h3[text()=\"支付记录\"]'))\n",
" )\n",
" if h3_element.text == \"支付记录\":\n",
" table = h3_element.find_element(By.XPATH, './following-sibling::table')\n",
" rows = table.find_elements(By.TAG_NAME, 'tr')\n",
" for row3 in rows[1:]:\n",
" li_items = row3.find_elements(By.TAG_NAME, 'td')\n",
" payment_info.append({\n",
" '支付方式': li_items[0].text,\n",
" '账号': li_items[1].text,\n",
" '金额': li_items[2].text,\n",
" '时间': li_items[3].text,\n",
" '备注': li_items[4].text\n",
" })\n",
" except:\n",
" pass\n",
"\n",
" # 将所有信息组合成一个字典\n",
" order_info = {\n",
" '订单号': details_id,\n",
" '开单时间': start_dj_data,\n",
" '入账时间': get_money_data,\n",
" '车辆': car_number,\n",
" '车主': customer,\n",
" '车牌号码': base_info.get('车牌号码', ''),\n",
" '车辆品牌': base_info.get('车辆品牌', ''),\n",
" '会员卡号': base_info.get('会员卡号', ''),\n",
" '车主姓名': base_info.get('车主姓名', ''),\n",
" '联系方式': base_info.get('联系方式', ''),\n",
" # '订单详情': order_details,\n",
" '服务名称': '\\n'.join([item['服务名称'] for item in service_info]),\n",
" '销售人员': '\\n'.join([item['销售人员'] for item in service_info]),\n",
" '施工人员': '\\n'.join([item['施工人员'] for item in service_info]),\n",
" '应付金额': '\\n'.join([item['应付金额'] for item in service_info]),\n",
" '施工时间': '\\n'.join([item['施工时间'] for item in service_info]),\n",
" '完工时间': '\\n'.join([item['完工时间'] for item in service_info]),\n",
" '服务评分': '\\n'.join([item['服务评分'] for item in service_info]),\n",
" '产品名称': '\\n'.join([item['产品名称'] for item in product_info]),\n",
" '型号': '\\n'.join([item['型号'] for item in product_info]),\n",
" '单价': '\\n'.join([item['单价'] for item in product_info]),\n",
" '数量': '\\n'.join([item['数量'] for item in product_info]),\n",
" '总价': '\\n'.join([item['总价'] for item in product_info]),\n",
" '销售人员': '\\n'.join([item['销售人员'] for item in product_info]),\n",
" '销售时间': '\\n'.join([item['销售时间'] for item in product_info]),\n",
" '支付方式': '\\n'.join([item['支付方式'] for item in payment_info]),\n",
" '账号': '\\n'.join([item['账号'] for item in payment_info]),\n",
" '金额': '\\n'.join([item['金额'] for item in payment_info]),\n",
" '时间': '\\n'.join([item['时间'] for item in payment_info]),\n",
" '备注': '\\n'.join([item['备注'] for item in payment_info])\n",
" }\n",
"\n",
" all_data.append(order_info) # 将完整订单信息添加到总数据列表中\n",
" time.sleep(0.1)\n",
" driver.back()\n",
" except NoSuchElementException:\n",
" continue # 如果没有找到 <a> 标签,继续下一个 <td>\n",
"\n",
" driver.back()\n",
" pbar.update(1)\n",
" \n",
"# 使用pandas将数据保存为Excel文件\n",
"df = pd.DataFrame(all_data, columns=headers)\n",
"df.to_excel('爱车店数据导出.xlsx', index=False) # 保存为Excel文件\n",
"\n",
"# 关闭浏览器\n",
"driver.quit()"
],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"<>:25: SyntaxWarning: invalid escape sequence '\\P'\n",
"<>:25: SyntaxWarning: invalid escape sequence '\\P'\n",
"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\AppData\\Local\\Temp\\ipykernel_27612\\2301462063.py:25: SyntaxWarning: invalid escape sequence '\\P'\n",
" service = Service(executable_path='D:\\ProgramTools\\chromedriver-win64\\chromedriver.exe')\n",
"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\AppData\\Local\\Temp\\ipykernel_27612\\2301462063.py:25: SyntaxWarning: invalid escape sequence '\\P'\n",
" service = Service(executable_path='D:\\ProgramTools\\chromedriver-win64\\chromedriver.exe')\n"
]
},
{
"ename": "TypeError",
"evalue": "unsupported operand type(s) for +: 'datetime.datetime' and 'int'",
"output_type": "error",
"traceback": [
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)",
"Cell \u001B[1;32mIn[6], line 68\u001B[0m\n\u001B[0;32m 57\u001B[0m headers \u001B[38;5;241m=\u001B[39m [\n\u001B[0;32m 58\u001B[0m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m订单号\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[0;32m 59\u001B[0m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m开单时间\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m入账时间\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m车辆\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m车主\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m订单详情\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 63\u001B[0m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m支付方式\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m账号\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m金额\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m时间\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m备注\u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[0;32m 64\u001B[0m ]\n\u001B[0;32m 66\u001B[0m \u001B[38;5;66;03m# 进度条\u001B[39;00m\n\u001B[0;32m 67\u001B[0m \u001B[38;5;66;03m# date_range = pd.date_range(start=start_date, end=end_date)\u001B[39;00m\n\u001B[1;32m---> 68\u001B[0m date_range \u001B[38;5;241m=\u001B[39m pd\u001B[38;5;241m.\u001B[39mdate_range(start\u001B[38;5;241m=\u001B[39mstart_date, end\u001B[38;5;241m=\u001B[39mstart_date\u001B[38;5;241m+\u001B[39m\u001B[38;5;241m1\u001B[39m)\n\u001B[0;32m 69\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m tqdm(total\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mlen\u001B[39m(date_range), desc\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m处理日期\u001B[39m\u001B[38;5;124m\"\u001B[39m) \u001B[38;5;28;01mas\u001B[39;00m pbar:\n\u001B[0;32m 70\u001B[0m no_data_count \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m0\u001B[39m \u001B[38;5;66;03m# 记录连续没有数据的次数\u001B[39;00m\n",
"\u001B[1;31mTypeError\u001B[0m: unsupported operand type(s) for +: 'datetime.datetime' and 'int'"
]
}
],
"execution_count": 6
},
{
"metadata": {},
"cell_type": "markdown",
"source": "爱车店数据拆分",
"id": "8114f50fac5a5893"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-06-24T05:43:02.221910Z",
"start_time": "2025-06-24T05:35:24.182121Z"
}
},
"cell_type": "code",
"source": [
"import pandas as pd\n",
"from tqdm import tqdm\n",
"import openpyxl\n",
"from openpyxl.styles import PatternFill\n",
"\n",
"# 读取Excel文件\n",
"df = pd.read_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Desktop\\爱车店数据导出.xlsx\")\n",
"\n",
"# 初始化一个新的列表来存储结果\n",
"result_list = []\n",
"\n",
"# 定义一个函数来安全地拆分字符串\n",
"def safe_split(value, delimiter='\\n'):\n",
" if pd.notna(value):\n",
" return value.split(delimiter)\n",
" return ['']\n",
"\n",
"# 获取需要拆分的列名\n",
"columns_to_split = {\n",
" '产品名称组': ['产品名称', '型号', '单价', '数量', '总价', '销售人员', '销售时间'],\n",
" '服务名称组': ['服务名称', '施工人员', '应付金额', '施工时间', '完工时间', '服务评分'],\n",
" '支付方式组': ['支付方式', '账号', '金额', '时间', '备注']\n",
"}\n",
"\n",
"# 获取需要保留的列名\n",
"columns_to_keep = ['开单时间', '入账时间', '车辆', '车主', '订单详情']\n",
"\n",
"# 使用 tqdm 包装 iterrows() 以显示进度条\n",
"for index, row in tqdm(df.iterrows(), total=len(df), desc=\"处理数据\"):\n",
" # 存储每个组的拆分数据\n",
" split_data_groups = {}\n",
"\n",
" # 拆分每个组的数据\n",
" for group_name, cols in columns_to_split.items():\n",
" split_data = {col: safe_split(row[col]) for col in cols}\n",
" max_length = max(len(split_data[col]) for col in cols)\n",
" for col in cols:\n",
" split_data[col] += [''] * (max_length - len(split_data[col]))\n",
" split_data_groups[group_name] = split_data\n",
"\n",
" # 检查是否有数据\n",
" has_product_data = any(any(item.strip() != '' for item in split_data_groups['产品名称组'][col]) for col in columns_to_split['产品名称组'])\n",
" has_service_data = any(any(item.strip() != '' for item in split_data_groups['服务名称组'][col]) for col in columns_to_split['服务名称组'])\n",
" has_payment_data = any(any(item.strip() != '' for item in split_data_groups['支付方式组'][col]) for col in columns_to_split['支付方式组'])\n",
"\n",
" if not (has_product_data or has_service_data or has_payment_data):\n",
" continue\n",
"\n",
" # 获取最大长度\n",
" max_length = max(\n",
" len(split_data_groups['产品名称组'][col][0]) for col in columns_to_split['产品名称组']\n",
" ) + max(\n",
" len(split_data_groups['服务名称组'][col][0]) for col in columns_to_split['服务名称组']\n",
" ) + max(\n",
" len(split_data_groups['支付方式组'][col][0]) for col in columns_to_split['支付方式组']\n",
" )\n",
"\n",
" # 创建新的行\n",
" for i in range(max_length):\n",
" new_row = {}\n",
"\n",
" # 添加需要保留的列的数据(开单时间组放在最前面)\n",
" for col in columns_to_keep:\n",
" new_row[col] = row[col]\n",
"\n",
" # 添加产品名称组的数据\n",
" for col in columns_to_split['产品名称组']:\n",
" if i < len(split_data_groups['产品名称组'][col]):\n",
" new_row[col] = split_data_groups['产品名称组'][col][i].strip()\n",
" else:\n",
" new_row[col] = ''\n",
"\n",
" # 添加服务名称组的数据\n",
" for col in columns_to_split['服务名称组']:\n",
" if i < len(split_data_groups['服务名称组'][col]):\n",
" new_row[col] = split_data_groups['服务名称组'][col][i].strip()\n",
" else:\n",
" new_row[col] = ''\n",
"\n",
" # 添加支付方式组的数据\n",
" for col in columns_to_split['支付方式组']:\n",
" if i < len(split_data_groups['支付方式组'][col]):\n",
" new_row[col] = split_data_groups['支付方式组'][col][i].strip()\n",
" else:\n",
" new_row[col] = ''\n",
"\n",
" # 检查新行是否有数据\n",
" has_data = any(new_row[col] != '' for col in columns_to_split['产品名称组']) or \\\n",
" any(new_row[col] != '' for col in columns_to_split['服务名称组']) or \\\n",
" any(new_row[col] != '' for col in columns_to_split['支付方式组'])\n",
"\n",
" if has_data:\n",
" # 将新行添加到结果列表中\n",
" result_list.append(new_row)\n",
"\n",
"# 将结果列表转换为DataFrame\n",
"result_df = pd.DataFrame(result_list)\n",
"\n",
"# 保存结果到新的Excel文件\n",
"file_path = 'result.xlsx'\n",
"result_df.to_excel(file_path, index=False)\n",
"\n",
"# 加载Excel文件并设置背景颜色\n",
"wb = openpyxl.load_workbook(file_path)\n",
"ws = wb.active\n",
"\n",
"# 定义背景颜色\n",
"color_dict = {\n",
" '开单时间': 'FFFFFF', # 白色\n",
" '产品名称': 'FFFF00', # 黄色\n",
" '服务名称': '00FF00', # 绿色\n",
" '支付方式': '0000FF' # 蓝色\n",
"}\n",
"\n",
"# 设置背景颜色\n",
"for row in ws.iter_rows(min_row=2, max_row=ws.max_row, min_col=1, max_col=ws.max_column):\n",
" for cell in row:\n",
" if cell.column_letter in [ws[1][i].column_letter for i, col in enumerate(columns_to_keep)]:\n",
" cell.fill = PatternFill(start_color=color_dict['开单时间'], end_color=color_dict['开单时间'], fill_type='solid')\n",
" elif cell.column_letter in [ws[1][i].column_letter for i, col in enumerate(columns_to_split['产品名称组'])]:\n",
" cell.fill = PatternFill(start_color=color_dict['产品名称'], end_color=color_dict['产品名称'], fill_type='solid')\n",
" elif cell.column_letter in [ws[1][i].column_letter for i, col in enumerate(columns_to_split['服务名称组'])]:\n",
" cell.fill = PatternFill(start_color=color_dict['服务名称'], end_color=color_dict['服务名称'], fill_type='solid')\n",
" elif cell.column_letter in [ws[1][i].column_letter for i, col in enumerate(columns_to_split['支付方式组'])]:\n",
" cell.fill = PatternFill(start_color=color_dict['支付方式'], end_color=color_dict['支付方式'], fill_type='solid')\n",
"\n",
"# 保存Excel文件\n",
"wb.save(file_path)\n",
"wb.close()\n",
"\n",
"print(\"数据拆分完成,已保存到result.xlsx\")"
],
"id": "ff2bccc8758253dd",
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"处理数据: 100%|██████████| 14428/14428 [00:10<00:00, 1380.58it/s]\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[1;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)",
"Cell \u001B[1;32mIn[3], line 120\u001B[0m\n\u001B[0;32m 118\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m cell\u001B[38;5;241m.\u001B[39mcolumn_letter \u001B[38;5;129;01min\u001B[39;00m [ws[\u001B[38;5;241m1\u001B[39m][i]\u001B[38;5;241m.\u001B[39mcolumn_letter \u001B[38;5;28;01mfor\u001B[39;00m i, col \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28menumerate\u001B[39m(columns_to_keep)]:\n\u001B[0;32m 119\u001B[0m cell\u001B[38;5;241m.\u001B[39mfill \u001B[38;5;241m=\u001B[39m PatternFill(start_color\u001B[38;5;241m=\u001B[39mcolor_dict[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m开单时间\u001B[39m\u001B[38;5;124m'\u001B[39m], end_color\u001B[38;5;241m=\u001B[39mcolor_dict[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m开单时间\u001B[39m\u001B[38;5;124m'\u001B[39m], fill_type\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124msolid\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[1;32m--> 120\u001B[0m \u001B[38;5;28;01melif\u001B[39;00m cell\u001B[38;5;241m.\u001B[39mcolumn_letter \u001B[38;5;129;01min\u001B[39;00m [ws[\u001B[38;5;241m1\u001B[39m][i]\u001B[38;5;241m.\u001B[39mcolumn_letter \u001B[38;5;28;01mfor\u001B[39;00m i, col \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28menumerate\u001B[39m(columns_to_split[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m产品名称组\u001B[39m\u001B[38;5;124m'\u001B[39m])]:\n\u001B[0;32m 121\u001B[0m cell\u001B[38;5;241m.\u001B[39mfill \u001B[38;5;241m=\u001B[39m PatternFill(start_color\u001B[38;5;241m=\u001B[39mcolor_dict[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m产品名称\u001B[39m\u001B[38;5;124m'\u001B[39m], end_color\u001B[38;5;241m=\u001B[39mcolor_dict[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m产品名称\u001B[39m\u001B[38;5;124m'\u001B[39m], fill_type\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124msolid\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[0;32m 122\u001B[0m \u001B[38;5;28;01melif\u001B[39;00m cell\u001B[38;5;241m.\u001B[39mcolumn_letter \u001B[38;5;129;01min\u001B[39;00m [ws[\u001B[38;5;241m1\u001B[39m][i]\u001B[38;5;241m.\u001B[39mcolumn_letter \u001B[38;5;28;01mfor\u001B[39;00m i, col \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28menumerate\u001B[39m(columns_to_split[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m服务名称组\u001B[39m\u001B[38;5;124m'\u001B[39m])]:\n",
"File \u001B[1;32mD:\\ProgramTools\\Anaconda\\Lib\\site-packages\\openpyxl\\worksheet\\worksheet.py:306\u001B[0m, in \u001B[0;36mWorksheet.__getitem__\u001B[1;34m(self, key)\u001B[0m\n\u001B[0;32m 303\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m cols\n\u001B[0;32m 304\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m min_col \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[0;32m 305\u001B[0m rows \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mtuple\u001B[39m(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39miter_rows(min_col\u001B[38;5;241m=\u001B[39mmin_col, min_row\u001B[38;5;241m=\u001B[39mmin_row,\n\u001B[1;32m--> 306\u001B[0m max_col\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmax_column, max_row\u001B[38;5;241m=\u001B[39mmax_row))\n\u001B[0;32m 307\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m min_row \u001B[38;5;241m==\u001B[39m max_row:\n\u001B[0;32m 308\u001B[0m rows \u001B[38;5;241m=\u001B[39m rows[\u001B[38;5;241m0\u001B[39m]\n",
"File \u001B[1;32mD:\\ProgramTools\\Anaconda\\Lib\\site-packages\\openpyxl\\worksheet\\worksheet.py:374\u001B[0m, in \u001B[0;36mWorksheet.max_column\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 372\u001B[0m max_col \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m1\u001B[39m\n\u001B[0;32m 373\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_cells:\n\u001B[1;32m--> 374\u001B[0m max_col \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mmax\u001B[39m(c[\u001B[38;5;241m1\u001B[39m] \u001B[38;5;28;01mfor\u001B[39;00m c \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_cells)\n\u001B[0;32m 375\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m max_col\n",
"File \u001B[1;32mD:\\ProgramTools\\Anaconda\\Lib\\site-packages\\openpyxl\\worksheet\\worksheet.py:374\u001B[0m, in \u001B[0;36m<genexpr>\u001B[1;34m(.0)\u001B[0m\n\u001B[0;32m 372\u001B[0m max_col \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m1\u001B[39m\n\u001B[0;32m 373\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_cells:\n\u001B[1;32m--> 374\u001B[0m max_col \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mmax\u001B[39m(c[\u001B[38;5;241m1\u001B[39m] \u001B[38;5;28;01mfor\u001B[39;00m c \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_cells)\n\u001B[0;32m 375\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m max_col\n",
"\u001B[1;31mKeyboardInterrupt\u001B[0m: "
]
}
],
"execution_count": 3
},
{
"metadata": {},
"cell_type": "markdown",
"source": "爱车店应收账款数据拆分",
"id": "9422711250f54bf1"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T01:15:35.470438Z",
"start_time": "2025-04-03T01:15:33.090402Z"
}
},
"cell_type": "code",
"source": [
"import pandas as pd\n",
"from tqdm import tqdm\n",
"import openpyxl\n",
"from openpyxl.styles import PatternFill\n",
"\n",
"# 读取Excel文件\n",
"df = pd.read_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Desktop\\新建文件夹\\1_爱车店应收账款数据导出.xlsx\")\n",
"\n",
"# 初始化一个新的列表来存储结果\n",
"result_list = []\n",
"\n",
"# 定义一个函数来安全地拆分字符串\n",
"def safe_split(value, delimiter='\\n'):\n",
" if pd.notna(value):\n",
" return value.split(delimiter)\n",
" return ['']\n",
"\n",
"# 获取需要拆分的列名\n",
"columns_to_split = {\n",
" '产品名称组': ['产品名称', '型号', '单价', '数量', '总价', '销售人员', '销售时间'],\n",
" '服务名称组': ['服务名称','销售人员','施工人员', '应付金额', '施工时间', '完工时间', '服务评分'],\n",
" # '支付方式组': ['支付方式', '账号', '金额', '时间', '备注']\n",
"}\n",
"\n",
"# 获取需要保留的列名\n",
"columns_to_keep = ['订单号', '挂账时间', '挂账金额', '车牌号码', '车辆品牌','车主姓名','联系方式','进站公里数','业务类型']\n",
"\n",
"# 使用 tqdm 包装 iterrows() 以显示进度条\n",
"for index, row in tqdm(df.iterrows(), total=len(df), desc=\"处理数据\"):\n",
" # 存储每个组的拆分数据\n",
" split_data_groups = {}\n",
"\n",
" # 拆分每个组的数据\n",
" for group_name, cols in columns_to_split.items():\n",
" split_data = {col: safe_split(row[col]) for col in cols}\n",
" max_length = max(len(split_data[col]) for col in cols)\n",
" for col in cols:\n",
" split_data[col] += [''] * (max_length - len(split_data[col]))\n",
" split_data_groups[group_name] = split_data\n",
"\n",
" # 检查是否有数据\n",
" has_product_data = any(any(item.strip() != '' for item in split_data_groups['产品名称组'][col]) for col in columns_to_split['产品名称组'])\n",
" has_service_data = any(any(item.strip() != '' for item in split_data_groups['服务名称组'][col]) for col in columns_to_split['服务名称组'])\n",
" # has_payment_data = any(any(item.strip() != '' for item in split_data_groups['支付方式组'][col]) for col in columns_to_split['支付方式组'])\n",
"\n",
" if not (has_product_data or has_service_data or has_payment_data):\n",
" continue\n",
"\n",
" # 获取最大长度\n",
" max_length = max(\n",
" len(split_data_groups['产品名称组'][col][0]) for col in columns_to_split['产品名称组']\n",
" ) + max(\n",
" len(split_data_groups['服务名称组'][col][0]) for col in columns_to_split['服务名称组']\n",
" ) \n",
" # len(split_data_groups['支付方式组'][col][0]) for col in columns_to_split['支付方式组']\n",
" \n",
"\n",
" # 创建新的行\n",
" for i in tqdm(range(max_length)):\n",
" new_row = {}\n",
"\n",
" # 添加需要保留的列的数据(开单时间组放在最前面)\n",
" for col in columns_to_keep:\n",
" new_row[col] = row[col]\n",
"\n",
" # 添加产品名称组的数据\n",
" for col in columns_to_split['产品名称组']:\n",
" if i < len(split_data_groups['产品名称组'][col]):\n",
" new_row[col] = split_data_groups['产品名称组'][col][i].strip()\n",
" else:\n",
" new_row[col] = ''\n",
"\n",
" # 添加服务名称组的数据\n",
" for col in columns_to_split['服务名称组']:\n",
" if i < len(split_data_groups['服务名称组'][col]):\n",
" new_row[col] = split_data_groups['服务名称组'][col][i].strip()\n",
" else:\n",
" new_row[col] = ''\n",
"\n",
" # # 添加支付方式组的数据\n",
" # for col in columns_to_split['支付方式组']:\n",
" # if i < len(split_data_groups['支付方式组'][col]):\n",
" # new_row[col] = split_data_groups['支付方式组'][col][i].strip()\n",
" # else:\n",
" # new_row[col] = ''\n",
"\n",
" # 检查新行是否有数据\n",
" has_data = any(new_row[col] != '' for col in columns_to_split['产品名称组']) or \\\n",
" any(new_row[col] != '' for col in columns_to_split['服务名称组']) \n",
" # any(new_row[col] != '' for col in columns_to_split['支付方式组'])\n",
"\n",
" if has_data:\n",
" # 将新行添加到结果列表中\n",
" result_list.append(new_row)\n",
"\n",
"# 将结果列表转换为DataFrame\n",
"result_df = pd.DataFrame(result_list)\n",
"\n",
"# 保存结果到新的Excel文件\n",
"file_path = '爱车店应收账款拆分.xlsx'\n",
"result_df.to_excel(file_path, index=False)\n",
"\n",
"# # 加载Excel文件并设置背景颜色\n",
"# wb = openpyxl.load_workbook(file_path)\n",
"# ws = wb.active\n",
"# \n",
"# # 定义背景颜色\n",
"# color_dict = {\n",
"# '开单时间': 'FFFFFF', # 白色\n",
"# '产品名称': 'FFFF00', # 黄色\n",
"# '服务名称': '00FF00', # 绿色\n",
"# # '支付方式': '0000FF' # 蓝色\n",
"# }\n",
"# \n",
"# # 设置背景颜色\n",
"# for row in ws.iter_rows(min_row=2, max_row=ws.max_row, min_col=1, max_col=ws.max_column):\n",
"# for cell in row:\n",
"# if cell.column_letter in [ws[1][i].column_letter for i, col in enumerate(columns_to_keep)]:\n",
"# cell.fill = PatternFill(start_color=color_dict['开单时间'], end_color=color_dict['开单时间'], fill_type='solid')\n",
"# elif cell.column_letter in [ws[1][i].column_letter for i, col in enumerate(columns_to_split['产品名称组'])]:\n",
"# cell.fill = PatternFill(start_color=color_dict['产品名称'], end_color=color_dict['产品名称'], fill_type='solid')\n",
"# elif cell.column_letter in [ws[1][i].column_letter for i, col in enumerate(columns_to_split['服务名称组'])]:\n",
"# cell.fill = PatternFill(start_color=color_dict['服务名称'], end_color=color_dict['服务名称'], fill_type='solid')\n",
"# # elif cell.column_letter in [ws[1][i].column_letter for i, col in enumerate(columns_to_split['支付方式组'])]:\n",
"# # cell.fill = PatternFill(start_color=color_dict['支付方式'], end_color=color_dict['支付方式'], fill_type='solid')\n",
"# \n",
"# # 保存Excel文件\n",
"# wb.save(file_path)\n",
"# wb.close()\n",
"\n",
"print(\"数据拆分完成,已保存到result.xlsx\")"
],
"id": "1ff2417d3826698a",
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"处理数据: 0%| | 0/403 [00:00<?, ?it/s]\n",
"100%|██████████| 32/32 [00:00<00:00, 32002.32it/s]\n",
"\n",
"100%|██████████| 22/22 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31009.64it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31640.20it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32094.15it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 19033.14it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30833.39it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32055.82it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 18987.80it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31949.00it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31987.07it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 18983.27it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32009.95it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32994.52it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33057.57it/s]\n",
"\n",
"100%|██████████| 22/22 [00:00<00:00, 21996.35it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30928.50it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 23297.64it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31933.79it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31068.92it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 20/20 [00:00<?, ?it/s][A\n",
"处理数据: 7%|▋ | 29/403 [00:00<00:01, 281.61it/s]\n",
"100%|██████████| 20/20 [00:00<00:00, 7928.74it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 15662.79it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31039.25it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33026.02it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 30792.44it/s]\n",
"\n",
"100%|██████████| 37/37 [00:00<00:00, 36985.04it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31949.00it/s]\n",
"\n",
"100%|██████████| 36/36 [00:00<00:00, 35637.23it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 21762.90it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 24576.00it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 16501.20it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 16528.78it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33057.57it/s]\n",
"\n",
"100%|██████████| 36/36 [00:00<00:00, 36071.42it/s]\n",
"\n",
"100%|██████████| 36/36 [00:00<00:00, 14600.17it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 21963.19it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 17897.61it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 8128.50it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 7685.39it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 14852.35it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 31082.87it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33033.90it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32140.26it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32094.15it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 14347.16it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 28692.38it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 14164.91it/s]\n",
"处理数据: 14%|█▍ | 58/403 [00:00<00:01, 220.10it/s]\n",
"100%|██████████| 32/32 [00:00<00:00, 26472.92it/s]\n",
"\n",
"100%|██████████| 36/36 [00:00<00:00, 32760.89it/s]\n",
"\n",
"100%|██████████| 37/37 [00:00<00:00, 37011.51it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 12939.08it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31322.69it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 15692.97it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 11309.21it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 20058.84it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32884.78it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33002.39it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 13702.40it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32963.09it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 25935.79it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 22153.01it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 13893.02it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 20082.85it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 16048.99it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 19060.46it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 24310.40it/s]\n",
"处理数据: 20%|██ | 81/403 [00:00<00:01, 215.07it/s]\n",
"100%|██████████| 32/32 [00:00<00:00, 32048.17it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32970.95it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 20044.46it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33010.26it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 16003.07it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 15993.53it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 16001.16it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 16489.40it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33018.14it/s]\n",
"\n",
"100%|██████████| 37/37 [00:00<00:00, 15466.34it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 29293.55it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33018.14it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 30676.43it/s]\n",
"\n",
"100%|██████████| 23/23 [00:00<00:00, 22990.70it/s]\n",
"\n",
"100%|██████████| 34/34 [00:00<00:00, 13850.65it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 15951.71it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 16035.57it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<00:00, 13804.62it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 25945.82it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32009.95it/s]\n",
"处理数据: 26%|██▌ | 103/403 [00:00<00:01, 198.34it/s]\n",
"100%|██████████| 31/31 [00:00<00:00, 31083.77it/s]\n",
"\n",
"100%|██████████| 24/24 [00:00<00:00, 23904.84it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 20336.02it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 29377.19it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 29979.39it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30545.68it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 29713.91it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 30026.34it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 30134.20it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31737.46it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 23196.98it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 21443.96it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 19042.24it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 12782.64it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32063.48it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32032.87it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30987.47it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31024.44it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30980.09it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 18/18 [00:00<00:00, 17962.76it/s]\n",
"处理数据: 32%|███▏ | 127/403 [00:00<00:01, 209.96it/s]\n",
"100%|██████████| 32/32 [00:00<00:00, 32063.48it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32009.95it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32040.52it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31979.44it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32071.14it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31513.91it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31941.39it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32048.17it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31054.08it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 15997.35it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<00:00, 18022.79it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 40/40 [00:00<00:00, 32294.93it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31979.44it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31068.92it/s]\n",
"\n",
"100%|██████████| 35/35 [00:00<00:00, 34076.29it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30968.56it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31009.64it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 25328.88it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 16004.98it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32017.59it/s]\n",
"处理数据: 38%|███▊ | 153/403 [00:00<00:01, 222.71it/s]\n",
"100%|██████████| 18/18 [00:00<00:00, 18005.60it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 35/35 [00:00<00:00, 35086.20it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30950.59it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31076.11it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32002.32it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 22/22 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 17/17 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 19024.06it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 28470.20it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 41/41 [00:00<00:00, 36295.16it/s]\n",
"\n",
"100%|██████████| 34/34 [00:00<00:00, 33507.13it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31987.07it/s]\n",
"\n",
"100%|██████████| 34/34 [00:00<00:00, 33148.85it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 8001.06it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32963.09it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32025.23it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 28833.02it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32063.48it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 22691.08it/s]\n",
"处理数据: 44%|████▍ | 179/403 [00:00<00:00, 232.72it/s]\n",
"100%|██████████| 16/16 [00:00<00:00, 15782.89it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31173.20it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 26859.66it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32032.87it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31971.83it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31031.84it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<00:00, 17975.59it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 26593.57it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 22896.23it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 27263.40it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33065.46it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 18956.18it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31895.85it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30913.80it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 18974.23it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30913.80it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 19898.85it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32101.82it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31979.44it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31964.21it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 29357.29it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31880.70it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 63072.24it/s]\n",
"处理数据: 50%|█████ | 203/403 [00:00<00:00, 227.96it/s]\n",
"100%|██████████| 32/32 [00:00<00:00, 32063.48it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31076.34it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 35/35 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31790.08it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30833.39it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31994.69it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 18992.32it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 14369.23it/s]\n",
"\n",
"100%|██████████| 37/37 [00:00<00:00, 35733.19it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 22589.20it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 27065.48it/s]\n",
"\n",
"100%|██████████| 22/22 [00:00<00:00, 22027.86it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 20001.45it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 20463.14it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 24882.78it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 12085.08it/s]\n",
"\n",
"100%|██████████| 25/25 [00:00<00:00, 25145.71it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32017.59it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32853.56it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32667.46it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33026.02it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 25741.50it/s]\n",
"处理数据: 57%|█████▋ | 229/403 [00:01<00:00, 235.57it/s]\n",
"100%|██████████| 32/32 [00:00<00:00, 32101.82it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 39457.23it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 24646.02it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 31572.09it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32955.25it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 20049.25it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31083.77it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30580.48it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31550.95it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 18992.32it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 24235.78it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31565.79it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 27559.01it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 25650.71it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 19024.06it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 19019.52it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32124.88it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 15812.64it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 18759.83it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 15978.30it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 12206.05it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30947.14it/s]\n",
"处理数据: 64%|██████▍ | 257/403 [00:01<00:00, 248.05it/s]\n",
"100%|██████████| 19/19 [00:00<00:00, 19087.85it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32032.87it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31588.07it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31091.21it/s]\n",
"\n",
"100%|██████████| 40/40 [00:00<00:00, 37524.53it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 19014.98it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 13049.85it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 24756.94it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 16004.98it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31322.69it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 21920.26it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 28298.07it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32055.82it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31857.99it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31994.69it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 26720.63it/s]\n",
"\n",
"100%|██████████| 26/26 [00:00<00:00, 26014.29it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31842.88it/s]\n",
"\n",
"100%|██████████| 34/34 [00:00<00:00, 34059.31it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 23725.96it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31410.65it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32009.95it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31543.53it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<00:00, 17545.31it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 24984.69it/s]\n",
"处理数据: 70%|██████▉ | 282/403 [00:01<00:00, 247.53it/s]\n",
"100%|██████████| 32/32 [00:00<00:00, 32132.57it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30762.72it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31971.83it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31971.83it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 29511.37it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31956.60it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31857.99it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30086.92it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 18/18 [00:00<00:00, 12572.43it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31994.69it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30950.59it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 29350.04it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32063.48it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31820.23it/s]\n",
"\n",
"100%|██████████| 38/38 [00:00<00:00, 27565.47it/s]\n",
"\n",
"100%|██████████| 41/41 [00:00<00:00, 37604.74it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 20837.09it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 27518.18it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 8774.69it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 18/18 [00:00<00:00, 18031.40it/s]\n",
"处理数据: 76%|███████▌ | 307/403 [00:01<00:00, 229.00it/s]\n",
"100%|██████████| 32/32 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31002.25it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31009.64it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 18938.16it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 16442.21it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31918.60it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33041.78it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<00:00, 17797.61it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 15997.35it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 57599.68it/s]\n",
"\n",
"100%|██████████| 36/36 [00:00<00:00, 11998.96it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 14749.20it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32124.88it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 15480.82it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33002.39it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31994.69it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32978.80it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<00:00, 18413.07it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31685.02it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33073.36it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 19991.92it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<00:00, 19458.61it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 22017.34it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<?, ?it/s][A\n",
"处理数据: 83%|████████▎ | 336/403 [00:01<00:00, 243.58it/s]\n",
"100%|██████████| 32/32 [00:00<00:00, 30421.06it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31895.85it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32009.95it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32055.82it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31987.07it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 29876.71it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32078.81it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 26822.09it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30987.47it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30132.89it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31895.85it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31031.84it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32002.32it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 16/16 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32055.82it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31987.07it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32009.95it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33010.26it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31640.20it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32278.93it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31994.69it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30273.21it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31024.44it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31543.53it/s]\n",
"处理数据: 91%|█████████ | 365/403 [00:01<00:00, 254.67it/s]\n",
"100%|██████████| 34/34 [00:00<00:00, 34018.69it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31994.69it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32009.95it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32040.52it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 23563.51it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31964.21it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 31169.93it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30317.99it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30343.86it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 22433.30it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 20527.85it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 32845.76it/s]\n",
"\n",
"100%|██████████| 35/35 [00:00<00:00, 24597.96it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 30148.56it/s]\n",
"\n",
"100%|██████████| 20/20 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 31600.92it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30059.96it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 30490.17it/s]\n",
"\n",
"100%|██████████| 33/33 [00:00<00:00, 33041.78it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31083.77it/s]\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32002.32it/s]\n",
"处理数据: 97%|█████████▋| 392/403 [00:01<00:00, 253.93it/s]\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 19/19 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30994.86it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31188.16it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 16012.61it/s]\n",
"\n",
"100%|██████████| 18/18 [00:00<?, ?it/s][A\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 31054.08it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30965.33it/s]\n",
"\n",
"100%|██████████| 16/16 [00:00<00:00, 15527.27it/s]\n",
"\n",
"100%|██████████| 31/31 [00:00<00:00, 30994.86it/s]\n",
"\n",
"100%|██████████| 32/32 [00:00<00:00, 32017.59it/s]\n",
"处理数据: 100%|██████████| 403/403 [00:01<00:00, 238.19it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"数据拆分完成,已保存到result.xlsx\n"
]
}
],
"execution_count": 6
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}