我有一个7 7GB的csv文件,我想把它分成更小的块,这样在笔记本上用Python语言进行分析时,它的可读性和速度更快。我想从它中获取一个小的设置,可能是250MB,那么我该怎么做呢?
发布于 2013-11-18 01:48:30
您不需要Python来拆分csv文件。使用您的shell:
$ split -l 100 data.csv会将data.csv分成100行的块。
发布于 2016-04-15 18:17:56
我不得不做一个类似的任务,并使用了pandas包:
for i,chunk in enumerate(pd.read_csv('bigfile.csv', chunksize=500000)):
chunk.to_csv('chunk{}.csv'.format(i), index=False)发布于 2021-04-14 20:45:18
这是一个小的python脚本,我用它将一个文件data.csv拆分为几个CSV部分文件。可以使用chunk_size (每个零件文件的行数)控制零件文件的数量。
原始文件的标题行(列名)将复制到每个零件CSV文件中。
它适用于大文件,因为它使用readline()一次读取一行,而不是一次将整个文件加载到内存中。
#!/usr/bin/env python3
def main():
chunk_size = 9998 # lines
def write_chunk(part, lines):
with open('data_part_'+ str(part) +'.csv', 'w') as f_out:
f_out.write(header)
f_out.writelines(lines)
with open('data.csv', 'r') as f:
count = 0
header = f.readline()
lines = []
for line in f:
count += 1
lines.append(line)
if count % chunk_size == 0:
write_chunk(count // chunk_size, lines)
lines = []
# write remainder
if len(lines) > 0:
write_chunk((count // chunk_size) + 1, lines)
if __name__ == '__main__':
main()https://stackoverflow.com/questions/20033861
复制相似问题