老程序分享給公司文員的福利:Python如今快速把超大txt文件轉存爲csv的

@本文來源於公衆號:csdn2299,喜歡可以關注公衆號 程序員學府
今天項目有個需求,就是把txt文件轉爲csv,txt之間是空格隔開,轉爲csv時需要把空格轉換爲逗號,網上找的一個版本,只需要三行代碼,特別犀利:

import numpy as np
import pandas as pd
 
data_txt = np.loadtxt('datas_train.txt')
data_txtDF = pd.DataFrame(data_txt)
data_txtDF.to_csv('datas_train.csv',index=False)

上述的datas_train.txt只有不到100MB,560W行數據,三分鐘之內轉換完畢。

然後我換了一個5600W行共1.2G的txt文本,用上述代碼轉換,電腦直接卡死了。

原因在於上述代碼會把全部的txt加載進內存,然後再轉換,這就會造成電腦內存耗盡。

然後就想到了切割數據的辦法,具體實現如下:

import numpy as np
import pandas as pd
 
 
train_data = pd.read_table('big_data.txt',iterator=True,header=None)
 
while True:
 try:
  chunk = train_data.get_chunk(5600000)
  chunk.columns = ['user_id','spu_id','buy_or_not','date']
  chunk.to_csv('big_data111.csv', mode='a',header=False,index = None)
 except Exception as e:
  break

這裏我把數據分成了小塊,每塊數據有560W行,分11次加載就能全部加載完了,速度也很快,總共花了5分鐘左右。

注意,get_chunk()裏面的參數表示文件的行數,而非字節數。

非常感謝你的閱讀
大學的時候選擇了自學python,工作了發現吃了計算機基礎不好的虧,學歷不行這是沒辦法的事,只能後天彌補,於是在編碼之外開啓了自己的逆襲之路,不斷的學習python核心知識,深入的研習計算機基礎知識,整理好了,我放在我們的微信公衆號《程序員學府》,如果你也不甘平庸,那就與我一起在編碼之外,不斷成長吧!

其實這裏不僅有技術,更有那些技術之外的東西,比如,如何做一個精緻的程序員,而不是“屌絲”,程序員本身就是高貴的一種存在啊,難道不是嗎?[點擊加入]想做你自己想成爲高尚人,加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章