我正在嘗試在大型數據幀(〜300萬行)上執行多個操作。
使用一個代表我的數據的小測試集,我提出了一個解決方案。
但是,當使用大型數據集作爲輸入時,腳本運行速度非常緩慢。
在熊貓組上運行
這裏是應用程序的主循環:
def run():
df = pd.DataFrame(columns=['CARD_NO','CUSTOMER_ID','MODIFIED_DATE','STATUS','LOYALTY_CARD_ENROLLED'])
foo = input.groupby('CARD_NO', as_index=False, sort=False)
for name, group in foo:
if len(group) == 1:
df = df.append(group)
else:
dates = group['MODIFIED_DATE'].values
if all_same(dates):
df = df.append(group[group.STATUS == '1'])
else:
df = df.append(group[group.MODIFIED_DATE == most_recent(dates)])
path = ''
df.to_csv(path, sep=',', index=False)
的邏輯如下:
對於每個CARD_NO
- 如果只有1 CARD_NO,添加行到新數據幀
- 如果有相同的CARD_NO> 1,則檢查MODIFIED_DATE,
- 如果MODIFIED_DATE不同,則取最近日期的行
- 如果所有MODIFIED_DATES均爲eq UAL,採取取其行有STATUS = 1
發生在身邊每個迭代的放緩,
input.groupby('CARD_NO', as_index=False, sort=False)
目前我正在試圖通過拆分通過上面的語句返回的組並行化循環,但我不確定這是否是正確的方法...
我是否忽略了熊貓的核心功能?
有沒有更好的,更多熊貓式的解決這個問題的方法?
任何幫助,非常感謝。
謝謝。
你從哪裏讀取數據?它是一個CSV文件? – nitin
是的。它大小約爲145mb。 – Zihs
不斷追加效率不高;將每個組的生成幀附加到列表中; concat在最後 – Jeff