From 1000a8f2eade9d70c561ecd397dd3e4f69fe4bce Mon Sep 17 00:00:00 2001 From: 512song Date: Wed, 22 Mar 2023 13:14:45 +0000 Subject: [PATCH] 20230322 --- 体测单位/低碳院.ipynb | 489 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 442 insertions(+), 47 deletions(-) diff --git a/体测单位/低碳院.ipynb b/体测单位/低碳院.ipynb index 45d0055..e37b82a 100644 --- a/体测单位/低碳院.ipynb +++ b/体测单位/低碳院.ipynb @@ -4,7 +4,8 @@ "cell_type": "markdown", "id": "4b749231-7ab9-4dcd-8cfd-7b9be485d3c6", "metadata": { - "tags": [] + "tags": [], + "toc-hr-collapsed": true }, "source": [ "## 低碳院人员信息对应关系及导出" @@ -87,6 +88,7 @@ "cell_type": "markdown", "id": "2494ff3b-f52f-4933-9879-1b47857d8c67", "metadata": { + "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ @@ -282,6 +284,7 @@ "cell_type": "markdown", "id": "231a0872-34ac-4121-870e-ba398a158576", "metadata": { + "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ @@ -347,6 +350,7 @@ "cell_type": "markdown", "id": "0bef4bd3-99e8-4a2d-a418-77f832b1254a", "metadata": { + "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ @@ -399,6 +403,7 @@ "cell_type": "markdown", "id": "b1462a26-59f8-4e5f-8fb9-d927059e0747", "metadata": { + "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ @@ -426,11 +431,23 @@ { "cell_type": "markdown", "id": "bb3448ff-a8d3-417d-ab3a-4b54e28aaca0", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [], + "toc-hr-collapsed": true + }, "source": [ "## 2023年体测情况" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e7af531-758b-477b-a181-21080c83b44c", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "id": "d7ad01ef-93c3-4735-b609-bb5d38f85a25", @@ -545,7 +562,10 @@ { "cell_type": "markdown", "id": "9ba6ea9a-28f5-43c7-9dd7-74a626838303", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, "source": [ "### 统计2022年问卷人员信息" ] @@ -748,7 +768,10 @@ { "cell_type": "markdown", "id": "d3c7b93b-d132-4de4-a4f1-687b36d06b6d", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, "source": [ "### 统计2023年体测人员邮箱信息" ] @@ -1006,14 +1029,60 @@ "filename = 'data/低碳院邮件信息.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", + "print(dict1)" + ] + }, + { + "cell_type": "markdown", + "id": "fea20fa1-4cd3-4528-a7d1-dbce05e34fe4", + "metadata": {}, + "source": [ + "### 根据字典生成邮件列表" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2310dda9-01cb-43a0-a1db-36f37deb35a4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import json\n", + "import glob\n", + "import os\n", + "\n", + "dict1 = {\n", + " '494': {'name': '王永涛', 'email': '20087867@ceic.com'}, \n", + " '497': {'name': '王婧', 'email': '20084082@chnenergy.com.cn'}, \n", + " '499': {'name': '孙华宇', 'email': '20086856@chnenergy.com.cn'}, \n", + " '500': {'name': '贾建慧', 'email': '20084081@chnenergy.com.cn'}, \n", + " '501': {'name': '郝国政', 'email': '20084079@chnenergy.com.cn'}, \n", + " '502': {'name': '崔双双', 'email': '20084083@chnenergy.com.cn'}, \n", + " '503': {'name': '赵振慧', 'email': '11234518@chnenergy.com.cn'}, \n", + " '504': {'name': '刘静远', 'email': '20084080@chnenergy.com.cn'}, \n", + " '505': {'name': '陆斌', 'email': '20087351@ceic.com'}, \n", + " '506': {'name': '杜鹏', 'email': '12080316@chnenergy.com.cn'}, \n", + " '507': {'name': '赵亮亮', 'email': '20086857@chnenergy.com.cn'}, \n", + " '508': {'name': '张文秀', 'email': 'zhangwenxiu@nicenergy.com'}\n", + "}\n", "dict2 = {}\n", - "fls = glob.glob('file/139/2023-03-08/*.pdf')\n", + "fls = glob.glob('file/139/2022-12-31/*.pdf')\n", "for fi in fls:\n", " bh = os.path.basename(fi).split('.')[0]\n", - " if bh in dict1.keys() and 'email' not in dict1[bh].keys():\n", + " if bh in dict1.keys() and 'email' in dict1[bh].keys():\n", " #print(bh,dict1[bh]['name'],dict1[bh]['email'])\n", - " print(bh,dict1[bh]['name'])\n", - " " + " #print(bh,dict1[bh]['name'])\n", + " dict2.setdefault(bh,{})\n", + " dict2[bh]['name'] = dict1[bh]['name']\n", + " dict2[bh]['email'] = dict1[bh]['email']\n", + " dict2[bh]['file'] = fi\n", + "#print(len(dict2))\n", + "filename = 'data/低碳院邮件列表(新增).json'\n", + "with open(filename, 'w') as fl:\n", + " json.dump(dict2, fl, ensure_ascii=False)\n", + "print('ok')" ] }, { @@ -1053,7 +1122,7 @@ "import json\n", " \n", "\n", - "filename = 'data/低碳院邮件列表.json'\n", + "filename = 'data/低碳院邮件列表(新增).json'\n", "\n", "with open(filename,'r') as fl:\n", " m_xx = json.load(fl)\n", @@ -1101,27 +1170,12 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": null, "id": "ec395435-7596-4de8-9f41-f45c0c744c3d", "metadata": { - "execution": { - "iopub.execute_input": "2023-03-21T13:37:27.837531Z", - "iopub.status.busy": "2023-03-21T13:37:27.836685Z", - "iopub.status.idle": "2023-03-21T13:37:27.851993Z", - "shell.execute_reply": "2023-03-21T13:37:27.850923Z", - "shell.execute_reply.started": "2023-03-21T13:37:27.837490Z" - }, "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "106\n" - ] - } - ], + "outputs": [], "source": [ "import json\n", "import glob\n", @@ -1150,29 +1204,12 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": null, "id": "977e29b0-2b3f-4941-b33a-0b3b5ac4aced", "metadata": { - "execution": { - "iopub.execute_input": "2023-03-21T13:37:12.258067Z", - "iopub.status.busy": "2023-03-21T13:37:12.257187Z", - "iopub.status.idle": "2023-03-21T13:37:12.268960Z", - "shell.execute_reply": "2023-03-21T13:37:12.267879Z", - "shell.execute_reply.started": "2023-03-21T13:37:12.258026Z" - }, "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "497 王婧\n", - "499 孙华宇\n", - "502 崔双双\n" - ] - } - ], + "outputs": [], "source": [ "import json\n", "import glob\n", @@ -1195,7 +1232,9 @@ "cell_type": "code", "execution_count": null, "id": "e8d5cc48-a23d-44d9-9130-6902452d5d18", - "metadata": {}, + "metadata": { + "tags": [] + }, "outputs": [], "source": [ "from email.mime.text import MIMEText\n", @@ -1209,7 +1248,7 @@ "import json\n", " \n", "\n", - "filename = 'data/低碳院邮件列表202212.json'\n", + "filename = 'data/低碳院邮件列表(新增).json'\n", "\n", "with open(filename,'r') as fl:\n", " m_xx = json.load(fl)\n", @@ -1246,6 +1285,362 @@ " print (\"Error: 无法发送邮件\")\n", " " ] + }, + { + "cell_type": "markdown", + "id": "b4cb8b9c-f9ad-4a80-a5d6-dff5edb40e79", + "metadata": {}, + "source": [ + "## 百日筑基分析" + ] + }, + { + "cell_type": "markdown", + "id": "aa0e3dc6-053b-44a8-bbaa-7ec2a7790059", + "metadata": {}, + "source": [ + "### 导入人员信息" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1eb6ebd0-c78c-4f6d-b3fd-a27e240d216c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import openpyxl\n", + "import json\n", + "\n", + "fi_xls = 'data/低碳院小鹅通人员情况表.xlsx'\n", + "list1 = []\n", + "dict1 = {}\n", + "dict2 = {}\n", + "dict3 = {}\n", + "wb = openpyxl.load_workbook(fi_xls)\n", + "sheet = wb.active\n", + "for n in range(2, sheet.max_row+1):\n", + " if sheet.cell(n,1).value is None:\n", + " break\n", + " else: \n", + " name = sheet.cell(n, 1).value.strip()\n", + " phone = str(sheet.cell(n, 5).value).strip()\n", + " #检查手机号码是否有重复\n", + " #if phone not in list1:\n", + " # list1.append(phone)\n", + " #else:\n", + " # print(name,phone)\n", + " dict1.setdefault(phone,{})\n", + " dict1[phone]['name'] = name\n", + " dict1[phone]['unit'] = sheet.cell(n, 6).value\n", + "filename = 'data/低碳院小鹅通人员信息.json'\n", + "with open(filename, 'w') as fl:\n", + " json.dump(dict1, fl, ensure_ascii=False)\n", + "print('ok')\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "id": "fbd0c055-4d86-4383-9205-5b8888b8c686", + "metadata": {}, + "source": [ + "### 导入小鹅通人员信息 " + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "162e0573-e1c7-4538-bffa-c34eb5b40d8a", + "metadata": { + "execution": { + "iopub.execute_input": "2023-03-22T12:47:26.571739Z", + "iopub.status.busy": "2023-03-22T12:47:26.570902Z", + "iopub.status.idle": "2023-03-22T12:47:26.591504Z", + "shell.execute_reply": "2023-03-22T12:47:26.590497Z", + "shell.execute_reply.started": "2023-03-22T12:47:26.571699Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "import glob\n", + "import csv\n", + "\n", + "fi_path = 'data/小鹅通/'\n", + "dict1 = {}\n", + "fl = glob.glob(f'{fi_path}*.csv')\n", + "list1 = []\n", + "for fn in fl:\n", + " #with open(fn,'r',newline='',encoding='gb18030') as csv_file:\n", + " with open(fn,'r',newline='') as csv_file:\n", + " fl1 = csv.reader(csv_file,delimiter=',')\n", + " header = next(fl1) \n", + " for line in fl1:\n", + " #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n", + " list1.append(line)\n", + "for item in list1:\n", + " dict1.setdefault(item[0],{})\n", + " dict1[item[0]]['nick'] = item[1] \n", + " dict1[item[0]]['phone'] = item[11].strip()\n", + " dict1[item[0]]['progress'] = item[3]\n", + "filename = 'data/小鹅通人员信息.json'\n", + "with open(filename,'w') as fl:\n", + " json.dump(dict1, fl,ensure_ascii=False) " + ] + }, + { + "cell_type": "markdown", + "id": "8d9ec0a6-0b4d-456d-a886-ccccf3e29f3d", + "metadata": {}, + "source": [ + "### 关联低碳院小鹅通人员信息 " + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "b48f9fba-d8e9-4d47-a456-48065a912f5f", + "metadata": { + "execution": { + "iopub.execute_input": "2023-03-22T12:51:48.070188Z", + "iopub.status.busy": "2023-03-22T12:51:48.069351Z", + "iopub.status.idle": "2023-03-22T12:51:48.091373Z", + "shell.execute_reply": "2023-03-22T12:51:48.090459Z", + "shell.execute_reply.started": "2023-03-22T12:51:48.070146Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ok\n" + ] + } + ], + "source": [ + "import json\n", + "import os\n", + "\n", + "filename = 'data/小鹅通人员信息.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl) \n", + "\n", + "filename = 'data/低碳院小鹅通人员信息.json'\n", + "with open(filename,'r') as fl:\n", + " dict2 = json.load(fl) \n", + "for k, v in dict1.items():\n", + " phone = v['phone']\n", + " if phone in dict2.keys():\n", + " dict2[phone]['id'] = k\n", + " dict2[phone]['nick'] = v['nick']\n", + " dict2[phone]['progress'] = v['progress']\n", + "filename = 'data/低碳院小鹅通人员信息.json'\n", + "with open(filename, 'w') as fl:\n", + " json.dump(dict2, fl, ensure_ascii=False)\n", + "print('ok')\n", + " " + ] + }, + { + "cell_type": "markdown", + "id": "5ee64db3-7e59-4263-ae5b-d8529f1dca14", + "metadata": {}, + "source": [ + "### 导入小鹅通打卡信息 " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6fc5dd93-790a-4708-8dcc-98a74d7ce14d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import openpyxl\n", + "import json\n", + "import os\n", + "import glob\n", + "import csv\n", + "import re\n", + "\n", + "\n", + "fi_path = 'data/小鹅通/打卡/'\n", + "fl = glob.glob(f'{fi_path}*.csv')\n", + "\n", + "dict1 = {}\n", + "for fn in fl:\n", + " with open(fn,'r',newline='') as csv_file:\n", + " list1 = []\n", + " fl1 = csv.reader(csv_file,delimiter=',')\n", + " group = re.findall(r'百日筑基”健康打卡—(.+)的打卡信息》',fn)[0]\n", + " \n", + " #print(group)\n", + " header = next(fl1)\n", + " #print(header)\n", + " header = next(fl1)\n", + " list2 = []\n", + " for line in fl1: \n", + " list2.append(line)\n", + " dict1[group] = list2\n", + "list1 = []\n", + "\n", + "for item in header:\n", + " \n", + " item = re.sub(r'\\t','',item)\n", + " print(item)\n", + " list1.append(item)\n", + "print(list1) \n", + "dict1['header'] = list1\n", + "#print(dict1)\n", + "\n", + "filename = 'data/小鹅通打卡信息.json'\n", + "with open(filename,'w') as fl:\n", + " json.dump(dict1, fl,ensure_ascii=False) " + ] + }, + { + "cell_type": "markdown", + "id": "d296a9f0-1fdd-483e-839e-b994d647c7f2", + "metadata": {}, + "source": [ + "### 统计小鹅通打卡信息 " + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "204fcae8-32e6-4016-b533-b8a8a750580e", + "metadata": { + "execution": { + "iopub.execute_input": "2023-03-22T13:00:02.518291Z", + "iopub.status.busy": "2023-03-22T13:00:02.517403Z", + "iopub.status.idle": "2023-03-22T13:00:02.560955Z", + "shell.execute_reply": "2023-03-22T13:00:02.559935Z", + "shell.execute_reply.started": "2023-03-22T13:00:02.518251Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "113\n", + "[['适应A组', '宗瑾', 0], ['适应A组', '范玉建', 0], ['适应A组', '小新卖蜡笔💚', 1], ['适应A组', '李轩', 1], ['适应A组', '赵文静', 1], ['适应A组', '啦啦啦', 2], ['适应A组', '沐风', 3], ['适应A组', '杨征', 4], ['适应A组', '毛毛李', 4], ['适应A组', 'Hansolo', 4], ['适应A组', '李旭影', 5], ['适应A组', '林泉', 5], ['适应A组', '海', 5], ['适应A组', '阮如玉', 7], ['适应A组', 'Qieyingli', 7], ['适应A组', '赵璐璐', 8], ['适应A组', '王绍亮', 9], ['适应A组', '冰王子', 10], ['适应A组', '贾小胖', 11], ['适应A组', 'yuandelin', 13], ['适应A组', '于双恩', 14], ['适应A组', '红太虎', 14], ['适应A组', '杨如意', 20], ['适应A组', 'Fan Yongsheng', 22], ['适应A组', '晓亚', 25], ['适应A组', 'Lan💐💐💐', 25], ['适应A组', '贺国锋', 28], ['适应A组', '闫瑞军', 29], ['适应A组', '呆呆(丹)🍀', 29], ['适应A组', '齐云龙', 35], ['适应A组', '高星', 42], ['适应A组', '高高兴兴', 43], ['适应A组', '孙任晖', 48], ['适应A组', '王海棠', 50], ['适应A组', '顺其自然', 73], ['适应A组', '老罗', 75], ['适应A组', 'Ssss', 77], ['适应A组', '阿白', 79], ['适应A组', 'Linge', 88], ['适应A组', '董春伟', 94], ['适应A组', 'LyuYJ', 95], ['适应A组', '阿杜', 71], ['适应B组', '宗瑾', 0], ['适应B组', '王涛', 0], ['适应B组', '张凡', 1], ['适应B组', '浩', 2], ['适应B组', '葱', 3], ['适应B组', '程萌', 3], ['适应B组', '无', 6], ['适应B组', 'Shuai', 22], ['适应B组', '。。。', 23], ['适应B组', '韩志华', 25], ['适应B组', '龙龙', 39], ['适应B组', 'YX~', 44], ['适应B组', 'liqiands', 45], ['适应B组', '比小熊', 57], ['适应B组', '欢欢', 63], ['适应B组', 'scofiedys', 64], ['适应B组', '武月', 103], ['适应C组', '宗瑾', 0], ['适应C组', '胜录', 0], ['适应C组', 'candy', 0], ['适应C组', '阳光雨露', 1], ['适应C组', '劉知邦', 1], ['适应C组', '方秋', 1], ['适应C组', '赵华博', 2], ['适应C组', '时㈥🇨🇳', 3], ['适应C组', '赛赛\\ue305', 8], ['适应C组', '延鑫', 9], ['适应C组', '颜', 12], ['适应C组', '韦慧🎈', 12], ['适应C组', '许明', 23], ['适应C组', '康善娇', 25], ['适应C组', '王伟', 30], ['适应C组', '丁江涛', 31], ['适应C组', '城墙', 51], ['适应C组', '香龙', 53], ['适应C组', '🍜李为真', 54], ['适应C组', 'Ming', 57], ['适应C组', '王子鑫', 73], ['适应C组', 'Ophelia琪', 82], ['适应C组', '张寅灵', 82], ['适应C组', '张艳杰', 107], ['提高组', '宗瑾', 0], ['提高组', '小新卖蜡笔💚', 0], ['提高组', 'momo', 1], ['提高组', 'momo', 15], ['提高组', '郭建秋', 17], ['提高组', 'fumei🍭🍿', 62], ['提高组', '刘捷', 89], ['提高组', '赵明', 89]]\n", + "ok\n" + ] + } + ], + "source": [ + "import json\n", + "import time\n", + "import csv\n", + "\n", + "filename = 'data/小鹅通打卡信息.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl) \n", + "filename = 'data/低碳院小鹅通人员信息.json'\n", + "with open(filename,'r') as fl:\n", + " dict2 = json.load(fl) \n", + "jiezhiri = '2022-11-21'\n", + "list_rq = dict1['header']\n", + "#print(list_rq)\n", + "num = list_rq.index(jiezhiri)\n", + "print(num)\n", + "list1 = list_rq[1:num+1]\n", + "list2 = []\n", + "#print(list1)\n", + "for k, v in dict1.items():\n", + " if k!='header':\n", + " for item in v:\n", + " nick = item[0]\n", + " record = item[1:num+1]\n", + " list2.append([k,nick,record.count('√')])\n", + "print(list2)\n", + "for item in list2:\n", + " nick = item[1]\n", + " unit = item[0]\n", + " for k, v in dict2.items():\n", + " if v['nick'] == nick and unit == v['unit']:\n", + " dict2[k]['daka'] = item[2]\n", + "\n", + "filename = 'data/低碳院小鹅通人员信息.json'\n", + "with open(filename, 'w') as fl:\n", + " json.dump(dict2, fl, ensure_ascii=False)\n", + "print('ok') " + ] + }, + { + "cell_type": "markdown", + "id": "2bfd1f6b-c863-46fe-95f5-48a233c376fe", + "metadata": {}, + "source": [ + "### 统计低碳院百日强基情况" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "c12b2d1b-774e-40c1-8a80-df3fa5889b61", + "metadata": { + "execution": { + "iopub.execute_input": "2023-03-22T13:11:58.767063Z", + "iopub.status.busy": "2023-03-22T13:11:58.766209Z", + "iopub.status.idle": "2023-03-22T13:11:58.852385Z", + "shell.execute_reply": "2023-03-22T13:11:58.851586Z", + "shell.execute_reply.started": "2023-03-22T13:11:58.767021Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import json\n", + "import time\n", + "import csv\n", + "\n", + "filename = 'data/低碳院小鹅通人员信息.json'\n", + "with open(filename,'r') as fl:\n", + " dict2 = json.load(fl) \n", + "list1 = []\n", + "for k, v in dict2.items():\n", + " list2 = []\n", + " unit = v['unit']\n", + " name = v['name']\n", + " progress = v['progress']\n", + " if 'daka' in v.keys():\n", + " daka = v['daka']\n", + " else:\n", + " daka = 0\n", + " list2 = [unit,name,progress,daka]\n", + " list1.append(list2)\n", + "\n", + "filename = 'data/低碳院百日强基情况表(截止到20221121).xlsx'\n", + "wb = openpyxl.Workbook()\n", + "sheet = wb.active\n", + "\n", + "for row in list1:\n", + " sheet.append(row)\n", + " \n", + "wb.save(filename) \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9668d7d6-d51d-4fbe-8c0c-c8fa6066aad1", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": {