标签:turn spl pytho 去掉 local int 北京市 cal exe
今天主要进行数据清洗及处理
# -*- 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"))
标签:turn spl pytho 去掉 local int 北京市 cal exe
原文地址:https://www.cnblogs.com/fuheishi/p/12498165.html