2016-05-16 14:42:01 kellyseeme 阅读数 3749
  • python数据分析与机器学习实战【2019新版】

    购买课程后,请扫码进入学习群,获取唐宇迪老师答疑 Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。学完该课程即可: 1.掌握Python数据科学工具包,包括矩阵数据处理与可视化展示。 2.掌握机器学习算法原理推导,从数学上理解算法是怎么来的以及其中涉及的细节。 3.掌握每一个算法所涉及的参数,详解其中每一步对结果的影响。 4.熟练使用Python进行建模实战,基于真实数据集展开分析,一步步完成整个建模实战任务。

    93875 人正在学习 去看看 唐宇迪

python中读取数据的时候有几种方法,无非是read,readline,readlings和xreadlines几种方法,在几种方法中,read和xreadlines可以作为迭代器使用,从而在读取大数据的时候比较有效果.

在测试中,先创建一个大文件,大概1GB左右,使用的程序如下:

import os.path
import time
while os.path.getsize('messages') <1000000000:
    f = open('messages','a')
    f.write('this is a file/n')
    f.close()

print 'file create complted'

在这里使用循环判断文件的大小,如果大小在1GB左右,那么结束创建文件。--需要花费好几分钟的时间。


测试代码如下:

#22s
start_time = time.time()
f = open('messages','r')
for i in f:
    end_time = time.time()
    print end_time - start_time
    break
f.close()

#22s
start_time = time.time()
f = open('messages','r')
for i in f.xreadlines():
    end_time = time.time()
    print end_time - start_time
    break
f.close()


start_time = time.time()
f = open('messages','r')
k= f.readlines()
f.close()
end_time = time.time()
print end_time - start_time

使用迭代器的时候,两者的时间是差不多的,内存消耗也不是很多,使用的时间大概在22秒作用

在使用完全读取文件的时候,使用的时间在40s,并且内存消耗相当严重,大概使用了1G的内存。。


其实,在使用跌倒器的时候,如果进行连续操作,进行print或者其他的操作,内存消耗还是不可避免的,但是内存在那个时候是可以释放的,从而使用迭代器可以节省内存,主要是可以释放。

而在使用直接读取所有数据的时候,数据会保留在内存中,是无法释放这个内存的,从而内存卡死也是有可能的。


在使用的时候,最好是直接使用for i in f的方式来使用,在读取的时候,f本身就是一个迭代器,其实也就是f.read方法



2018-07-16 10:20:16 weixin_40127170 阅读数 504
  • python数据分析与机器学习实战【2019新版】

    购买课程后,请扫码进入学习群,获取唐宇迪老师答疑 Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。学完该课程即可: 1.掌握Python数据科学工具包,包括矩阵数据处理与可视化展示。 2.掌握机器学习算法原理推导,从数学上理解算法是怎么来的以及其中涉及的细节。 3.掌握每一个算法所涉及的参数,详解其中每一步对结果的影响。 4.熟练使用Python进行建模实战,基于真实数据集展开分析,一步步完成整个建模实战任务。

    93875 人正在学习 去看看 唐宇迪

可以试试下面这个方法:


2019-09-10 18:20:18 zhangcongyi420 阅读数 231
  • python数据分析与机器学习实战【2019新版】

    购买课程后,请扫码进入学习群,获取唐宇迪老师答疑 Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。学完该课程即可: 1.掌握Python数据科学工具包,包括矩阵数据处理与可视化展示。 2.掌握机器学习算法原理推导,从数学上理解算法是怎么来的以及其中涉及的细节。 3.掌握每一个算法所涉及的参数,详解其中每一步对结果的影响。 4.熟练使用Python进行建模实战,基于真实数据集展开分析,一步步完成整个建模实战任务。

    93875 人正在学习 去看看 唐宇迪

最近工作中需要临时将外部的excel数据导入到自己公司的系统中,作为原始的数据进行后续处理,一开始打算写一段程序进行处理的,想想还是放弃了,因为java程序读取excel的数据到mysql总体来说还是比较麻烦的,而且字段要一一对应上,如果是字段特别多,碰巧表也特别多的时候,这个工作量就比较大了,而且极其容易出错

excel生成批量sql语句

小编听说excel可以可以通过简单的函数生成批量的sql语句然后放到mysql的客户端进行批量插入也是一个不错的办法,先简单截个图介绍一下使用方法,以备后续查阅,如下

1、步骤1 ,准备一条原始的sql语句,比如我这里有一张表叫做temp表,里面的有10个字段,分别是a1 - a10,那么原始的sql语句应该是下面这样的,

insert into temp(a1,a2,a3,a4,a5,a6,a7) values ('?','?','?','?','?','?','?');

在这里插入图片描述

2、放在excel中怎么生成insert的sql语句呢?稍微改装一下即可,比如我们要导入到数据库的excel是下面这样的,正好对应了10个字段,由于数据行是从第二行开始的,因此改造成excel的语句如下,

=CONCATENATE("insert into temp(a1,a2,a3,a4,a5,a6,a7) values ('"&A2&"','"&B2&"','"&C2&"','"&D2&"','"&E2&"','"&F2&"','"&G2&"');")

在这里插入图片描述

3、只需要将这一行语句放到第二行最后一列的下一列即可,然后按回车键,
在这里插入图片描述
这时候可以看到有一条语句了,这条语句就是对应的mysqld的可执行sql,拷贝出来看看,
在这里插入图片描述

insert into temp(a1,a2,a3,a4,a5,a6,a7) values ('游艺娱乐场所设立审批','受理','季X娟','137356XX57X','XX广电旅游局','330701000000','游艺娱乐场所设立审批-一级审核');

4、得到了这条sql语句后,基本大功告成了,这时候并不需要每一行执行以下,只需要拖动角落的这个位置一直往下全部选中,此时就可以生成所有的sql语句了
在这里插入图片描述

得到了sql语句后,放在数据库的客户端执行以下就可以啦!网上关于这方面的参考资料不少

但问题是,如果每张表的数据量特别大,像我遇到的有6000多条数据的,就算一直往下拖就得好几分钟,手还不敢松开,而且崩溃的是有15个这样的sheet页要导进去,真是折腾啊

又仔细想想,听说python处理excel的数据导入很简单很方便啊,不如研究一下,说不定有意外的收获,如下就是花了点儿时间研究出来的,主要是为了解决单表数据量大的问题啊

python导入方式

1、单表导入,这里直接贴上代码了

因为本人也不是很懂python,仅仅是懂一些基本的语法,和java相比,操作的原理差不多,比如这里的总体思路,仍然是,引入外部jar包,连接指定的数据,然后使用jar包中的相关API操作excel完成数据导入到excel,


import xlrd
import pymysql

book = xlrd.open_workbook("C:/角色权限文件/金华——人员信息采集表20190910.xlsx")
#sheet = book.sheet_by_index(0);
sheet = book.sheet_by_name("游艺")
#建立mysql的连接
conn = pymysql.connect(
        host='你的数据库IP',
        user='root',
        passwd='数据库密码',
        db='数据库名称',
        port=3306,
        charset='utf8'
        )
# 获得游标
cur = conn.cursor()
query = 'insert into temp(a1,a2,a3,a4,a5,a6,a7) values(%s, %s, %s, %s, %s, %s,%s);'
# 创建一个for循环迭代读取xls文件每行数据的, 从第二行开始是要跳过标题行
for r in range(1, sheet.nrows):
      a1 = sheet.cell(r,0).value
      a2 = sheet.cell(r,1).value
      a3 = sheet.cell(r,2).value
      a4 = sheet.cell(r,3).value
      a5 = sheet.cell(r,4).value
      a6 = sheet.cell(r,5).value
      a7 = sheet.cell(r,6).value

      values = (a1,a2,a3,a4,a5,a6,a7)
      # 执行sql语句
      cur.execute(query, values)

cur.close()
conn.commit()
conn.close()
columns = str(sheet.ncols)
rows = str(sheet.nrows)
print ("导入 " +columns + " 列 " + rows + " 行数据到MySQL数据库!")


我用的是python的客户端编辑器pycharm,直接右键运行即可,python导入数据非常的快,从视觉上来看,我单张表的测试数据大概100多条,不到2秒就执行完毕了,基本上就是眨眼间的功夫,
在这里插入图片描述

但这样做的毛病是,我这里有11个sheet页啊,算下来就是11张表啊,如果按照这种做法去搞,岂不是得导入完一个表修改一下代码的参数啊,但是在网上查资料发现,并没有查到一个很好的Demo,可以解决我的问题,就是通过遍历所有的sheet完成数据导入,只好自己琢磨了,那就用java的思考方式来干吧,于是研究这个jar包里面的api,发现有一个叫做 sheet_names()的方法可以获得所有的sheet名称,

太好了,两个for循环绝对可以搞定,果不其然,就出现了下面的这样的代码,虽然是拼凑起来的,毫无封装可言,但是解决了问题,直接上代码,

import xlrd
import pymysql

book = xlrd.open_workbook("C:/角色权限文件/金华——人员信息采集表20190910.xlsx")

#获取所有的esheet
list = book.sheets()
print(list)

sheet_names = book.sheet_names();
print(sheet_names)
print(len(sheet_names[1]))

#建立mysql的连接
conn = pymysql.connect(
        host='数据库IP',
        user='root',
        passwd='密码',
        db='库名称',
        port=3306,
        charset='utf8'
        )

# 获得游标
cur = conn.cursor()
query = 'insert into temp(a1,a2,a3,a4,a5,a6,a7) values(%s, %s, %s, %s, %s, %s,%s);'

for i in sheet_names:
    sheet_i = book.sheet_by_name(i)

    # 创建一个for循环迭代读取xls文件每行数据的, 从第二行开始是要跳过标题行
    for r in range(1, sheet_i.nrows):
        a1 = sheet_i.cell(r, 0).value
        a2 = sheet_i.cell(r, 1).value
        a3 = sheet_i.cell(r, 2).value
        a4 = sheet_i.cell(r, 3).value
        a5 = sheet_i.cell(r, 4).value
        a6 = sheet_i.cell(r, 5).value
        a7 = sheet_i.cell(r, 6).value
        values = (a1, a2, a3, a4, a5, a6, a7)
        # 执行sql语句
        cur.execute(query, values)

cur.close()
conn.commit()
conn.close()

print ("导入成功")

代码部分基本上没有难度,如果想要拿过去用,只需要修改简单的字段名称即可,相信懂程序的都可以看得明白的,就不再过多解释啦,然后我们来执行以下,感受一下效果吧,11个sheet页,不到3秒的时间全部搞定,速度是非常快的
在这里插入图片描述
看到数据11张表的数据成功导入了,还是有一点小小的成就感的,
在这里插入图片描述

以上就是本篇的全部内容,篇幅不长,废话有点儿多,主要是想把问题解释清楚,希望对看到的同学有用!最后感谢观看!

2017-01-08 18:09:15 Yan456jie 阅读数 1782
  • python数据分析与机器学习实战【2019新版】

    购买课程后,请扫码进入学习群,获取唐宇迪老师答疑 Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。学完该课程即可: 1.掌握Python数据科学工具包,包括矩阵数据处理与可视化展示。 2.掌握机器学习算法原理推导,从数学上理解算法是怎么来的以及其中涉及的细节。 3.掌握每一个算法所涉及的参数,详解其中每一步对结果的影响。 4.熟练使用Python进行建模实战,基于真实数据集展开分析,一步步完成整个建模实战任务。

    93875 人正在学习 去看看 唐宇迪

python2.x和3.x都可以使用pymysql(3.x不支持MySQLdb

安装pymysql:  pip install pymysql


# -*- coding: utf-8 -*-
import pymysql
try:
#获取一个数据库连接,注意如果是UTF-8类型的,需要制定数据库
    conn=pymysql.connect(host='localhost',user='root',passwd='root',db='db_weibo',port=3306,charset='utf8')
    cur=conn.cursor()#获取一个游标
    cur.execute('select * from t_mweibo limit 10')
    data=cur.fetchall()
    for d in data :
        print data

    cur.close()#关闭游标
    conn.close()#释放数据库资源
except  Exception :print("发生异常")

2019-09-06 12:50:53 a72944392 阅读数 27
  • python数据分析与机器学习实战【2019新版】

    购买课程后,请扫码进入学习群,获取唐宇迪老师答疑 Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。学完该课程即可: 1.掌握Python数据科学工具包,包括矩阵数据处理与可视化展示。 2.掌握机器学习算法原理推导,从数学上理解算法是怎么来的以及其中涉及的细节。 3.掌握每一个算法所涉及的参数,详解其中每一步对结果的影响。 4.熟练使用Python进行建模实战,基于真实数据集展开分析,一步步完成整个建模实战任务。

    93875 人正在学习 去看看 唐宇迪

使用get方式读取数据

f=urllib.request.urlopen('http://192.168.11.78/cgi-bin/xxx.cgi?type=0&stop=0&channel=0') 
print(f.read())  #cgi数据读取,并且打印
没有更多推荐了,返回首页