簡體   English   中英

如何讓我的 Python 代碼運行得更快?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM