zoukankan      html  css  js  c++  java
  • 2020/3/13-大数据应用极限测试每日总结

    砍柴ing

    今天主要进行数据清洗及处理

    # -*- coding: gbk -*-
    import json
    import pymysql
    import jieba.analyse
    
    ##生成三个表:用来做地图可视化
    ##表province:省:项目数
    ##表city:市:项目数
    ##表contie:县/区:项目数
    
    
    ##存放获得的最终数据
    province = {}
    city = {}
    contie = {}
    
    
    #连接数据库
    # 打开连接
    def open_conn(dbname):
        db = pymysql.connect(
            host="localhost",
            port=3306,
            user="root",
            passwd="1403053171",
            db=dbname,
            charset="utf8")
        return db
    
    
    def add(db, table_name,name,value):
        # 获取数据
    
        cursor = db.cursor()
        sql = "insert into "+table_name+"(name,value) values(%s,%s)"
        cursor.execute(sql, (name,value))
        db.commit()
    
    
    def province_city_contie(result_list,length):
        if result_list[length][len(result_list[length]) - 1] == '省':
            if result_list[length] in province.keys():
                # 省份对应值+1
                province[result_list[length]] += 1
            # 若该省份不存在字典中
            else:
                province[result_list[length]] = 1
        elif result_list[length][len(result_list[length]) - 1] == '市':
            if result_list[length] in city.keys():
                # 市对应值+1
                city[result_list[length]] += 1
            # 若该省份不存在字典中
            else:
                city[result_list[length]] = 1
        else:
            if result_list[length] in contie.keys():
                # 县对应值+1
                contie[result_list[length]] += 1
                # 若该县不存在字典中
            else:
                contie[result_list[length]] = 1
    
    #查询数据,获取省——value,市——value,存入两个字典中
    def query(db):
        cursor = db.cursor()
        #获取完成单位
        sql= "select province_city from summary_table"
        cursor.execute(sql)
    
        for each in cursor.fetchall():
            #each格式:河北省邢台市宁晋县|天津市xx区|天津市
            result = get_participle(each[0])    #格式:天津市,天津市/南开区,辽宁省/大连市/长海县
            #result.split('/')为list类型
            result_list = result.split('/')
            #长度为1
            if len(result_list) == 1:
                province_city_contie(result_list, 0)
            if len(result_list) == 2:
                province_city_contie(result_list, 0)
                province_city_contie(result_list, 1)
            if len(result_list) == 3:
                province_city_contie(result_list, 0)
                province_city_contie(result_list, 1)
                province_city_contie(result_list, 2)
                # if result_list[0][len(result_list[0])-1] == '省':
                #     if result_list[0] in province.keys():
                #         #省份对应值+1
                #         province[result_list[0]] += 1
                #     #若该省份不存在字典中
                #     else:
                #         province[result_list[0]] = 1
                # elif result_list[0][len(result_list[0])-1] == '市':
                #     if result_list[0] in city.keys():
                #         #市对应值+1
                #         city[result_list[0]] += 1
                #     #若该省份不存在字典中
                #     else:
                #         city[result_list[0]] = 1
                # else:
                #     print(result_list[0])
                #     if result_list[0] in contie.keys():
                #         # 县对应值+1
                #         contie[result_list[0]] += 1
                #         # 若该县不存在字典中
                #     else:
                #         contie[result_list[0]] = 1
    
    
    
    
            # #长度为1
            # if len(result_list) == 1:
            #     #若该省份已存在字典中
            #     if result_list[0] in province.keys():
            #         #省份对应值+1
            #         province[result_list[0]] += 1
            #     #若该省份不存在字典中
            #     else:
            #         province[result_list[0]] = 1
            # ###经测验, ==1时,由于分词出现的错误,“上海市浦东新区”放在了province字典里,最终需去掉
            # # #长度为2
            # elif len(result_list) == 2:
            #     #省判断
            #     # 若该省份已存在字典中
            #     if result_list[0] in province.keys():
            #         # 省份对应值+1
            #         province[result_list[0]] += 1
            #     # 若该省份不存在字典中
            #     else:
            #         province[result_list[0]] = 1
            #     #市判断
            #     # 若该市已存在字典中
            #     if result_list[1] in city.keys():
            #         # 市对应值+1
            #         city[result_list[1]] += 1
            #     # 若该市不存在字典中
            #     else:
            #          city[result_list[1]] = 1
            # #长度为三
            # else:
            #     #省判断
            #     # 若该省份已存在字典province中
            #     if result_list[0] in province.keys():
            #         # 省份对应值+1
            #         province[result_list[0]] += 1
            #     # 若该省份不存在字典province中
            #     else:
            #         province[result_list[0]] = 1
            #     #市判断
            #     # 若该市已存在字典city中
            #     if result_list[1] in city.keys():
            #         # 市对应值+1
            #         city[result_list[1]] += 1
            #     # 若该市不存在字典city中
            #     else:
            #          city[result_list[1]] = 1
            #     #县区判断
            #     #若该县已存在字典contie中
            #     if result_list[2] in contie.keys():
            #         #县对应值+1
            #         contie[result_list[2]] += 1
            #     #若该县不存在字典contie中
            #     else:
            #         contie[result_list[2]] = 1
        ##将直辖市放入省内
        if "北京市" in city.keys():
            province["北京市"] = city["北京市"]
            del city["北京市"]
        if "天津市" in city.keys():
            province["天津市"] = city["天津市"]
            del city["天津市"]
        if "上海市" in city.keys():
            province["上海市"] = city["上海市"]
            del city["上海市"]
        if "重庆市" in city.keys():
            province["重庆市"] = city["重庆市"]
            del city["重庆市"]
        ##插入数据库
        for item in province.items():
            add(open_conn("datax"), "province", item[0],item[1])
        for item in city.items():
            add(open_conn("datax"), "city", item[0],item[1])
        for item in contie.items():
            add(open_conn("datax"), "contie", item[0],item[1])
        # print(len(province))
        # print(len(city))
        # print(len(contie))
        print("完成!")
    
        ##数据还有一定瑕疵,需手动处理
    
    
    
    def get_participle(combine):
        participle_list1 = jieba.cut(combine)
        result = "/".join(participle_list1)
        # print("精确模式:", "/".join(participle_list1))
        return result
    
    if __name__ == '__main__':
        query(open_conn("datax"))
    

      

  • 相关阅读:
    汉语-谚语:条条大路通罗马
    汉语-词语:缱绻
    几何-对称图形:中心对称图形
    java解析获取Excel中的数据--同时兼容2003及2007
    如何使gcc输出搜索到的头文件路径?
    如何使tmux可以像vi一样操作(如快速跳转到某一行)?
    如何使tmux能够使用鼠标上下滚动?
    ID3v2: 为aac格式的音频文件添加ID3v2 Header
    FFmpeg: 利用FFmpeg提取音频文件中的metadata
    C语言:变长结构体
  • 原文地址:https://www.cnblogs.com/fuheishi/p/12498165.html
Copyright © 2011-2022 走看看