6.《Python数据分析》数据加载与存储

1 读写文本格式的数据

常见读取函数: | 函数名称 | 简单描述 | | ---------------- | ------------------------------------------------------------- | | read_csv | 从文件、URL、文件型对象中加载带分隔符的数据,默认分隔符为逗号 | | read_fwf | 以固定列宽度的格式读取数据 | | read_clipboard | 从剪切板以read_csv的方式读取数据,常用于解析网页中的表格 | | read_excel | 从后缀为.xls或.xlsx的表格文件中读取数据 | | read_hdf | 读取pandas存储(save_hdf)的HDF5格式的数据 | | read_html | 给定HTML文档,读取其中所有的表 | | read_json | 从文件、URL、文件型对象中读取数据,并安装JSON格式解析 | | read_feather | 读取Feather二进制文件 | | read_orc | 读取Apache ORC二进制文件 | | read_parquet | 读取Apache Parquet二进制文件 | | read_pickle | 读取pandas存储(save_pickle)的pickle格式的数据 | | read_sas | 读取SAS软件输出的存储格式 | | read_spss | 读取SPSS软件输出的存储格式 | | read_sql | 读取SQL查询的结果(使用SQLAlchemy) | | read_sql_table | 读取整个SQL表(使用SQLAlchemy) | | read_stata | 读取Stata格式的文件 | | read_xml | 读取XML格式的文件 |

read_csv是最常用的读取方式,其常见参数如下:

  • 使用sepdelimmiter可指定分隔符,进行灵活的数据解析
  • 参数header用于指定读取时将第几行内容作为列名称,默认为0,没有则为None
  • 参数index_col,names直接接收一组数据,作为行索引或列名/列索引
  • skiprows指定读取时忽略前几行,默认是0;nrows从第几行开始读取
  • na_values指定缺失的默认填充值;encoding指定解码格式
  • parse_dates用于智能解析日期型的列;date_parser指定解析日期的方法
  • chunksize指定迭代读取时的块大小,避免大量数据的一次性载入
  • 其他参数(个人觉得没那么常用)可参阅pandas的官方API文档

read_csv主要通过给定的间隔符进行数据的解析,在实际应用中,数据的杂质与畸变可能导致读取出现问题,此时可以考虑借助Python内置的csv.reader函数在数据读取前进行更精细化的清洗

针对Web信息,最常用的存储形式是HTMLXML,这些格式pandas也都是可以直接支持的(可能需要安装第三方依赖包pip install lxml),此外也可以参阅本人之前总结的Python读取xml文件

2 二进制数据格式

pickle序列化是Python内置的二进制存储格式:

  • 能实现数据的高效存储to_pickle与读取read_pickle
  • pickle格式是Python的独有格式,支持存储Python内的所有常见对象
  • 长期来看,pickle格式不同版本间容易出现兼容问题,因此仅推荐作为短期存储格式

对于微软的Excel表格文件,pandas也是支持读写的

  • 对于旧版本的.xls后缀的表格文件,pandas可能需要安装第三方包xlrd
  • 对于旧版本的.xlsx后缀的表格文件,pandas可能需要安装第三方包openpyxl

除pickle和excel外,pandas也支持其他常见的数据格式,比如HDF5Parquet等,本书原文对这些方式也进行的较为详细的说明,但此处不再赘述。因为本人之前也针对这几种存储形式(包括csvjson),在耗时和压缩比等方面进行了详细的对比,具体可参考Python常见数据存储方式对比

3 与网页API交互

Python中一般使用requests库进行网页交互

一个网页API交互的简单示例:

import requests

url = 'https://api.github.com/repos/pandas-dev/pandas/issues'
resp = requests.get(url) # 向指定网页发送GET请求
resp.raise_for_status() # 解析网页返回的状态码,200表示成功
resp.json() # 解析网页返回的JSOn格式数据(需要提前确定返回的格式)

4 与数据库交互

具体可参阅:[[1_study/Python/Python数据读取/Python 操作数据库]]

往年同期文章