python csv文件数据写入和读取(适用于超大数据量)

python csv文件数据写入和读取(适用于超大数据量)

一般情况下由于我们使用的数据量比较小,因此可以将数据一次性整体读入或者写入,而且可以一次性对数据进行加工和处理。

但是当数据量比较大,比如有5G的数据量,这个时候想要一次性对所有数据进行操作就比较困难了。所以需要逐条将数据进行处理。

import csv

# 在最开始创建csv文件,并写入列名。相当于做一些准备工作
with open(savepath, 'w') as csvfile:         #以写入模式打开csv文件,如果没有csv文件会自动创建。
    writer = csv.writer(csvfile)
    # writer.writerow(["index","a_name","b_name"])  # 写入列名,如果没有列名可以不执行这一行
    # writer.writerows([[0, 1, 3], [1, 2, 3], [2, 3, 4]]) # 写入多行用writerows
  
 #如果你的数据量很大,需要在循环中逐行写入数据
 for i in range(100000):
	 with open(savepath, 'a+', newline='') as csvfile:      # a+表示以追加模式写入,如果用w会覆盖掉原来的数据。如果没有newline='',则逐行写入的数据相邻行之间会出现一行空白。读者可以自己试一试。
	 csv_write = csv.writer(csvfile)
	 csv_write.writerow(row_data)    # 写入1行用writerow; row_data是你要写入的数据,最好是list类型。
 
 
f = open(savepath)
csv_read = csv.reader(f)
for line in csv_read:                # csv.reader(f)返回一个迭代器。迭代器的好处就是可以不用一次性将大量的数据都读进来,而是如果你需要一条,就给迭代器一个命令让它输出一条。关于迭代器的优点读者可以另行学习。
	print line

需要注意从csv文件读出来的数据是字符串,不是浮点数。使用float(str)完成转换。

# 也可以使用pandas读取csv文件
import pandas as pd

data = pd.read_csv(filepath, head=None, encoding='utf-8')   #data是一个dataframe对象
# 关于read_csv函数,这里并不做详细讲解。

data = data.values().astype('float32')  #将dataframe转换为数值矩阵
  • 17
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值