1462 lines
77 KiB
Plaintext
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
|
|
}
|