python读取csv大数据

2015-03-29 23:21:40 liujianfei526 阅读数 1241
#- * - coding: UTF-8 -*-
import mysql.connector
import csv
#数据库连接
config={
        'host':'127.0.0.1',#默认127.0.0.1
        'user':'root',
        'password':'ict',
        'port':3306 ,#默认即为3306
        'database':'tianyi',
        'charset':'utf8'#默认即为utf8
        }
try:
  cnn=mysql.connector.connect(**config)
  if cnn:
      print 'ok'
except mysql.connector.Error as e:
  print('connect fails!{}'.format(e))
#处理
cursor=cnn.cursor()
#插入数据
#读取用户csv的文件
read = csv.reader(open('tianchi_mobile_recommend_train_user.csv'))
count = 0
datas = []
for useid,idtem,behavior,ugeohash,cate,time in read:
    sql_insert="insert into tian_yi_user(user_id,item_id,behavior_type,user_geohash,item_category,time) values (%(user_id)s,%(item_id)s,%(behavior_type)s,%(user_geohash)s,%(item_category)s,%(time)s)"
    data = {'user_id':useid,'item_id':idtem,'behavior_type':behavior,'user_geohash':ugeohash,'item_category':cate,'time':time}
    datas.append(data)
    count+=1
    if count/200000==1:
        cursor.executemany(sql_insert,datas)
        cnn.commit()
        count=0
        datas=[]
cursor.executemany(sql_insert,datas)
cnn.commit()
cursor.close()

cnn.close() 

#读取商品csv的文件

read = csv.reader(open('tianchi_mobile_recommend_train_item.csv'))
for idtem,geohash,category in read:
   sql_insert="insert into tian_yi_item(item_id,item_geohash,item_category) values (%(item_id)s,%(item_geohash)s,%(item_category)s)"
    data = {'item_id':idtem,'item_geohash':geohash,'item_category':category}
    cursor.execute(sql_insert,data)
cnn.commit()
cursor.close()

cnn.close()

读取文件数据时注释掉其中一个。

2018-11-08 11:57:00 weixin_30267697 阅读数 365
 1 rd = pd.read_csv(path7 + u'0501-0914.csv',encoding = 'gbk',iterator = True)
 2 loop =True
 3 dflst = []
 4 i = 0
 5 while loop:
 6     try:
 7         i+=1
 8         df0 = rd.get_chunk(50000)
 9         dflst.append(df0)
10     except StopIteration:
11         loop = False
12 #        print 'stop'
13 df = pd.concat(dflst,ignore_index =True)

 

转载于:https://www.cnblogs.com/lyf136686029/p/9928255.html

2019-03-30 21:35:53 qq7835144 阅读数 7984

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转换为数值矩阵
2020-04-02 13:58:59 MelindaZhong 阅读数 72

python读取csv文件报错

数据:链家分区汇总.csv
说明:该数据非官方数据,不具有真实使用价值,仅作为学习素材使用
思路如下:

读取报错initializing
文件名中文导致错误
修改文件名为英文
增加编码及引擎信息
先open后读取
UnicodeDecodeError:gbk...

**总结:

  1. 文件名为中文名会导致读取失败。日常工作中最好使用英文名作为文件名。
  2. 读取文件样成指定engine,encoding,sep的习惯,减少这种不必要的报错,提高效率。
  3. 很多错误都是为自己不良的编码习惯买单。**

以下为具体呈现:

1、OSError: Initializing from file failed

直接使用pd.read_csv(),不指定除了path之外的要素,提示文件初始化(Initializing)错误。
直接读取,不指定编码方式和分隔符错误信息提示

直接修改文件名–可解决

在这里插入图片描述

增加编码方式及引擎

在这里插入图片描述

先open后读取

在这里插入图片描述
在这里插入图片描述
增加编码方式后成功读取
在这里插入图片描述

2018-10-10 19:49:00 weixin_30897079 阅读数 496
rd = pd.read_csv(path7 + u'0501-0914.csv',encoding = 'gbk',iterator = True)
loop =True
dflst = []
i = 0
while loop:
    try:
        i+=1
        df0 = rd.get_chunk(50000)
        dflst.append(df0)
    except StopIteration:
        loop = False
#        print 'stop'
df = pd.concat(dflst,ignore_index =True)

转载于:https://www.cnblogs.com/lyf136686029/p/9768616.html