0
我很難理解如何利用/學習如何在我的Python代碼中使用多處理。我現在正在處理csv文件,這些文件在windows操作系統上有幾個演出和數千萬條記錄,並開始遇到巨大的處理速度障礙。我有以下代碼:我可以使用Python多處理來讓它在windows上運行得更快
import numpy as np
import pandas as pd
import datetime as dt
df = pd.read_csv(r'C:...\2017_import.csv')
df['FinalActualDate'] = pd.to_datetime(df['FinalActualDate'])
df['StartDate'] = pd.to_datetime(df['StartDate'])
df['DaysToInHome'] = (df['FinalActualDate'] - df['StartDate']).abs()/np.timedelta64(1, 'D')
df.to_csv(r'C:...\2017_output4.csv', index=False)
數據在文件上是3.6演出。數據如下:
Class,OwnerCode,Vendor,Campaign,Cycle,Channel,Product,Week,FinalActualDate,State,StartDate
3,ECM,VendorA,000206,06-17,A,ProductB,Initial,2017-06-14 02:01:00,NE,06-01-17 12:00:00
3,ECM,VendorB,000106,06-17,A,ProductA,Initial,2017-06-14 00:15:00,NY,06-01-17 12:00:00
3,ECM,AID,ED-17-0002-06,06-17,B,ProductB,Secondary,2017-06-13 20:30:00,MA,06-08-17 12:00:00
3,ECM,AID,ED-17-0002-06,06-17,C,ProductA,Third,2017-06-15 02:13:00,NE,06-15-17 12:00:00
此代碼適用於小型數據集,但實際大型數據集需要幾個小時。我嘗試了幾次迭代,導入concurrent.futures和multiprocessing沒有成功。我很失落,不值得我發佈我試過的東西。我意識到其他因素影響速度,但獲得新硬件不是一種選擇。任何指導將不勝感激。
你是在一個巨型文件或許多巨型文件上運行?我們在談論什麼樣的文件大小? –
你的數據是什麼樣的?特別是「FinalScanActualDate」和「MailDate」列的外觀如何?他們是否經常?如果是這樣的話,只要使用'format'參數到'pd.to_datetime',就可以獲得很多**的性能,或者如果你期望重複很多,可以嘗試記憶它。該函數使用日期分析器來推斷您的格式,這是一項昂貴的操作。 –
@BrendenPetersen對不起,這是一個巨大的3.6 gig文件,超過3000萬條記錄。我更新了這個問題。 –