zoukankan      html  css  js  c++  java
  • Pandas 数据加载、存储与文件格式: read_csv, to_csv

    Pandas 数据加载、存储与文件格式

    摘自《利用Python进行数据分析2版》

    • 读取文本文件和其他更高效的磁盘存储格式,
    • 加载数据库中的数据,
    • 利用Web API操作网络资源。

    6.1 读写文本格式的数据read_csv

    pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。

    面对不同的参数,感到头痛很正常(read_csv有超过50 个参数)。pandas文档有这些参数的例子,如果你感到阅读某个文件很难,可以通 过相似的足够多的例子找到正确的参数。


    插入知识:

     %的使用。

    •    %+ unix cell命令,可以在jupyter上运行Unix命令。
    •    %lsmagic 列出常用的所有魔法命令。

     ❗️的使用,和%类似,运行各种命令。


     

    通过例子来分析read_*系列的参数的用法

    使用Unix cell命令, 运行一个csv文件:

    In [8]: !cat examples/ex1.csv
    a,b,c,d,message
    1,2,3,4,hello
    5,6,7,8,world
    9,10,11,12,foo
    df = pd.read_csv('ex1.csv')
    
    #     a    b    c    d    message
    #0    1    2    3    4    hello
    #1    5    6    7    8    world
    #2    9    10    11    12    foo

    默认第一行为header,参数是header='infer',但如果文件没有header:

    • 需使用names参数指定。
    • 或者修改header=None, 这会自动增加一行递增的整数列名。

    参数index_col: 把列设置为index。

    pd.read_csv('ex1.csv', index_col='message')

    参数index_col:还可以设置MultiIndex。多重索引, index_col  :  array_like

    参数sep:  设置分隔符号,可以使用正则表达式。

    • pandas的re包(正则表达式)s 代表空格,包括  fv。
    • 所以sep="s+",就代表1个以上的空格作为分隔符号。

    参数skiprows : list-like, int, callable

    • 根据行号,忽略掉一些行

    参数nrows : int

    • 读取部分行,一般用于大文件,分块读取行。

    ⚠️参数na_values: scalar, str, list, dict,用于处理缺失值。

    1. 默认:如果发现值是'', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN', '-NaN', '-nan'等等,则解析为NaN。
    2. 可以指定某些values,转换为NaN.
    #values中的1,2,3被转换为NaN
    pd.read_csv('ex5.csv', na_values=[1,2,3])

    逐块读取文本文件

    #设置jupyter中每个cell执行后显示的行数
    pd.options.display.max_rows = 60

    使用参数:chunksize : int

    • 会返回一个可迭代的对象。pandas.io.parsers.TextParser 
    • 然后对这个对象进行for循环,处理其中的数据。

    将数据写出到文本格式to_csv

    1.使用to_csv,默认把数据写到一个以逗号“,”为seperator分隔符号的文件。

    2.可以使用参数sep指定分隔符号。

    3.缺失值NaN等的处理,默认会输出为空字符串""。使用参数na_rep来设置缺失值以什么表示。

    4.如果不保存index和column标签,则使用参数index=False, header=False

    5.参数columns=[]可以指定列

    例子:

    data
    #something    a    b    c    d    message
    #0    one    1    2    3.0    4    NaN
    #1    two    5    6    NaN    8    world
    #2    three    9    10    11.0    12    foo
    
    import sys
    # 输出到屏幕
    data.to_csv(sys.stdout, sep="|", na_rep="NaN")
    #|something|a|b|c|d|message
    #0|one|1|2|3.0|4|NaN
    #1|two|5|6|NaN|8|world
    #2|three|9|10|11.0|12|foo
    
    data.to_csv(sys.stdout, index=False, header=False)
    #one,1,2,3.0,4,
    #two,5,6,,8,world
    #three,9,10,11.0,12,foo

    处理分隔符格式 197页

    本章主要将pandas内置的包csv的用法。

    对于那些使用复杂分隔符或多字符分隔符的文件,csv模块就无能为力 了。

    这种情况下,你就只能使用字符串的split方法或正则表达式方法re.split进 行行拆分和其他整理工作了。

    后面的章节未阅读。

    JSON数据

    XML和HTML:Web信息收集

    6.2 二进制数据格式

    实现数据的高效二进制格式存储最简单的办法之一是使用Python内置的pickle序列化。

    使用HDF5格式

    读取Microsoft Excel文件

    6.3 Web APIs交互

    许多网站都有一些通过JSON或其他格式提供数据的公共API。通过Python访问这些 API的办法有不少。一个简单易用的办法(推荐)是requests包

     

    6.4 数据库交互

    案例见之前的博客:https://www.cnblogs.com/chentianwei/p/12103298.html

    你肯定不想每查一次数据库就重写一次。SQLAlchemy 项目是一个流行的Python SQL工具,它抽象出了SQL数据库中的许多常见差异。

    pandas有一个read_sql函数,可以让你轻松的从SQLAlchemy连接读取数据。

  • 相关阅读:
    BigInteger与BigDecimal
    Java常用类之时间类
    Java常用类之字符串类
    单例对象 (Singleton)设计模式
    包装类的使用
    Object 类中的主要结构
    PostgreSQL执行计划的解析
    Redis5.0 配置文件中文参考
    jvm系列(六):jvm调优-工具篇
    5,Spark中文件格式、压缩和序列化
  • 原文地址:https://www.cnblogs.com/chentianwei/p/12321131.html
Copyright © 2011-2022 走看看