美文网首页
数据载入和存取

数据载入和存取

作者: 奉先 | 来源:发表于2018-11-19 10:19 被阅读22次

    在pandas中输入和输出主要有以下几种形式:文件读取,文件存储,从数据库载入文件,对网络资源进行交互(Web API)。

    1. 文本格式数据读取

    1.1 基本使用

    1.1.1 读取文本文件到dataframe

    将表格型数据读取为DataFrame是pandas的特性,主要使用的方法是 read_csv和read_table。read_csv的默认分隔符是逗号,read_table的默认分隔符是'\t'。这2个方法有很多参数可以使用,下面列举常用的。
    sep参数可以指定文件的分割符,header=None不指定列名(实际上是使用默认的),按照顺序方式0,1,2,...排号。也可以通过names参数指定列名,并且利用index_col参数指定索引列名(这时候,索引的列名需要在names中也出现,如果不指定index_col会使用默认的0,1,2,...作为序号列)。

    import pandas as pd
    frame1 = pd.read_table('files/pandas_import_001.txt',sep='\t',header=None)
    # print(frame1)
    frame2 = pd.read_table('files/pandas_import_001.txt'
                ,names=['唯一id','记录数'],index_col='唯一id')
    print(frame2)
    

    1.1.2 使用多层索引

    如果数据中有多层索引,在将数据载入dataframe后,在显示上会自动合并高层的索引内容。例如下图:



    多层索引,直接使用一个字符串列表展示即可。

    frame3 = pd.read_table('files/pandas_input_002.txt'
                ,names=['row_key','city','rec_type','lng','lat'],
                index_col=['city','rec_type'])
    print(frame3)
    

    1.1.3 使用正则表达式作为分隔符

    当文件的分隔符不规则时,可以使用正则表达式来进行分割列,例如下边文件使用1个或者多个空格来分割列,使用sep='\s+'来分割列。 同时,如果不想要文件中的某些行,也可以使用参数skiprows=[1,4,6]类似这样来筛选掉不想要的行。

    frame4 = pd.read_table('files/pandas_import_003.txt',sep='\s+'
                ,names=['rowkey','c1','c2','c3'],skiprows=1)
    print(frame4)
    

    处理NULL值是实际使用中常见的场景,在文件中可以使用NA来表示NULL值,可以使用dataframe的isnull()方法来获取dataframe中的空值情况.
    可以使用na_values=参数来指定null值的显示值:

    frame5 = pd.read_table('files/pandas_import_003.txt',sep='\s+'
            ,names=['rowkey','c1','c2','c3'],skiprows=1,na_values='BBC')
    print(frame5)
    

    1.2 分块读入文本文件

    在读入大文件到内存时,可以指定n_rows来只读入部分行数据。同时,可以使用chunksize参数来返回一个TextParser对象(pandas.io.parsers.TextFileReader object),并可以遍历该对象。

    # 分块读取数据, chunksize , nrows,
    frame6 = pd.read_table('files/pandas_import_001.txt',skiprows= 1,nrows=100)
    # print(frame6)
    # frame7=pd.read_table('files/pandas_import_001.txt',skiprows= 1,names = ['poi_id','times'])
    # print(frame7)
    chunker = pd.read_table('files/pandas_import_001.txt',skiprows= 1
    ,names = ['poi_id','times'],chunksize=1000)
    
    

    1.3 将数据写入文本格式

    之前将文本读入内存,同样也可以将内存中的数据写入到文件中。使用Dataframe的to_csv方法来保存文件。

    frame2.to_csv('files/pandas_input_002.txt',sep=',')
    

    相关文章

      网友评论

          本文标题:数据载入和存取

          本文链接:https://www.haomeiwen.com/subject/sddofqtx.html