python把保存大数据_python怎么把爬下来得数据保存数据库 - CSDN
  • 一直想找个机会好好学习下这块的知识,但是毕竟实践出真知,下面的就按照我自己使用过的一点点补充吧^^

    一直想找个机会好好学习下这块的知识,但是毕竟实践出真知,下面的就按照我自己使用过的一点点补充吧^^

    pickle 存储对象

    项目中常用pickle,不了解前以为是多么高大上的东西,了解之后发现并不神秘,用一句话概括就是持久化操作。之前做java那么久,还是第一次接触python的持久化操作,明显还是跟java的持久化机制差了一大截。
    虽然简单,但是pickle真的很好用,因为他可以保存训练了一半的模型,下次接着训练!厉害吧!

     import Cpickle as pickle #python2
     import pickle #python3

    怎么用 dump and load:

    基本接口:
    pickle.dump(obj, file, [,protocol])
    注解:将对象obj保存到文件file中去。
    protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效。其中协议0和1兼容老版本的python。protocol默认值为0。
    file:对象保存到的类文件对象。file必须有write()接口, file可以是一个以’w’方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。如果protocol>=1,文件对象需要是二进制模式打开的。

    pickle.load(file)
    注解:从file中读取一个字符串,并将它重构为原来的python对象。
    file:类文件对象,有read()和readline()接口。

    >>> a1 = 'apple'  
    >>> b1 = {1: 'One', 2: 'Two', 3: 'Three'}  
    >>> c1 = ['fee', 'fie', 'foe', 'fum']  
    >>> f1 = file('temp.pkl', 'wb')  
    >>> pickle.dump(a1, f1, True)  
    >>> pickle.dump(b1, f1, True)  
    >>> pickle.dump(c1, f1, True)  
    >>> f1.close()  
    >>> f2 = file('temp.pkl', 'rb')  
    >>> a2 = pickle.load(f2)  
    >>> a2  
    'apple'  
    >>> b2 = pickle.load(f2)  
    >>> b2  
    {1: 'One', 2: 'Two', 3: 'Three'}  
    >>> c2 = pickle.load(f2)  
    >>> c2  
    ['fee', 'fie', 'foe', 'fum']  
    >>> f2.close()  

    我用的时候:

    pickle.dump(encoder, open('../../models/encoder.pkl', 'wb'))

    除此之外我还遇到了一个错误,pickle在load一个训练了一半的模型的时候报EOFError,查了一下发现原来是因为我写入的时候是’wb’写入,但读的时候是用的’r’,应该用’rb’,代表着二进制格式读写。最好这样写下:

    with open(model.model_history_fname,'rb') as f:
        # net.train_history_ = pickle.load(f)
        try:
            net.train_history_=pickle.load(f)
        except EOFError:
            net.train_history_ = None
    

    pickle操作还有一些复杂一点的对象操作,感觉在数据挖掘中不太常用,我是没用过啦,就不细看了~

    numpy.memmap内存映射方式

    将大文件分成小段读写,而不是一次性读入整个文件,节约内存空间。后悔比赛的时候一次都没试过,后面总是溢出溢出,那时候只求用最快的方式投机取巧的解决,哎,丧失了最好的学习机会。

    使用函数np.memmap并传入一个文件路径、数据类型、形状以及文件模式,即可创建一个新的memmap:
    memmap(filename,dtype=uint8,mode=“r+”,offset=0,shape,order=‘C’)
    其中,offset是文件中存储数据的起始位置;mode可以是c(不写入的修改)r+(可读写)w+(创建或是覆盖已有文件)。
    我用的时候:

    X_fp = np.memmap(X_fname, dtype=np.float32, mode='w+', shape=X_shape)

    发现这个可以和csv读写结合在一起,起到边读边写的效果,操作就是用iterrows按行读取文件,然后每一行都flush存储。看了下内存几乎没有消耗,超级赞。
    创建后是纯0的,对memmap切片将会返回磁盘上的数据的视图:

    section = mmap[:5]

    如果将数据赋值给这些视图:数据会先被缓存在内存中(就像是Python的文件对象),调用flush即可将其写入磁盘。

    section[:] = np.random.randn(5, 10000)
    mmap.flush()
    del mmap

    在使用的时候它和ndarray几乎没有区别。
    有几个notes:

    The memmap object can be used anywhere an ndarray is accepted. Given a memmap fp, isinstance(fp, numpy.ndarray) returns True.
    Memory-mapped files cannot be larger than 2GB on 32-bit systems.

    读的时候只要把mode改成mode=’r’就可以了,我用的时候:

    X = np.memmap(X_fname, dtype=np.float32, mode=’r’, shape=X_shape)

    展开全文
  • ☞☞☞点击查看更多优秀Python博客☜☜☜  Hello大家好,我是你们的朋友JamesBin上篇文章Python...大数据方向什么是大数据大数据学习大纲获取大数据数据分析学习路线第一步:了解大数据的基本概念第二步:学...

    ☞☞☞点击查看更多优秀Python博客☜☜☜

     Hello大家好,我是你们的朋友JamesBin上篇文章Python自学我们分析了自学python到底有没有用,那么下面这几篇文章我们就来看看自学python的路线应该如何规划
    我们的学习路线呢?下面让我们首先看一下大数据方向的路线吧!

    什么是大数据

      "大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。

    在这里插入图片描述

    大数据学习大纲

    大数据学习大纲:(大纲来源:https://www.zhihu.com/people/RickyFine)

    • 数据分析的思维和方法
    • Excel进阶
    • 数据库和SQL入门
    • 数理统计学
    • 数据分析软件应用
    • 数据可视化
    • 常见的业务分析模型
    • Python/R语言掌握
    • 业务理解和指标设计
    • 增长黑客:数据驱动增长

    在这里插入图片描述

    获取大数据

    获取大数据的方法主要有一下几种:

    1. 国家数据库:中国铁路交通数据、城市监控录像等;
    2. 企业数据:淘宝交易数据、淘宝购物车收藏数据、京东购物数据;
    3. 机器设备数据:GPS导航系统数据、车仪数据等;
    4. 个人数据:个人日常生活产生的数据。

      大数据的获取主要是从已有的资源中进行数据分析,从而得到自己想要的信息,再将信息进行分析利用。在获取到数据之后最重要的步骤还是看到数据具体张什么样子,有什么特点和规律。得到特点和规律之后根据我们的而具体需求进行贴标签分类处理。只有这样我们才能从复杂的数据中得到不易发现但是价值更大的信息。
      在获取数据的时候我们需要注意的是中国相关法律的规定,特别是爬虫爬取到的数据,我们应遵守相关法律。不得做违反法律的事情。

    数据分析

    学习路线

    我将大数据的学习路线分为以下几步:
    在这里插入图片描述

    第一步:了解大数据的基本概念

      我们想要学习一个新知识,首先需要的就是知道他是什么?有什么作用?
      这个过程中我们应该能够懂得一些专业术语,能够使用基本的获取数据的方法,既然学习大数据我们级应该首先知道什么是大数据,大数据是用来干什么的,以免我们对大数据不了解就开始盲目的学习,从而得不到自己想要的收获。

    第二步:学习获取大数据

      大数据的获取方法众多,我们应该能够从中总结出一种适合自己,适合实际情况的方法去得到我们想要的数据,其中最常用的就是爬虫,所以我们在学习大数据之前不仅要学习好python的基本功还要学会Python中的爬虫的相关知识。爬虫是一种容易入门的爬取数据的方法,但绝对不是唯一的一种方法,所以随着我们学习的不断深入,我们就会发现python爬虫已经不能满足我们了。
      我们只学习的时候一定要注意理论与实践相结合,不可只学不练,这是学习编程最大的忌讳,所以我们在学习的时候可以结所学内容进行一定的实践,做点小项目。

    第三步:学习数据处理

      将我们的数据进行储存、可视化处理,这样茶能把我们得到的数据进行可视化输出。我们得到数据后需要对数据进行清洗、探索、提取、可视化处理,其中用到的主要的Python知识如何使用Python从CSV、Excel、XML、PDF 中获取数据,和各类的可视化处理的知识。
      数据清洗,首先最数据进行筛选,选合适的方式对数据进行筛选处理,保留有用数据,剔除无用数据,这个步骤非常的关键,只有数据清洗的干净,后期我们进行可视化处理时才能更加准确简单。

    第四步:数据储存

      我们需要将得到的数据和处理后的数据进行储存,以便我们后期进行使用,要想进行数据储存,我们首先需要掌握文件操作,储存的方式和类型也是多种多样,其中主要包括:保存本地、保存到数据库中。前期我们只需要掌握如何将数据进行本地保存即可,当我们学习到一定程度后再考虑如何进行其他更加方便可靠的进行数据保存。

      介绍到这数据处理部分的大纲算是讲完了,本文仅代表本人观点,如有不同意见可在评论区留言,希望对你大数据方向有所帮助。在这里插入图片描述

    展开全文
  • python pandas处理大数据节省内存的方法 数值类型的列进行降级处理 字符串类型的列转化为类别类型(category) 字符串类型的列的类别数超过总行数的一半时,建议使用object类型 ''' 减少内存的使用 ''' def reduce...

    python pandas处理大数据节省内存的方法

    • 数值类型的列进行降级处理
    • 字符串类型的列转化为类别类型(category)
    • 字符串类型的列的类别数超过总行数的一半时,建议使用object类型
    '''
    减少内存的使用
    '''
    def reduce_mem_usage(df, verbose=True):
        numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64', 'object']
        start_mem = df.memory_usage().sum() / 1024**2    
        if verbose:print "Memory usage of the dataframe before converted is :", start_mem, "MB"
        # print dataset.isnull().any()
        for col in df.columns:
            col_type = df[col].dtypes
            if col_type in numerics:
                c_min = df[col].min()
                c_max = df[col].max()
                if str(col_type)[:3] == 'int':
                    if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:
                        df[col] = df[col].astype(np.int8)
                    elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:
                        df[col] = df[col].astype(np.int16)
                    elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:
                        df[col] = df[col].astype(np.int32)
                    elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:
                        df[col] = df[col].astype(np.int64)  
                elif str(col_type)[:5] == 'float':
                    if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:
                        df[col] = df[col].astype(np.float16)
                    elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:
                        df[col] = df[col].astype(np.float32)
                    else:
                        df[col] = df[col].astype(np.float64)
                else:
                    num_unique_values = len(df[col].unique())
                    num_total_values = len(df[col])
                    rate = num_unique_values/num_total_values
                    #rate = df[col].value_counts(normalize=True, dropna=False).values[0]
                    if rate <0.5:
                        df[col] = df[col].astype('category')
        end_mem = df.memory_usage().sum() / 1024**2
        if verbose:print "Memory usage of the dataframe after converted is :", end_mem, "MB"
        if verbose: print('Mem. usage decreased to {:5.2f} Mb ({:.1f}% reduction)'.format(end_mem, 100 * (start_mem - end_mem) / start_mem))
        return df, ditc(df.types)
    

    参考

    https://blog.csdn.net/weiyongle1996/article/details/78498603

    https://blog.csdn.net/qq_34739497/article/details/79600479

    展开全文
  • 二、使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三、以下code内容为:实现从接口获取到的数据值写入excel的整体步骤 1、整体思路: (1)、根据每日调取接口的...

    欢迎关注【无量测试之道】公众号,回复【领取资源】,
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、

    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    一、在工程目录中新建一个excel文件

    二、使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询

    三、以下code内容为:实现从接口获取到的数据值写入excel的整体步骤

           1、整体思路:

                 (1)、根据每日调取接口的日期来作为excel文件中:列名为“收集日期”的值

                 (2)、程序默认是每天会定时调取接口并获取接口的返回值并写入excel中(我使用的定时任务是:linux下的contab)

                 (3)、针对接口异常未正确返回数据时,使用特殊符号如:NA代替并写入excel文件中(后期使用excel数据做分析时有用)

     

            2、完整代码如下:

    import requests, xlrd, os, sys, urllib3
    from datetime import date, timedelta
    from xlutils.copy import copy
    basedir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    sys.path.append(basedir)
    from lib.mysqldb import mysqldb
    from lib.public_methods import test_login
    
    
    def collect_data():
        """test_rooms.test_kpi卡片下:adr指标值收集"""
        get_all_code_sql = 'select DISTINCT test_code from test_info WHERE open_flag = 1'
        test_code_all = mysqldb("test_data").selectsql(get_all_code_sql)
        test_code_list = []
        adr_insert_data_list = []
        yesterday = (date.today() + timedelta(days=-1)).strftime("%Y-%m-%d")
        adr_insert_data_list.append(yesterday)
        for j in range(len(test_code_all)):
            test_code_list.append(test_code_all[j]["test_code"])
        for m in range(len(test_code_list)):
            url = "https://www.baidu.com/test/api/data/query.json"
            header = {
                "Content-Type": "application/json;charset=UTF-8",
                "Cookie": str(test_login())
            }
            param = {
                "code": "test_rooms.test_kpi",
                "page": 1,
                "pageSize": 1000,
                "params": {
                    "start_date_year": "2019",
                    "start_date_month": "9",
                    "start_date_day": "16",
                    "end_date_year": "2019",
                    "currency_type": "usd",
                    "end_date_day": "16",
                    "end_date_month": "9",
                    "tests": "test_001"
                }
            }
            """替换请求参数中的开始日期"""
            param["params"]["start_date_year"] = str(yesterday).split("-")[0]
            param["params"]["start_date_month"] = str(yesterday).split("-")[1]
            param["params"]["start_date_day"] = str(yesterday).split("-")[2]
            """替换请求参数中的结束日期"""
            param["params"]["end_date_year"] = param["params"]["start_date_year"]
            param["params"]["end_date_month"] = param["params"]["start_date_month"]
            param["params"]["end_date_day"] = param["params"]["start_date_day"]
            param["params"]["tests"] = test_code_list[m]
            urllib3.disable_warnings()
            result = requests.post(url=url, headers=header, json=param, verify=False).json()
            if str(result["data"]["data"]) != "None":
                """adr指标值收集"""
                indicatorList = result["data"]["data"]["test_indicator_list"]
                test_actualorLast_Forecast = result["data"]["data"]["test_actual"]
                new_indicator_actualvalue = {}
                i = 0
                while i < len(indicatorList):
                    dit = {indicatorList[i]: test_actualorLast_Forecast[i]}
                    new_indicator_actualvalue.update(dit)
                    i += 1
                if str(new_indicator_actualvalue["adr"]) == "--":
                    adr_value_result = "NA"
                    adr_insert_data_list.append(adr_value_result)
                else:
                    adr_value_result = new_indicator_actualvalue["adr"]
                    adr_insert_data_list.append(adr_value_result)
            else:
                adr_value_result = "NA"
                adr_insert_data_list.append(adr_value_result)
    
        """adr指标值数据收集入excel路径"""
        workbook = xlrd.open_workbook(basedir + "/data/collect_data_center.xls")  # 打开工作簿
        sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
        worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格
        rows_old = worksheet.nrows  # 获取表格中已存在的数据的行数
        new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象
        new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格
        for i in range(0, 1):
            for j in range(0, len([adr_insert_data_list][i])):
                new_worksheet.write(i + rows_old, j, [adr_insert_data_list][i][j])  # 追加写入数据,注意是从i+rows_old行开始写入
        new_workbook.save(basedir + "/data/collect_data_center.xls")  # 保存工作簿
        print("adr指标值---xls格式表格【追加】写入数据成功!")

                  3、从步骤2中的代码可看出代码整体分为3个部分:

                        (1)、组装接口参数;

                        (2)、调用接口将接口返回的结果集收集在list中;

                        (3)、将收集的结果写入excel中并保存;

     

                   4、最终excel写入数据的样式如下截图所示:

     

    tips:windows与linux下excel的路径格式需要区分下,以上代码中的"/data/collect_data_center.xls"为linux环境下路径

     

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

    添加关注,一起共同成长吧。

    展开全文
  • 继Java、H5前端之后,大数据学习路线图、Python学习路线图也来了! 学习路线图 2018年,大数据Python人工智能刷了全球的屏:高薪就业、人才被抢的新闻报道频频刷屏。从技术突破到商业应用落地再到国家政策...
  • 该课程采用时下后的编程语言Python讲解,囊括了当前火的大数据技术Spark/Hadoop/Hive知识,学习环境是基于Docker搭建的5个容器。通过这门课程不仅可以学到Spark/Hadoop/Hive大数据知识,还可以学到当下后的云计算...
  • Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存。不然程序跑了几小时甚至几天后挂了,就啥也没有了。即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点。 2. 及时用 del ...
  • https://blog.csdn.net/u010035907/article/details/77669733 https://blog.csdn.net/zm714981790/article/details/51375475
  • 本节书摘来自异步社区《Python和HDF 5大数据应用》一书中的第1章,第1.1节,作者[美]Andrew Collette(科莱特),胡世杰 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。 第1章 简介 我刚毕业那会遇到...
  • 1.Python处理的各种类型的数据,通过内置数据结构如列表、字典等在计算机内存中进行处理加工,最后必须要存入外部存储器中永久保存。 2.文件是一个存储在辅助存储器上的数据序列; 文件是常用的存储形式; 文件可以...
  • MapReduce 优点:可在短时间内完成大量工作。 缺点:算法必须经过重写,需要对系统工程有一定的理解。 适用数据类型:数值型和标称型数据。 Google公司的Jeffrey Dean和Sanjay Ghemawat在2004年的一篇论
  • 大数据文本分析与应用,Python实现小说文本词频统计,保存到数据库,并实现数据可视化(jsp web前端)
  • Python--大数据

    2018-07-26 18:21:53
    一、虚拟机 1.安装完成之后,进入虚拟机,进行编辑虚拟机配置 ... 对虚拟机的IP进行修改 ...获取虚拟机的ip[centos7版本下可以使用ip a;...注:我是在VirtualBox上装的CentOS 7 Minimal,网上搜了一下原因,可能是CentOS 7...
  • Python连接大数据平台HDFS传输文件一、Python连接大数据平台HDFS传输文件: 一、Python连接大数据平台HDFS传输文件: 1、实现代码如下: import hdfs hdfs_ip = "ip:50070" try: client = hdfs.Client(hdfs_ip) ...
  • 本节书摘来自异步社区《Python和HDF 5大数据应用》一书中的第1章,第1.2节,作者[美]Andrew Collette(科莱特),胡世杰 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 HDF5到底是什么 HDF5是一...
  • Python玩转大数据--105精讲视频 大数据工程师/算法工程师/大数据讲...
  • Python大数据处理方案

    2018-03-26 21:30:37
    Mysql SQLyog导入导出csv文件SQLyog 导出表中数据存为csv文件1. 选择数据库表 --&gt; 右击属性 --&gt; 备份/导出 --&gt; 导出表数据作为 --&gt; 选择cvs --&... 选择下面的“更改” --&...
  • 简介在本次笔记中主要汇总Python关于大数据处理的一些基础性工具,个人掌握这些工具是从事大数据处理和大数据测必备技能主要工具有以下(包括但不限于):numpypandasSciPyScikit-LearnSparkMatplotlib对于上述工具...
  • 一、基本架构 其实没什么高深的东西,无非是常用的那一套: pandas, numpy, matplotlib… 但是为了更方便使用,加持了 jupyter notebook(即以前的ipython notebook)…… 又为了更方便使用,前端加了nginx或...
  • Python乱炖每周三赠书时间到~《Python大数据与机器学习实战》5本包邮!查看文章尾部参与赠书随着5G时代的来临、企事业单位信息化系统的不断完善以及物联网的兴起,数据...
1 2 3 4 5 ... 20
收藏数 23,438
精华内容 9,375
关键字:

python把保存大数据