我必须从CAN读取并分析CSV格式的日志文件。它有161180行,我只用分号分隔566列。这是我的代码。
import csv
import dtale
import pandas as pd
path = 'C:\Thesis\Log_Files\InputOutput\Input\Test_Log.csv'
raw_data = pd.read_csv(path,engine="python",chunksize = 1000000, sep=";")
df = pd.DataFrame(raw_data)
#df
dtale.show(df)
当我在Jupyter Notebook中运行代码时,遇到以下错误信息。请帮助我。提前感谢!
内存错误:无法为形状为(161180,566)且数据类型为对象的数组分配348. MiB
import time
import pandas as pd
import csv
import dtale
chunk_size = 1000000
batch_no=1
for chunk in pd.read_csv("C:\Thesis\Log_Files\InputOutput\Input\Book2.csv",chunksize=chunk_size,sep=";"):
chunk.to_csv('chunk'+str(batch_no)+'.csv', index=False)
batch_no+=1
df1 = pd.read_csv('chunk1.csv')
df1
dtale.show(df1)
我用上面的代码只有10行和566列。然后它的工作。如果我考虑所有的行(161180),它不工作。有人能帮助我吗?提前感谢!
I have attached the output here
1条答案
按热度按时间egdjgwm81#
加载数据文件时RAM不足。最佳选择是将文件拆分为块并读取文件块
要读取前999,999(非标题)行:
如果要读取行1,000,000 ... 1,999,999
您可能还需要使用chunksize:
这将返回一个用于迭代的TextFileReader对象: