Pandas 学习 第4篇:数据输入输出

常用的数据存储介质是数据库和csv文件,pandas模块包含了相应的API对数据进行输入和输出:

  • 对于csv文件:read_csv(),to_csv()
  • 对于SQL查询:read_sql,to_sql()

一,CSV文件

CSV文件把数据以逗号为字段分隔符,回车换行为行分隔符,pandas使用read_csv()函数来读取csv文件,以to_csv()函数把数据存储为csv。

1,read_csv()

 read_csv()函数的参数非常多,

pandas.read_csv(filepath_or_buffer, sep=', ', delim_whitespace=False,
    header='infer', names=None, index_col=None, usecols=None,...)

下面主要介绍最常用的参数:

  • filepath_or_buffer:文件的路径
  • sep=', ':字段的分隔符,默认值是逗号
  • header='infer':字段名称所在的行号,默认值是infer,表示推断列名,推断列名的逻辑是:如果names字段没有传递值,那么header='infer'等价于header=0,从文件的第一行中获取值作为列名;如果names字段传递值,那么header='infer'等价于header=None,使用names参数传递的值作为列名。
  • names=None:包含列名的列表,列名不能重复。
  • index_col=None:索引列的序号,传递index_col=False强制pandas不要使用第一列作为索引(row name)
  • usecols=None:返回列的子集

2,to_csv()

to_csv()函数用于把数据写入到csv文件中

to_csv(path_or_buf,sep,na_rep=',',columns=None,header=True,index=True,...)

重要参数注释:

  • columns=None:要输出的列,默认值是None,输出所有的列
  • header=True:是否输出列名,默认值是True
  • index=True:是否输出行索引(row names),默认值是True

二,SQL查询

执行SQL查询,把数据写入到DataFrame对象中

1,read_sql()

read_sql()函数用于执行SQL查询,把数据写入到DateFrame对象中:

pandas.read_sql(sql, con, index_col=None, chunksize=None)
pandas.read_sql_query(sql, con, index_col=None, chunksize=None)

参数注释:

  • sql:SQL查询
  • con:连接
  • index_col:用于指定索引列的名称,默认值是None
  • chunksize=None

2,to_sql()

把数据写入到数据库中的表中:

DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, method=None)

参数注释:

  • name:关系表的名称
  • con:连接
  • schema=None:指定数据库的架构,例如,mysql
  • if_exists='fail':如果关系表存在,当值为fail时,pandas抛出错误;当值为replace时,删除旧表,创建新表;当值为append时,向表中插入新的数据;
  • index=True:把DataFrame的索引作为一列,即索引列
  • index_label:索引列的名称,如果有多个索引列,那么index_label是字符串的序列
  • chunksize:每个batch的大小,默认情况下,一次性插入所有的数据行
  • method:插入数据的方法,默认值是None,一次插入一行;multi是指一次插入多行数据,

举个例子,从一个数据库中查询数据,插入到SQL Server数据库中:

import psycopg2
import pandas as pd
from sqlalchemy import create_engine 

con=psycopg2.connect(dbname= 'db_name', host='db_host', port= '5439', user= '', password= '')
engine=create_engine('mssql+pymssql://user:password@host/db_name?charset=utf8',echo=False) 

sql=""" select ... """

data_frame = pd.read_sql(sql, con)
data_frame.to_sql('out_table', con=engine, if_exists='append',index = False, schema='dbo')

 

 

参考文档:

Pandas IO Tools

SQLAlchemy连接SQLserver数据库及常用的DB操作

你可能感兴趣的:(Pandas 学习 第4篇:数据输入输出)