当前位置:科学 > 正文
天天关注:一个读取excel数据处理完成后读入数据库的例子
2023-05-23 08:52:38 来源:爱好不执念
(资料图片)
最近收集了一批数据,各地根据问题数据做出反馈,但是各地在反馈的时候字段都进行了创新,好在下发的数据内容并没有改变,开始写的单进程的,由于时间较长,耗时380+秒,又改成多进程的,时间缩短为80-秒。现在把程序发出来,请各位大神进行指正。
import multiprocessingimport osimport timeimport pandas as pdfrom sqlalchemy import create_engineimport asyncioimport warnings# warnings.simplefilter("ignore")ywstrList=["经办机构", "原子业务编号", "原子业务名称", "风险名称","风险描述", "校验规则结果", "创建时间", "风险提示信息", "业务日志号"]ywstrListMemo=["经办机构", "原子业务编号", "原子业务名称", "风险名称","风险描述", "校验规则结果", "创建时间", "风险提示信息", "业务日志号","memo","time"]szlist = ["省本", "成都", "自贡", "攀枝", "泸州", "德阳", "绵阳", "广元", "遂宁", "内江", "乐山", "南充", "眉山", "宜宾", "广安", "达州", "雅安", "巴中", "资阳", "阿坝", "甘孜", "凉山"]# connect = create_engine("mysql+pymysql://root:@127.0.0.1:3306/ywgk?charset=utf8")connect = create_engine("mysql+mysqlconnector://root:@127.0.0.1:3306/ywgk?charset=utf8")# engine = create_engine("mysql+mysqlconnector://scott:tiger@localhost/foo")def findSZ(filename): for sz in szlist: if filename.find(sz) != -1: return sz return Nonedef ReadExcel(filename): xlsdf = "" xlsdf = pd.read_excel(filename) """" remove columns="sz" or "市" """ if "市" in list(xlsdf.keys().to_list()): xlsdf.drop(columns="市", axis=1, inplace=True) if "sz" in list(xlsdf.keys().to_list()): xlsdf.drop(columns="sz", axis=1, inplace=True) xlsdf = xlsdf.fillna("").astype("string") return xlsdfdef filterDataOfSz(filename, xlsdf): sz = findSZ(filename) print(sz) """ 筛选出包含对应市州的数据。 """ if sz != None: xlsdf = xlsdf[xlsdf["经办机构"].str[:2] == sz] # 筛出本市州数据 return xlsdfdef ConCatRestCols(xlsdf): """ 去掉业务部分字段,保留市州反馈意见。 """ print(xlsdf) # if xlsdf==None: # print(filename+"为空,需要处理") # return xlfdf_keys_set = set(xlsdf.keys().to_list()) xlsdf_restkeys_set = xlfdf_keys_set - set(ywstrList) xlsdf_restkeys_list = list(xlsdf_restkeys_set) xls_rest_df = xlsdf.loc[:, xlsdf_restkeys_list] # 可以正确操作 xlsdf["memo"] = "#" for col in xlsdf_restkeys_list: xlsdf["memo"] += xlsdf[col] # return xlsdfdef SetTimeStamp(filename, xlsdf): xlsdf["time"] = os.stat(str(filename)).st_mtime return xlsdfasync def ProcessExcelAndtosql(filename, table): df = ReadExcel(filename) df = filterDataOfSz(filename=filename, xlsdf=df) df = ConCatRestCols(df) df = SetTimeStamp(filename=filename, xlsdf=df) df = df.loc[:, ywstrListMemo] print(filename) print(df) df.to_sql(name=table, con=connect, if_exists="append", index=False, chunksize=1000, method="multi")def profile(func): def wrapers(*args,**kwargs): print("测试开始") begin=time.time() func(*args,**kwargs) end=time.time() print(f"耗时{end-begin}秒") return wrapers# async def getmsg(msg):# print(f"#{msg}")# await asyncio.sleep(1)def getFiles(src:str): import pathlib files=[] for file in pathlib.Path(src).rglob("*.xls?"): files.append(str(file)) return filesdef process_asyncio(files,table): loop=asyncio.new_event_loop() tasks=[loop.create_task(ProcessExcelAndtosql(filename,table)) for filename in files] loop.run_until_complete(asyncio.wait(tasks))@profiledef run(iterable,table): process_count = multiprocessing.cpu_count() # print(process_count) pool = multiprocessing.Pool(process_count-2) iterable=get_chunks(iterable, process_count) for lst in iterable: pool.apply_async(process_asyncio, args=(lst,table)) pool.close() pool.join()def main(): files = getFiles(r"e:\市州返回") run(files, "ywgk3")def get_chunks(iterable,num): # global iterable import numpy as np return np.array_split(iterable, num)# import profileif __name__=="__main__": main()
本人只是编程的业余爱好者,只是把技术用于辅助工作,并没有深入研究技术理论,都是野路子,还请批评指正。
关键词:
推荐阅读
首都新机场叫什么名字 机场是24小时开放的吗?
首都新机场叫什么名字?一般指北京大兴国际机场。北京大兴国际机场定位为大型国际航空枢纽,国家发展新动力源,支撑雄安新区建设的京津冀区 【详细】
什么牌子的插排好 优质的插排应该具备哪些特质呢?
什么牌子的插排好品牌插座有公牛、西门子, TCL, 西蒙, 奇胜, 松下, 施耐德, ABB、朗能,等。为了满足大众对插座的各种需求,各 【详细】
李嘉诚的车是什么 李嘉诚长江塑料厂怎么样?
李嘉诚的车是什么说到李嘉诚,我们肯定会很熟悉。出生于潮汕的他是香港首富,也是中国顶级房地产大亨。根据《福布斯》、2020年发布的数据, 【详细】
飞龙股份002536今日主力资金流向 飞龙股份002536主力控盘分析
飞龙股份002536今日主力资金流向【飞龙股份(002536)】 今日主力资金流向,资金净流入105 11万元,今日超大单净流入296 82万元,大单净流入 【详细】
中国获得诺贝尔奖的人汇总 诺贝尔奖介绍
中国获得诺贝尔奖的人汇总截至目前为止,我国获得诺贝尔奖的人一共有十一个1、杨振宁,美籍华人,1957年获诺贝尔物理学奖。2、李政道,美籍 【详细】
相关新闻
- 天天关注:一个读取excel数据处理完成后读入数据库的例子
- 结构游戏属于什么游戏(儿童利用积木积塑泥沙等材料进行的游戏属于什么游戏) 每日速读
- 商家促销手段 商家促销的作用
- 天天时讯:信用卡逾期逾期多久联系紧急联系人?网贷逾期没钱还会不会上门催收?
- 大熊猫的生活习性 大熊猫资料简介
- 三极管的多种玩法
- “藏起来” 的免赔额条款
- 为什么人们工作开始使用ChatGPT人工智能AI是“势在必行”的
- 世界看点:心与什么相表里(脏腑表里关系口诀)
- 2号线东延线建设新进展来了
- 环球微头条丨床头挂什么好(床头挂啥最好)
- 袁隆平关于水稻的心愿
- 股票配债买入_股票配债
- 湿气重头发油是什么原因_头发油是什么原因 全球讯息
- 风光互补路灯的系统工作原理|头条
- 拼内存!拼影像!手机这么卷?国产厂商还能拿出什么新花样?
- 大屏机握持感不足,轻薄小屏挑选困难,618手机盘点-小尺寸篇 焦点报道
- 每月花上万搞流量,外卖商家诉苦:别人都在刷单,你不刷做不下去 天天热文
- 手机行业要变天?魅族前高管发布预测:苹果将改写硬件形态!-天天快消息
- 口苦口臭吃什么水果(口干口臭怎么办)-当前速看