python编程与处理大数据_python数据处理编程 - CSDN
  • 博文1:pandas.read_csv——分块读取大文件 ... 今天在读取一个超大csv文件的时候,遇到困难...首先使用office打不开然后在python中使用基本的pandas.read_csv打开文件时:MemoryError最后查阅read_csv文档发现可以

    博文1:pandas.read_csv——分块读取大文件

    http://blog.csdn.net/zm714981790/article/details/51375475

    今天在读取一个超大csv文件的时候,遇到困难:

    • 首先使用office打不开
    • 然后在python中使用基本的pandas.read_csv打开文件时:MemoryError
    • 最后查阅read_csv文档发现可以分块读取。
    • read_csv中有个参数chunksize,通过指定一个chunksize分块大小来读取文件,返回的是一个可迭代的对象TextFileReader,IO Tools 举例如下:
    In [138]: reader = pd.read_table('tmp.sv', sep='|', chunksize=4)
    
    In [139]: reader
    Out[139]: <pandas.io.parsers.TextFileReader at 0x120d2f290>
    
    In [140]: for chunk in reader:
       .....:     print(chunk)
       .....: 
       Unnamed: 0         0         1         2         3
    0           0  0.469112 -0.282863 -1.509059 -1.135632
    1           1  1.212112 -0.173215  0.119209 -1.044236
    2           2 -0.861849 -2.104569 -0.494929  1.071804
    3           3  0.721555 -0.706771 -1.039575  0.271860
       Unnamed: 0         0         1         2         3
    0           4 -0.424972  0.567020  0.276232 -1.087401
    1           5 -0.673690  0.113648 -1.478427  0.524988
    2           6  0.404705  0.577046 -1.715002 -1.039268
    3           7 -0.370647 -1.157892 -1.344312  0.844885
       Unnamed: 0         0        1         2         3
    0           8  1.075770 -0.10905  1.643563 -1.469388
    1           9  0.357021 -0.67460 -1.776904 -0.968914
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 指定iterator=True 也可以返回一个可迭代对象TextFileReader :
    In [141]: reader = pd.read_table('tmp.sv', sep='|', iterator=True)
    
    In [142]: reader.get_chunk(5)
    Out[142]: 
       Unnamed: 0         0         1         2         3
    0           0  0.469112 -0.282863 -1.509059 -1.135632
    1           1  1.212112 -0.173215  0.119209 -1.044236
    2           2 -0.861849 -2.104569 -0.494929  1.071804
    3           3  0.721555 -0.706771 -1.039575  0.271860
    4           4 -0.424972  0.567020  0.276232 -1.087401
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    • 我需要打开的数据集是个csv文件,大小为3.7G,并且对于数据一无所知,所以首先打开前5行观察数据的类型,列标签等等
    chunks = pd.read_csv('train.csv',iterator = True)
    chunk = chunks.get_chunk(5)
    print chunk
    '''
                 date_time  site_name  posa_continent  user_location_country  
    0  2014-08-11 07:46:59          2               3                     66   
    1  2014-08-11 08:22:12          2               3                     66   
    2  2014-08-11 08:24:33          2               3                     66   
    3  2014-08-09 18:05:16          2               3                     66   
    4  2014-08-09 18:08:18          2               3                     66   
    '''
    博文2:python大规模数据处理技巧之一:数据常用操作

    http://blog.csdn.net/asdfg4381/article/details/51689344

    面对读取上G的数据,Python不能像做简单代码验证那样随意,必须考虑到相应的代码的实现形式将对效率的影响。如下所示,对pandas对象的行计数实现方式不同,运行的效率差别非常大。虽然时间看起来都微不足道,但一旦运行次数达到百万级别时,其运行时间就根本不可能忽略不计了:

    p1

    故接下来的几个文章将会整理下渣渣在关于在大规模数据实践上遇到的一些问题,文章中总结的技巧基本是基于pandas,有错误之处望指正。

    1、外部csv文件读写


    大数据量csv读入到内存


    • 分析思路:数据量非常大时,比如一份银行一个月的流水账单,可能有高达几千万的record。对于一般性能的计算机,有或者是读入到特殊的数据结构中,内存的存储可能就非常吃力了。考虑到我们使用数据的实际情况,并不需要将所有的数据提取出内存。当然读入数据库是件比较明智的做法。若不用数据库呢?可将大文件拆分成小块按块读入后,这样可减少内存的存储与计算资源
    • 注意事项:open(file.csv)与pandas包的pd.read_csv(file.csv ): python32位的话会限制内存,提示太大的数据导致内存错误。解决方法是装python64位。如果嫌python各种包安装过程麻烦,可以直接安装Anaconda2 64位版本
    • 简易使用方法:
        chunker = pd.read_csv(PATH_LOAD, chunksize = CHUNK_SIZE)
    • 1
    • 1
    • 读取需要的列:
        columns = ("date_time",  "user_id")
        chunks_train = pd.read_csv(filename, usecols = columns, chunksize = 100000)
    • 1
    • 2
    • 1
    • 2

    chunker对象指向了多个分块对象,但并没有将实际数据先读入,而是在提取数据时才将数据提取进来。数据的处理和清洗经常使用分块的方式处理,这能大大降低内存的使用量,但相比会更耗时一些

    • 分块读取chunk中的每一行:
        for rawPiece in chunker_rawData:
            current_chunk_size = len(rawPiece.index)   #rawPiece 是dataframe
            for i in range(current_chunk_size ):
                timeFlag = timeShape(rawPiece.ix[i])   #获取第i行的数据
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4

    将数据存到硬盘


    • 直接写出到磁盘:
        data.to_csv(path_save, index = False, mode = 'w')`
    • 1
    • 1
    • 分块写出到磁盘:
    1. 对于第一个分块使用pandas包的存储IO: 
      • 保留header信息,‘w’模式写入
      • data.to_csv(path_save, index = False, mode = 'w')
    2. 接下的分块写入 
      • 去除header信息,‘a’模式写入,即不删除原文档,接着原文档后继续写
      • data.to_csv(path_save, index = False, header = False, mode = a')
    • 少量的数据写出:

    少量的数据用pickle(cPickle更快)输出和读取,非常方便 ,下面分别是写出和读入

    写出:

        import cPickle as pickle
        def save_trainingSet(fileLoc, X, y):
            pack = [X, y]
            with open(fileLoc, 'w') as f:
                pickle.dump(pack, f)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5

    读入:

        import cPickle as pickle
        def read_trainingSet(fileLoc):
            with open(fileLoc, 'r') as f:
                pack = pickle.load(f)
            return pack[0], pack[1]
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5

    高效读取外部csv到python内部的list数据结构


    • 效率低下的方法:使用pd读入需要从pd转换到python本身的数据结构,多此一举
        userList = []
        content = pd.read_csv(filename)
        for i in range(len(content)):
            line = content.ix[i]['id']
            userList.append(line)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
    • 效率高的方法:直接将外部数据读入进来
        userList = []
        f = open(filename)
        content = f.readlines()
        for line in content:
            line = line.replace('\n', '').split(',')
            userList.append(line)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2、数据分析时常用数据结构之间的转化


    数据集的横向与纵向合并


    • 简单地横向合并数据集:
    • 问题分析: 
      • 纵向的合并使用list并不好,因为需要去拆解list的每一个行元素,并用extend去拓展每一行的纵向元素
      • 最好使用dataframe中的concat函数:c = pd.concat([a, b], axis = 1),当axis=0时表示合并行(以行为轴)
        inx1 = DataFrame(np.random.randn(nSample_neg), columns = ['randVal'])
        inx2 = DataFrame(range(nSample_neg), columns = ['inxVal'])
        inx = pd.concat([inx1, inx2], axis = 1)
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3
    • 类似数据库的表合并:join(待完整)
        ret = ret.join(dest_small, on="srch_destination_id", how='left', rsuffix="dest")
    • 1
    • 1
    • 简单纵向合并数据集:
    • 纵向合并数据集可以考虑一下几种方法: 
      • 读取数据为list格式,使用append函数逐行读取
      • 将数据集转换为pandas中的dataframe格式,使用dataframe的merge与concat方法
    • 方法: 
      • 方法一:使用dataframe读入,使用concat把每行并起来
      • 方法二:先使用list读入并起来,最后转换成dataframe
      • 方法三:先使用list读入并起来大块的list,每块list转换成dataframe后用concat合并起来
    • 比较:方法一由于concat的静态性,每次要重新分配资源,故跑起来很慢; 方法二与三:会快很多,但具体没有测试,以下是使用方法三的代码:
        data = []
        cleanedPiece = []
        for i in range(CHUNK_SIZE):
            line = rawPiece.ix[i]
            uid = [line['user_id'], line['item_id'],
                line['behavior_type'], timeFlag]
            cleanedPiece.append(uid)
        cleanedPiece = DataFrame(cleanedPiece, columns = columns)
        data = pd.concat([data, cleanedPiece], axis = 0)



    展开全文
  • 处理大数据编程语言比较有优势的也很多,比如java、python、go、R语言、Hadoop等等,按道理来说每种编程语言都可以处理大数据,只是处理的规模不一样而且,但是现在比较受欢迎的数据处理编程语言是java与python。...

    大数据是目前互联网流行的技术语言,处理大数据的编程语言比较有优势的也很多,比如java、python、go、R语言、Hadoop等等,按道理来说每种编程语言都可以处理大数据,只是处理的规模不一样而且,但是现在比较受欢迎的数据处理编程语言是java与python。
    在这里插入图片描述
    说到java编程,java工程师一直都是同行的高薪岗位,而python是从最初的2016人工智能开始爆发,从而在短短两年之内能赶超java。随着python的发展,最大赢家无疑是python。未来大数据是对于一家企业有多重要,通过对数据的分析,可以了解市场需求、发展方向,对公司未来的定位,把数量庞大、不规整的数据信息进行梳理,总结出可供查询的特征。
    在这里插入图片描述
    自从python热度赶超java之后,python在大数据方面的优势逐渐被人们认识,但是java作为20多年成熟的编程语言,在大数据处理方面已存在已久,依然是程序员开发比较喜爱的编程。
    在这里插入图片描述
    java在大数据处理方面还是比较倾向软件应用与网站数据,包括游戏数据处理,特别是金融服务数据处理,一直都是java的强项;python有着众多免费科学算法库,优势在人工智能大数据处理,当然也有使用Python在银行的基础架构中处理财务数据。可以说java与python在大数据处理各有优势。
    194231099,这是我刚创的群,人还不多。如有想更加一步学习Java的,这里有免费的Java公开课以及录播,有兴趣的加一下。

    展开全文
  • 本系列课程包括Python3和R语言的编程基础,Python和R是大数据与机器学习的业界标准语言,本系列课程以实战突破为主线,让学员迅速掌握python3和R的核心基础知识。
  • 大数据领域主要是以java为主,次要的编程语言为python,scala等,本文介绍和python相关的大数据python所需要的版本为python3.6: 数据源: MySQL: oracle: MS SQL server: postgresql: pip install psycopg...
    大数据领域主要是以java为主,次要的编程语言为python,scala等,本文介绍和python相关的大数据:
    
    python所需要的版本为python3.6:
    
    数据源:
    MySQL:
    oracle:
    MS SQL server:
    postgresql: pip install  psycopg2
    MongoDB:
    Neo4J:
    Redis:
    
    大数据处理:
    Hadoop:(HDFS、MapReduce、YARN)
     pip install dask
     pip install mrjob
     pip install pydoop (默认的为pydoop 1.2不稳定)
    # pip install --pre pydoop
     hive:
     pyhive impyla
     hbase:
     happybase
     
     presto:
     pip install presto
     pip install presto-python-client
     clickhouse:
     ElasticSearch:
     elasticsearch-py
     pip install elasticsearch
     pip install pysolr
     pip install elasticsearch-dsl
     kafka:
     pip install kafka-python
     kafka pykafka
     spark:
     flink:
     
     kylin:
     kylinpy
     
     kudu:
     kudu-python
     impala:
     impyla
     apache-beam
     大数据可视化:
     pyecharts
     hue
     superset
     调度系统:
     luigi
     airflow
     安全:
    
    
    Druid.io:官方
    pip install pydruid
    网站:
    https://github.com/druid-io/pydruid
    注意:
    若同时安装上述软件,其依赖的软件包会有冲突。建议独立部署.
    

     

    展开全文
  • python 大数据基础编程

    2018-09-09 21:45:16
    1. 随机数组 from numpy import * random.rand(4,4) 输出 array([[ 0.81273873, 0.93985098, 0.72256469, 0.83294612], [ 0.06087078, 0.85160009, 0.88331584, 0.8634025 ], [ 0.328648 , 0....

    1. 随机数组

     from numpy import *
     random.rand(4,4)
    
    输出
    array([[ 0.81273873,  0.93985098,  0.72256469,  0.83294612],
           [ 0.06087078,  0.85160009,  0.88331584,  0.8634025 ],
           [ 0.328648  ,  0.74410427,  0.07213059,  0.51864295],
           [ 0.73424426,  0.75289487,  0.56867247,  0.61839992]])

    2. 矩阵

    矩阵和逆矩阵
    randMat=mat(random.rand(4,4))
    randMat.I
    matrix([[ 0.33672204,  0.94254807, -1.46432126,  0.23631155],
            [ 1.47878348, -1.01914042,  0.23114864, -0.05431002],
            [-0.06186018,  0.38974979,  0.89236284, -0.45058119],
            [-1.60231928, -0.44524619,  1.58433726,  1.1328065 ]])

    3. 查找帮助信息

    from numpy import *
    help(zeros)
    Help on built-in function zeros in module numpy.core.multiarray:
    
    zeros(...)
        zeros(shape, dtype=float, order='C')
    
        Return a new array of given shape and type, filled with zeros.
    
        Parameters
        ----------
        shape : int or sequence of ints
            Shape of the new array, e.g., ``(2, 3)`` or ``2``.
        dtype : data-type, optional
            The desired data-type for the array, e.g., `numpy.int8`.  Default is
            `numpy.float64`.
        order : {'C', 'F'}, optional
            Whether to store multidimensional data in C- or Fortran-contiguous
            (row- or column-wise) order in memory.

    4. 计算矩阵行数和列数

     from numpy import *
     import operator
     a =mat([[1,2,3],[5,6,9]])
     a
    matrix([[1, 2, 3],
        [5, 6, 9]])
     shape(a)
    (2, 3)
     a.shape[0] #计算行数
    2
     a.shape[1] #计算列数
    3
    展开全文
  • 如果你有个5、6 G 大小的文件,想把文件内容读出来做一些处理然后存到另外的文件去,你会使用什么进行处理呢?不用在线等,给几个错误示范:有人用...Python处理大数据的劣势: 1、python线程有gil,通俗说就是多线...
  • python 大数据入门教程

    2018-12-07 17:35:38
    Python大数据行业非常火爆近两年,as a pythonic,所以也得涉足下大数据分析,下面就聊聊它们。 Python数据分析挖掘技术概述 所谓数据分析,即对已知的数据进行分析,然后提取出一些有价值的信息,比如统计...
  • ☞☞☞点击查看更多优秀Python博客☜☜☜  Hello大家好,我是你们的朋友JamesBin上篇文章Python...大数据方向什么是大数据大数据学习大纲获取大数据数据分析学习路线第一步:了解大数据的基本概念第二步:学...
  • Java和Python编程语言,而大数据则是一系列技术的整合,所以应该分开来看,三者并不能直接进行对比。 三者实际的关系是目标和实现的包含关系。所以这个问题应该分别为 Java和Python哪个发展前景好?大数据的发展...
  • Python与R相比速度要快。Python可以直接处理上G的数据;R不行,R分析数据时需要先通过数据库把大数据转化为小数据才能交给R做分析,因此R不可能直接分析行为详单,只能分析统计结果。所以有人说:Python=R+SQL/Hive...
  • Java和Python编程语言,而大数据则是一系列技术的整合,所以应该分开来看,三者并不能直接进行对比。 三者实际的关系是目标和实现的包含关系。所以这个问题应该分别为 Java和Python哪个发展前景好?大数据的...
  • Python爬虫人工智能大数据全栈视频史上最全合辑教程分享! 毫无疑问Python是这两年最火的编程语言,不仅容易上手,且在多个行业都可应用。尤其今年人工智能及大数据的发展,Python将会展现更多的实用性! 如果你是...
  • 二、使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三、以下code内容为:实现从接口获取到的数据值写入excel的整体步骤 1、整体思路: (1)、根据每日调取接口的...
  • 之前有人说过JAVA语言是最适合做数据分析的计算机编程语言之一,在这里,我想说其实Python大数据也是大数据分析最受欢迎的编程语言。 Python是一个强大的,灵活的,开放的,易于学习的源语言,使用方便,并具有强大...
  • 近年来,Python正在成为Java、C++以外的第三大语言,但事实上Python并不是一门新语言, Python第一版发行于1991年其早于1995年发行第一版的Java。随着人工智能、大数据的发展,Python的地位正在逐步提高,其相对...
  • Python这只小虫子最近随着大数据的兴起可以说是十分的火了。有越来越多的人不敢小觑Python这门语言了。也有更多的人在学习PythonPython为何会有如此大的魅力?为什么从事大数据行业必学Python?这还要从Python这门...
  • 大数据与人工智能时代,掌握Python基础后,我们可以选择数据分析方向、人工智能方向、全栈开发方向...如果想要追赶 Python 的热潮,应该如何学习呢?除了自学之外,多数人都会选择在线课程作为辅助。选择课程的衡量...
  • vr近年很火,培训学校都是基于c#的,大概老师们都是游戏开发转...vr很有趣,但是本人对c#不熟悉,熟悉java、python。 搜了好多资料,java做不了vr,很多java开发工程师想自学vr得学其他语言才行。 有款引擎叫...
  • 自从2004年以后,python的使用率呈线性增长。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。由于Python语言的简洁性、易读性以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经...
  • 继Java、H5前端之后,大数据学习路线图、Python学习路线图也来了! 学习路线图 2018年,大数据Python人工智能刷了全球的屏:高薪就业、人才被抢的新闻报道频频刷屏。从技术突破到商业应用落地再到国家政策...
1 2 3 4 5 ... 20
收藏数 54,929
精华内容 21,971
关键字:

python编程与处理大数据