[英]How can I make my Python code run faster?
我需要過濾或刪除值,我的代碼需要很長時間。 而且,這些都是非常小的文件,因為我將在更大的文件上運行相同的過程。 我有 Windows pro,Xeon,64 RAM,SDD,但只使用 4%。 那么我該如何改進呢? 也許使用 numpy、pandas 或異步、多處理和多線程?
df = pd.read_csv('rent3_dupli_mayor_0.csv', sep = ',', dtype='unicode', low_memory=False)
dfr_3 = pd.read_csv('renta3_3_1.csv', sep = ',', dtype='unicode', low_memory=False)
dfr_3.describe(include='all')
df.describe(include='all')
list_3_1=pd.unique(df['v1']).tolist()
for ddel1 in list_3_1:
dfr_3 = dfr_3[dfr_3.v1 != ddel1]
也許 for 循環是錯誤的方式。 循環花費太多時間。
如何改進我的代碼? 我正在嘗試刪除在 dataframe 中可以找到的所有列表編號(唯一值:201429)。 如果你能看到我的 dataframe 有 22704716(值行)。
我不知道您的 dfs 是否不斷修補並且數據量不斷增加。 但我會向您推薦的是,不要使用 csv 文件,而是使用羽毛文件。
關於你的小代碼,有辦法解決它,我認為最有效的方法是構建一個 map。 根據您的獨特 ID,但我懷疑該因素是否會成為“真正的”麻煩。
dfr_3 = dfr_3[~dfr_3.v1.isin(list_3_1)]
這是羽毛文件的文檔
https://arrow.apache.org/docs/python/generated/pyarrow.feather.write_feather.html
我也有同樣的問題,請問可以提供更多信息嗎? 我認為當需要使用大型數據庫運行代碼時,您的問題非常重要。 Colud你或somebudy給我們一個關於“numpy,pandas或異步,多處理和多線程”的解釋?,拜托。 或一些代碼示例。 謝謝阿爾伯特
你可以試試這個:
dfr_3 = dfr_3[~dfr_3.v1.isin(list_3_1)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.