一个读取excel数据处理完成后读入数据库的例子
最近收集了一批数据,各地根据问题数据做出反馈,但是各地在反馈的时候字段都进行了创新,好在下发的数据内容并没有改变,开始写的单进程的,由于时间较长,耗时380 秒,又改成多进程的,时间缩短为80-秒。现在把程序发出来,请各位大神进行指正。
import multiprocessing
import os
import time
import pandas as pd
from sqlalchemy import create_engine
import asyncio
import 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 None
def 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 xlsdf
def filterDataOfSz(filename, xlsdf):
sz = findSZ(filename)
print(sz)
"""
筛选出包含对应市州的数据。
"""
if sz != None:
xlsdf = xlsdf[xlsdf['经办机构'].str[:2] == sz] # 筛出本市州数据
return xlsdf
def 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 xlsdf
def SetTimeStamp(filename, xlsdf):
xlsdf['time'] = os.stat(str(filename)).st_mtime
return xlsdf
async 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 files
def 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))
@profile
def 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 profile
if __name__=="__main__":
main()
本人只是编程的业余爱好者,只是把技术用于辅助工作,并没有深入研究技术理论,都是野路子,还请批评指正。
奥特曼YC演讲:套壳ChatGPT者死,我行不代表你行
奥特曼简单一句话,让AI创业公司瑟瑟发抖:“套壳”OpenAI,注定消亡!这是在最新YC校友分享会上,OpenAICEO奥特曼发表的演讲观点。为此他还特意补充道:尤其别花太多精力在UI界面上。一时间引发共鸣无数。不少业内人士表示:现实是,我就在目睹很多这样的事情发生。除了这句话以外,奥特曼这段演讲中可谓金句频出,个中不少“干货细节”,也被大伙儿纷纷摘录转发——站长网2023-10-09 15:49:510000抖音回应进军基金销售:目前没有申请基金销售牌照
据中国基金报报道,近期抖音联合部分头部基金公司进行了基金销售的相关测试,并且与一些公司共同探讨未来基于抖音生态开展基金销售的业务模式。抖音已经做好基金销售前期准备工作,静待业务资格正式获批。具体代销业务开展而言,抖音入局基金销售的第一步便是牵手基金公司旗下货币基金,后续再逐渐扩展到非货代销业务领域。针对上述消息,对此,抖音集团回应称,目前没有申请基金销售牌照,也没有和基金公司进行测试。站长网2023-07-20 11:07:540000谷歌向开发人员提供Gemini 1.5 Pro的API支持
Google已经开始为开发人员提供对Gemini1.5Pro的API支持。这意味着开发人员现在可以在AIStudioUI中试用Gemini1.5Pro。这一举措旨在鼓励大家利用1M令牌上下文窗口构建产品。Gemini1.5Pro的API支持为开发人员提供了更多的灵活性和功能,使他们能够更好地利用这一强大的工具来开发新的应用程序和服务。站长网2024-03-22 09:35:370001苹果语音助手功能将重大升级:Hey Siri成历史
快科技6月4日讯,苹果WWDC开发者大会将于北京时间6月6日凌晨1点举办。除了万众期待的iOS17操作系统、所谓的AR/MR头戴等设备,名记MarkGurman爆料称,苹果还将对语音助手Siri做出重大调整。简言之,沿用多年的Heysiri”唤醒词将改为Siri”,同时,用户可以在Siri命令之后直接跟上命令语句。站长网2023-06-05 19:28:220001真假“长文本”,国产大模型混战
Kimi有多火爆?凭一己之力搅乱A股和大模型圈。Kimi概念股连日引爆资本市场,多个概念股随之涨停。在一片看好的态势中,谁都想来沾个边,据光锥智能不完全统计,目前,至少有包括读客文化、掌阅科技、万兴科技等在内的十家上市公司发布公告透露正在了解或接入了Kimi智能助手。眼看着Kimi的火越烧越旺,大厂也垂涎三尺,连夜加入了大模型“长文本”的四国大战。站长网2024-03-26 17:37:320000