pandas 如何读写源数据
前言
说到 pandas,相信每个数据分析师都不陌生。在日常分析工作中,免不了需要读写数据。而数据的来源往往各式各样,有 csv 文件、excel 内容、关系型数据库等等。
pandas 为了支持这些数据源的读写,都有相关的方法来实现。这里就来总结下各类数据的读写方式把。
csv、excel 的读写
csv 文件的读取
先说说 csv 文件,读取 csv 内容的函数是:read_csv
。可传参数有非常多,我们看看用得多的:
filepath_or_buffer: csv 文件路径/URL 地址
header: int/list of int,默认自动推断是否有表头。填入 int 时如 header=3 是设置第 3 行为表头。
index_col:int/str。index_col=4 表示将第 4 列设置为 index 列
usecols: list-like or callable, 可选参数。表示选取部分列的数据
nrows: int,可选参数。读取的行数。在读取较大文件时,可设置此项,不加载所有行数据
举个例子:
设置第 2 行为表头,只读 5000 行。
csv 文件的写入
函数是to_csv
,主要参数有:
path_or_buff: 写入文件的路径
header: 是否存在表头,默认为 True
index: 是否写入 index,默认为 True
举个例子:
excel 文件的读取
函数是read_excel
,主要参数有:
io: 文件路径或 url 地址
sheet_name:str,int,list,默认为 0。表示默认读取第一个 sheet, str 时表示加载该 sheetname 的内容,list 表示加载列表内的 sheet.
header: int,list of int,默认为 0
index_col: int, list of int, 默认 None。index 字段
示例:
excel 文件的写入
函数是to_excel
,主要参数有:
excel_writer:Str 或 Excel Writer 对象
sheet_name:str, sheet 名称
index: bool,默认 True。是否保存 index
小例子:
另外像 json 文件读写都与 excel、csv 相似,大家可参考官方文档。
数据库读写
数据库也是我们最常遇到的读写场景,我们这里主要以 MySQL 为例。
MySQL 的读取
函数read_sql
, 常用参数:
sql: sql 查询语句
con: 数据库连接对象,主要是 sqlalchemy、sqlite3 连接
index_col: index 字段的设置
mysql 的连接,我们通常用 sqlalchemy 来作为连接对象,请看下面示例:
MySQL 的写入
函数to_sql
, 常用参数:
name: MySQL 的表名
con: 连接对象
if_exists: fail/replace/append, 默认 fail。
index:默认 True, 是否保存 index
index_label: 索引标签
method: 控制 sql 插入的自定义方法
示例:
需要注意的是:如果往一个表添加数据,参数 if_exists="append"即可。如果设置为 if_exists="replace"将会抹去表的数据,再往表里插入数据。
MySQL 数据的更新问题
因实际工作中我们经常会有更新数据的场景。to_sql 最基本的方法无法达到我们的预期,我们需要用别的方法去实现。
第一个方法就是自定义 to_sql 的 method 方法,具体操作就不细讲了。
第二个方法就是结合 pandas 结合 MySQL 操作,分步完成数据更新。这里提供一个思路:
建立 MySQL 临时表,将要更新的数据用 pandas 插入到临时表中
sql 语句更新目标表的数据
删除临时表
示例代码如下:
小结
本文主要介绍了 pandas 读写常用数据源的方法,其他数据源我们也可通过官方文档来查阅使用方法。
版权声明: 本文为 InfoQ 作者【芥末拌个饭吧】的原创文章。
原文链接:【http://xie.infoq.cn/article/62d8132e07caea4eede714335】。文章转载请联系作者。
评论