iT邦幫忙

1

2G txt數據分析前置處理 懇求給條路學習

1.爬文後先做數據清理 但轉成csv會有好多個 請問各位數據清理都怎麼做呢?
目前我看文章都用panda但如果分成好多個csv他會合成一個嗎?
還是可以直接用txt 或是有別的存放讀取方式?
panda nan or 雜訊整理完數據會幫我改文件的值嗎?
我要整理連續雜訊,NAN值
時間 數值 數值
0.001 0.102 nan
0.002 0.111 nan
0.003 0.111 355.99
大概像這樣的資料 無中文

froce iT邦大師 5 級 ‧ 2018-03-28 12:05:56 檢舉
我只能這樣回你:看你程式怎麼寫。
你要弄成一個大檔也可以,要分開也可以,只是弄成大檔要注意記憶體會不會爆掉、要不要分段寫入、程式效能等問題。

2 個回答

1
最佳解答
  1. pandas可以用concat合併多個DataFrame(你如果用pd.read_csv()讀進去就是DataFrame的格式),可以參考我寫的這篇文章Pandas(Python中的Excel)Day4-DataFrame的新增、迴圈與刪除
    ,裡面的「新增rows」部分有談到。
  2. 因為2G的檔案真的比較大,所以一次性的處理才放在pandas上面處理,不過必須注意memory不足的問題,pnadas好用歸好用,但是很吃記憶體的。
  3. 要處理那個樣子的nan值其實不一定要用到pandas,用一般檔案讀寫即可,還可透過readline的方式,一行一行處理。
file = open('file_name', 'r', encoding='utf8')
for line in file:
    items = line.split(' ')
    print('this is time', items[0])
    print('this is num1', items[1])
    print('this is num2', items[2])
    if items[1] == 'nan':
        print('num1 is nan')
...
  1. 如果懂一點linux的話,可以查詢一下Linux的語法,grap或pipe可以幫助你快速完成一些事情。
  2. 另外上面也有人提到用NoSQL完成,建議你把資料處理完之後,簡單一點的就是一行行塞進去,怕DB IO太多,就幾十行幾十行塞進去,可以參考我寫的這篇Python與MongoDB的互動,用本機端的Mongo資料傳輸會比較快。
0
wiseguy
iT邦超人 1 級 ‧ 2018-03-28 14:26:55

如果只是單純文字資料,沒有關聯性,或是關聯不是太重要,可使用 NOSQL 的 DB / Engine 儲存再處理。比如 MongoDB。處理幾百萬條的資料查詢,速度比你放到 RDB 或純文字要迅速多了。

我要發表回答

立即登入回答