说干就干,最终用python 快速完成数据治理调研,而我,楼下遛弯去了~
但是,活可没马虎,给大家康康效果:
四、过程
为了让更多有数据处理需求的小伙伴,高效搞定工作,我觉得把相关代码完全开源,当然,也有提升的地方,希望小伙伴在评论区指指点点。
代码大致分为4个部分:
1、导包
#coding=utf-8
from future import division
import os,openpyxl,pymysql as MySQL
2、连接数据库
print(“开始连接ing”)
try:
conn=MySQL.connect(host=“127.0.0.1”,port=3306,user=“root”,passwd=“root”,db=“tomato”,charset=‘utf8’)
#charset解决字符乱码
except:
print(“连接失败!”)
cur = conn.cursor()
print(“连接成功!!!”)
3、数据探查
#tab=[‘xxxxxx’,‘bbbbbb’] #指定探索的表名
tab=[]
if len(tab)==0 :
quary=“”“show tables; “””
ret=cur.execute(quary)
ret=cur.fetchall() #结果是二层tuple
for i in ret:
tab.append(i[0])
print(‘表数量: %s’%len(tab))
print(‘表list: %s’%tab)
else:
pass
m=1
result=[]
result.append([‘表名’,‘列名’,‘空值数量’,‘总数据量’,‘空值率’,‘字符类型’,‘字段长度’,‘备注’,‘主键’,‘权限’])
for i in tab:
if m==100:
break
print(i)
print(“第” + str(m) + “个表”)
quary1=“select count(*) from %s”%i
retsc=cur.execute(quary1)
retsc=cur.fetchall()
quary2=‘’‘select COLUMN_NAME from Information_schema.columns where table_Name = ‘%s’;’‘’%i
ret1=cur.execute(quary2)
ret1=cur.fetchall()
for col in ret1:
ll=[]
quary3=“”“select count(*) from %s AS AAA where AAA.%s is null; “””%(i,col[0])
print(quary3)
ret2=cur.execute(quary3)
ret2=cur.fetchall()
quary4=“”“SELECT DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLUMN_COMMENT,COLUMN_KEY,PRIVILEGES from information_schema.COLUMNS where TABLE_NAME=‘%s’ and COLUMN_NAME=‘%s’;”“”%(i,col[0])
print(quary4)
re4=cur.execute(quary4)
re4=cur.fetchall()
print(re4)
ll.append(i)
ll.append(col[0])
ll.append(ret2[0][0])
ll.append(retsc[0][0])
try:
ll.append(str(round(ret2[0][0]/retsc[0][0],2)))
except:
ll.append(0)
ll.append(re4[0][0])
ll.append(re4[0][1])
ll.append(re4[0][2])
ll.append(re4[0][3])
ll.append(re4[0][4])
result.append(ll)
m=m+1
print(result)
cur.close()
conn.close()
4、写execl
path=‘D:\export’ # 输入文件路径
print("请输入文件名,如不输入,默认文件名export: ")
exportname=input()
if exportname==‘’:
exportname=‘export’
if os.path.exists(‘%s%s.xlsx’%(path,exportname)):
os.remove(‘%s%s.xlsx’%(path,exportname))
print(‘导出文件路径: %s%s.xlsx’%(path,exportname))
os.chdir(‘%s’%path)
inwb = openpyxl.Workbook()
inwb.create_sheet(‘西红柿真帅’,0)
sheetname=inwb.get_sheet_names()
inwb.remove_sheet(inwb.get_sheet_by_name(sheetname[1]))
ws=inwb.get_sheet_by_name(sheetname[0])
for i in range(len(result)):
for j in range(len(result[0])):
ws.cell(row = i+1 , column = j+1).value = result[i][j]
inwb.save(‘%s.xlsx’%exportname)
print(“success !!!”)
数据质量调研搞完了,发给领导~
领导真有眼光!!⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
【送实体书环节】
本书轻理论,重实践,目的是用低的学习成本,让读者快速上手Python编程与应用开发。
总结
机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。
对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。
你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:
请转发本文支持一下
找小编(vip1024c)领取
你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。
你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:
请转发本文支持一下
[外链图片转存中…(img-FRPLVCcK-1721723648094)]
[外链图片转存中…(img-VGPBWJvK-1721723648095)]
找小编(vip1024c)领取