用excel、python快速清洗、统计上海疫情居住地数据2022.4.24

2022-09-22 11:26:07 浏览数 (1)

1、数据来源【上海发布】

2、把每天链接在浏览器打开(这样没有评论,方便数据清洗),复制文本,建立每天的工作表(4-23),在excel中只粘贴文本。

3、WPS智能工具箱-合并表格

4、替换第一列的表名,得到日期

5、删除空行

6、读取excel

代码语言:javascript复制
import pandas
from DataRecorder import Recorder  # 记录器
import csv

global 区
global 需要排除
#excel表格 = pandas.read_excel('@@上海4.12-4.23-清洗.xlsx',sheet_name='总表',header=None, nrows=2000)
excel表格 = pandas.read_excel('3.18-4.23 - 去掉空格.xlsx',sheet_name='总表',header=None)
with open('2022.3.18-4.23.csv', 'a ',encoding='utf-8', newline = 'n')as f:
    区 = '空'
    for 行 in excel表格.values:
#         print(行[1])

7、定义区

代码语言:javascript复制
if 行[1] in ['浦东新区'
                    ,'黄浦区'
                    ,'闵行区'
                    ,'宝山区'
                    ,'徐汇区'
                    ,'杨浦区'
                    ,'嘉定区'
                    ,'松江区'
                    ,'普陀区'
                    ,'虹口区'
                    ,'静安区'
                    ,'长宁区'
                    ,'青浦区'
                    ,'奉贤区'
                    ,'金山区'
                    ,'崇明区'
                    ]:
                    print(行[0],行[1])
                    区 = 行[1]

8、清洗行中的,。、空格等标点符号

代码语言:javascript复制
内容 = 行[1].replace(',','').replace('。','').replace('、','').replace(' ','').replace(',','')

9、清洗非居住地信息

代码语言:javascript复制
        需要排除 = True
        for 排除 in ['居住地信息'
                    ,'上海发布'
                    ,'图片'
                    ,'市卫健委今早'
                    ,'各区信息如下'
                    ,'滑动查看更多'
                    ,'2022年'
                    ,'关注该公众号'
                    ,'微信扫一扫'
                    ,'文章已于'
                    ,'编辑:'
                    ,'资料'
                    ,'已对相关居住地'
                    ,'文章已于'
                    ,'浦东新区'
                    ,'黄浦区'
                    ,'闵行区'
                    ,'宝山区'
                    ,'徐汇区'
                    ,'杨浦区'
                    ,'嘉定区'
                    ,'松江区'
                    ,'普陀区'
                    ,'虹口区'
                    ,'静安区'
                    ,'长宁区'
                    ,'青浦区'
                    ,'奉贤区'
                    ,'金山区'
                    ,'崇明区'
                    ]:
    #        print(排除)
            if 排除 in 内容:
                需要排除 =  False
                print(内容)

10、把时间、区、居住地写入CSV

代码语言:javascript复制
            if 排除 in 内容:
                需要排除 =  False
                print(内容)
    #    if 需要排除 = True:
    #    with open('2020.11.15-2.csv', 'a ',encoding='utf-8', newline = 'n')as f:
        w = csv.writer(f)
        if 需要排除 == True:
            print(内容)
            w.writerow([行[0]
                    ,区
                    ,内容
                    ])
        else :
            print('-------------------------排除')

11、数据透视

12、字体、边框、条件格式-色阶、迷你折线图、最高值

13、数据透视,各个区的居住地情况

13、代码

代码语言:javascript复制
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 24 15:14:38 2022

@author: Administrator
1、读取excel
2、判断句子是否在区数据内,赋值区
3、写入excel(日期、区、居住地)
3、excel写入卡,换csv试试
4、数据清洗-排除空行、去除标点符号、某些行
"""

import pandas
from DataRecorder import Recorder  # 记录器
import csv

global 区
global 需要排除
#excel表格 = pandas.read_excel('@@上海4.12-4.23-清洗.xlsx',sheet_name='总表',header=None, nrows=2000)
excel表格 = pandas.read_excel('3.18-4.23 - 去掉空格.xlsx',sheet_name='总表',header=None)
with open('2022.3.18-4.23.csv', 'a ',encoding='utf-8', newline = 'n')as f:
    区 = '空'
    for 行 in excel表格.values:
#         print(行[1])
#         print(type(行[1]))
#        if 行[1] == 0:
#            print('空行')
#            pass
#        else:
        if 行[1] in ['浦东新区'
                    ,'黄浦区'
                    ,'闵行区'
                    ,'宝山区'
                    ,'徐汇区'
                    ,'杨浦区'
                    ,'嘉定区'
                    ,'松江区'
                    ,'普陀区'
                    ,'虹口区'
                    ,'静安区'
                    ,'长宁区'
                    ,'青浦区'
                    ,'奉贤区'
                    ,'金山区'
                    ,'崇明区'
                    ]:
                    print(行[0],行[1])
                    区 = 行[1]
    #    print(行[0],行[1])
        内容 = 行[1].replace(',','').replace('。','').replace('、','').replace(' ','').replace(',','')
        print(内容)
        需要排除 = True
        for 排除 in ['居住地信息'
                    ,'上海发布'
                    ,'图片'
                    ,'市卫健委今早'
                    ,'各区信息如下'
                    ,'滑动查看更多'
                    ,'2022年'
                    ,'关注该公众号'
                    ,'微信扫一扫'
                    ,'文章已于'
                    ,'编辑:'
                    ,'资料'
                    ,'已对相关居住地'
                    ,'文章已于'
                    ,'浦东新区'
                    ,'黄浦区'
                    ,'闵行区'
                    ,'宝山区'
                    ,'徐汇区'
                    ,'杨浦区'
                    ,'嘉定区'
                    ,'松江区'
                    ,'普陀区'
                    ,'虹口区'
                    ,'静安区'
                    ,'长宁区'
                    ,'青浦区'
                    ,'奉贤区'
                    ,'金山区'
                    ,'崇明区'
                    ]:
    #        print(排除)
            if 排除 in 内容:
                需要排除 =  False
                print(内容)
    #    if 需要排除 = True:
    #    with open('2020.11.15-2.csv', 'a ',encoding='utf-8', newline = 'n')as f:
        w = csv.writer(f)
        if 需要排除 == True:
            print(内容)
            w.writerow([行[0]
                    ,区
                    ,内容
                    ])
        else :
            print('-------------------------排除')
        #            w.writerow([行[0]
        #                        ,区
        #                        ,内容
        #                        ])
    

14、数据

【金山文档】 2022.3.18-4.23

https://kdocs.cn/l/cbCdvbqMLAuE

15、计算各个区,累计次数的比例

16、计算各个区,最后一次阳性日期距今日期。

0 人点赞