簡體   English   中英

使用 Pandas 為大尺寸 csv 數據文件創建字典

[英]creating a dictionary for big size csv data files using pandas

我正在嘗試為一個大尺寸的 csv 文件創建一個字典文件,該文件被分成要處理的塊,但是當我創建字典時,它只是為一個夾頭做,當我嘗試附加它時,它通過了 epmty數據框到新的 df。 這是我使用的代碼

wdata = pd.read_csv(fileinput, nrows=0,).columns[0]
skip = int(wdata.count(' ') == 0)
dic = pd.DataFrame()
for chunk in pd.read_csv(fileinput, names=['sentences'], skiprows=skip, chunksize=1000):
    dic_tmp = (chunk['sentences'].str.split(expand=True).stack().value_counts().rename_axis('word').reset_index(name='freq'))


    dic.append(dic_tmp)
dic.to_csv('newwww.csv', index=False)

如果我保存了 dic_tmp 一個只是一個塊的字典而不是整個集合,並且 dic 需要大量時間來處理但最后返回空數據幀,我的代碼有任何錯誤嗎?

輸入csv就像

在此處輸入圖片說明

輸出 csv 就像

在此處輸入圖片說明

預期輸出應該是

在此處輸入圖片說明

所以它不會將塊添加在一起,它只是粘貼新塊,而不管前一個塊或 csv 中有什么。

為了將列拆分為單詞並計算出現次數: df['sentences'].apply(lambda x: pd.value_counts(x.split(" "))).sum(axis=0)

或者

from collections import Counter result = Counter(" ".join(df['sentences'].values.tolist()).split(" ")).items()

兩者似乎同樣緩慢,但可能比您的方法更好。 取自此處: 從 Pandas 數據框中計算不同的單詞

我看到的幾個問題是

  1. 為什么要讀取 csv 文件兩次? 第一次在這里wdata = pd.read_csv(fileinput, nrows=0,).columns[0]和第二次在for循環中。

  2. 如果您不進一步使用組合數據框。 我認為最好以如下所示的附加模式將塊寫入 csv 文件

for chunk in pd.read_csv(fileinput, names=['sentences'], skiprows=skip, chunksize=1000):
    dic_tmp = (chunk['sentences'].str.split(expand=True).stack().value_counts().rename_axis('word').reset_index(name='freq'))
    dic_tmp.to_csv('newwww.csv', mode='a', header=False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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