[英]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 數據框中計算不同的單詞
我看到的幾個問題是
為什么要讀取 csv 文件兩次? 第一次在這里wdata = pd.read_csv(fileinput, nrows=0,).columns[0]
和第二次在for
循環中。
如果您不進一步使用組合數據框。 我認為最好以如下所示的附加模式將塊寫入 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.