python 快速把超大txt文件轉(zhuǎn)存為csv的實(shí)例
今天項目有個需求,就是把txt文件轉(zhuǎn)為csv,txt之間是空格隔開,轉(zhuǎn)為csv時需要把空格轉(zhuǎn)換為逗號,網(wǎng)上找的一個版本,只需要三行代碼,特別犀利:
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行數(shù)據(jù),三分鐘之內(nèi)轉(zhuǎn)換完畢。
然后我換了一個5600W行共1.2G的txt文本,用上述代碼轉(zhuǎn)換,電腦直接卡死了。
原因在于上述代碼會把全部的txt加載進(jìn)內(nèi)存,然后再轉(zhuǎn)換,這就會造成電腦內(nèi)存耗盡。
然后就想到了切割數(shù)據(jù)的辦法,具體實(shí)現(xiàn)如下:
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
這里我把數(shù)據(jù)分成了小塊,每塊數(shù)據(jù)有560W行,分11次加載就能全部加載完了,速度也很快,總共花了5分鐘左右。
注意,get_chunk()里面的參數(shù)表示文件的行數(shù),而非字節(jié)數(shù)。
以上這篇python 快速把超大txt文件轉(zhuǎn)存為csv的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)信號時域統(tǒng)計特征提取代碼
今天小編就為大家分享一篇python實(shí)現(xiàn)信號時域統(tǒng)計特征提取代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python selenium爬蟲實(shí)現(xiàn)定時任務(wù)過程解析
這篇文章主要介紹了Python selenium爬蟲實(shí)現(xiàn)定時任務(wù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
python Autopep8實(shí)現(xiàn)按PEP8風(fēng)格自動排版Python代碼
這篇文章主要介紹了python Autopep8實(shí)現(xiàn)按PEP8風(fēng)格自動排版Python代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

