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
是最常用的读取方式,其常见参数如下:
- 使用
sep
或delimmiter
可指定分隔符,进行灵活的数据解析 - 参数
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信息,最常用的存储形式是
HTML
和XML
,这些格式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也支持其他常见的数据格式,比如
HDF5
、Parquet
等,本书原文对这些方式也进行的较为详细的说明,但此处不再赘述。因为本人之前也针对这几种存储形式(包括csv
和json
),在耗时和压缩比等方面进行了详细的对比,具体可参考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 操作数据库]]