由于大小原因,Python数据帧无法读取CSV
我正在尝试将CSV文件读取到数据帧,但由于CSV太大,进程被终止,因此出现问题 我只是想对数据帧做一些简单的更新 这是我当前的代码:由于大小原因,Python数据帧无法读取CSV,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试将CSV文件读取到数据帧,但由于CSV太大,进程被终止,因此出现问题 我只是想对数据帧做一些简单的更新 这是我当前的代码: df = pd.read_csv(input_file) df = df[df.col_5 != 'col_5'] columns_req = ['COL_1','COL_2','COL_3','COL_4'] df = df.loc[:,columns_req] df = df.rename(columns={col:col.lower() for col in
df = pd.read_csv(input_file)
df = df[df.col_5 != 'col_5']
columns_req = ['COL_1','COL_2','COL_3','COL_4']
df = df.loc[:,columns_req]
df = df.rename(columns={col:col.lower() for col in df.columns})
df.to_csv(output_file, sep=',', index=False)
当使用较小的CSV时,上述所有代码都能正常工作,但当使用较大的CSV时,这些代码会中断
我有办法处理这个吗
我已经读到,我可以迭代,例如:
foo = pd.read_csv(input_file, iterator=True, chunksize=1000)
但我不知道这是否会像我预期的那样起作用。如何将我的更改应用于foo,然后在末尾再次合并所有行?您可以阅读,正如您所说的成片阅读。以下是一个例子:
import pandas as pd
import numpy as np
import time
df = pd.DataFrame(data=np.random.randint(99999, 99999999, size=(10000000,10)),columns=['A','B','C','D','E','F','G','H','I','J'])
df['K'] = pd.util.testing.rands_array(5,10000000)
df.to_csv("my_file.csv")
如果您以常规方式阅读文件:
start = time.time()
df = pd.read_csv('my_file.csv')
end = time.time()
print("Reading time: ",(end-start),"sec")
Read time: 20.328343152999878 sec
在阅读的时候
start = time.time()
chunk = pd.read_csv('my_file.csv',chunksize=1000000)
end = time.time()
print("Reading time: ",(end-start),"sec")
pd_df = pd.concat(chunk)
Reading time: 0.011000394821166992 sec
你可以读,就像你说的那样。以下是一个例子:
import pandas as pd
import numpy as np
import time
df = pd.DataFrame(data=np.random.randint(99999, 99999999, size=(10000000,10)),columns=['A','B','C','D','E','F','G','H','I','J'])
df['K'] = pd.util.testing.rands_array(5,10000000)
df.to_csv("my_file.csv")
如果您以常规方式阅读文件:
start = time.time()
df = pd.read_csv('my_file.csv')
end = time.time()
print("Reading time: ",(end-start),"sec")
Read time: 20.328343152999878 sec
在阅读的时候
start = time.time()
chunk = pd.read_csv('my_file.csv',chunksize=1000000)
end = time.time()
print("Reading time: ",(end-start),"sec")
pd_df = pd.concat(chunk)
Reading time: 0.011000394821166992 sec