最后一次更新日期: 2019/3/17
pandas
是基于numpy
的数据分析库,提供一些更易用的数据模型和大量高效的统计方法。
使用前先导入模块:
import pandas as pd
按需导入以下模块:
import numpy as np
import matplotlib.pyplot as plt
1. 读写csv
In [13]: df=pd.DataFrame({'a':[1,2],'b':[3,4]},index=['r1','r2'])
In [14]: df.to_csv()
Out[14]: ',a,b\nr1,1,3\nr2,2,4\n'
In [15]: df.to_csv(index=False)
Out[15]: 'a,b\n1,3\n2,4\n'
In [16]: df.to_csv("d:\\test.csv",index=False)
In [17]: df2=pd.read_csv("d:\\test.csv")
In [18]: df2
Out[18]:
a b
0 1 3
1 2 4
to_csv
方法用于写入csv文件:
参数path_or_buf
设置文件路径或对象,默认为None
,表示直接返回完整的内容字符串;
参数sep
设置分隔符,长度为1的字符串,默认为','
;
参数na_rep
设置缺失值填充,默认''
;
参数float_format
设置浮点数的格式字符串,如'%.2f'
表示保留两位小数;
参数columns
设置要写的列,默认None
,表示全部;
参数header
设置是否写入列名,默认True
,如果给出字符串列表,则作为列别名;
参数index
设置是否写入行索引标签,默认True
;
参数index_label
设置行索引列的列名,默认None
,会直接使用索引的名称,不写入列名需要设置为False
;
参数encoding
设置编码格式,python3默认utf-8
;
参数chunksize
设置每次批量写入的块大小,默认一次写入全部数据。
read_csv
方法用于读取csv文件:
参数filepath_or_buffer
设置文件路径或类文件对象,必须赋值;
参数sep
设置分隔符,长度为1的字符串,默认为','
;
参数header
设置作为列名的行号,可传入列表,会读取为多级索引,默认是第一行作为列名,当通过names
显示传递列名时,该设置无效,另外,该参数会跳过注释行和空行;
参数names
设置列名列表,默认为None
,如果文件不含列名,header
也应设置为None
,该参数不能有重复项,会报错;
参数index_col
设置作为行标签的列号,可传入列表,会读取为多级索引,默认不设置;
参数usecols
设置要读取的列列表,可以是列位置(int)或是列名(str)的列表,也可以传入对列名进行逻辑判断的函数,结果为True
的列将被返回;
参数prefix
设置默认列名前缀,在没有设置列名时会将该前缀组合列号作为列名;
参数dtype
设置数据类型,dict
类型,键为列名,值为numpy数据类型,默认None
;
参数skiprows
设置开头要跳过的行数,需要传入int
,也可以设置要跳过的行号,传入list of int
或对行号进行逻辑判断的函数;
参数skipfooter
设置尾部要跳过的行数,需要传入int
;
参数nrows
设置要读取的行数,用于分批读取大文件;
参数na_filter
设置是否检测缺失值,默认True
,在确定没有缺失值的情况下可以关闭以提升读取性能;
参数skip_blank_lines
设置是否跳过空行,默认True
;
参数encoding
设置编码格式,python3默认utf-8
;
参数error_bad_lines
设置列数异常的坏行是否报错,默认True
,False
时会直接剔除坏行;
参数chunksize
设置分块的大小,如果设置,会按该大小分块读取并以迭代器返回。
2. 读写excel
In [5]: df=pd.DataFrame({'a':[1,2],'b':[3,4]},index=['r1','r2'])
In [7]: df.to_excel('d:\\test.xlsx',sheet_name='test1',index=False)
In [8]: df2=pd.read_excel('d:\\test.xlsx',sheet_name=0)
In [9]: df2
Out[9]:
a b
0 1 3
1 2 4
to_excel
方法用于写入xls或xlsx文件:
参数excel_writer
设置文件路径或ExcelWriter,必须赋值;
参数sheet_name
设置要读取的工作表名称,默认'Sheet1'
;
参数na_rep
设置缺失值填充,默认''
;
参数float_format
设置浮点数的格式字符串,如'%.2f'
表示保留两位小数;
参数columns
设置要写入的列,为列名的序列;
参数header
设置是否写入列名,默认True
,当输入字符串列表时会当作列的别名;
参数index
设置是否写入行索引标签,默认True
;
参数index_label
设置行索引列的列名,当存在多级索引时应当输入字符串列表,默认None
,会直接使用索引的名称;
参数startrow
设置写入的起始行,默认0
;
参数startcol
设置写入的起始列,默认0
;
参数merge_cells
设置单元格是否合并,默认True
。
read_excel
方法用于读取xls或xlsx文件:
参数io
设置文件路径或Excel文件对象,必须赋值;
参数sheet_name
设置要读取的工作表,可以传入序号(int)或工作表名(str)或是包含前两种的列表,传入None
表示全部,默认0
;
参数header
设置解析为列名的行号,传入行号的列表时会解析为多级索引,如果没有列名,需要设置为None
;
参数names
设置列名,与header
配合使用,默认None
;
参数index_col
设置解析为行标签的列号,传入列号的列表时会解析为多级索引,默认None
;
参数usecols
设置需要返回的列,可传入列号的列表list of int
、列名的列表list of str
、用逗号分隔的列名序列(例如 'A,B,C')或用冒号标识的列名范围(例如 'A:E')str
,也可传入对列名进行逻辑判断的函数,结果为True
的列将被返回;
参数dtype
设置数据类型,dict
类型,键为列名,值为numpy数据类型,默认None
;
参数skiprows
设置开头要跳过的行数,需要传入int
,也可以设置要跳过的行号,传入list of int
或对行号进行逻辑判断的函数;
参数skipfooter
设置尾部要跳过的行数,需要传入int
。
3. 读写sql
In [21]: import sqlalchemy as sqla
...: username='sa'
...: password='123456'
...: server='127.0.0.1'
...: database='Test'
...: charset='utf8'
...: engine = sqla.create_engine('mssql+pymssql://{}:{}@{}/{}?charset={}'.format(username,password,server,database,charset))
In [23]: df=pd.DataFrame({'a':[1,2],'b':[3,4]},index=['r1','r2'])
In [24]: df.to_sql('test1',engine,if_exists='append',index=False)
In [25]: df.to_sql('test1',engine,if_exists='append',index=False)
In [27]: df2=pd.read_sql('select * from test1',engine)
In [28]: df2
Out[28]:
a b
0 1.0 3.0
1 2.0 4.0
2 1.0 3.0
3 2.0 4.0
to_sql
方法用于写入数据库:
参数name
设置要写入的表名,str
类型;
参数conn
设置数据库连接,sqlalchemy.engine.Engine
类型,需要配合sqlalchemy库使用,通过create_engine
方法创建,连接字符串格式形如'{数据库类型}+{驱动名}://{用户名}:{密码}@{服务器地址}:{端口号}/{数据库名}?charset={字符集}'
;
参数if_exists
设置表存在时的处理方式,'fail'
表示抛出异常,'replace'
表示替换现有表,'append'
表示作为新数据插入现有表,默认'fail'
;
参数index
设置行索引标签是否作为一列写入,默认True
;
参数index_label
设置行索引标签列的列名,当存在多级索引时应当输入字符串列表,默认None
,会直接使用索引的名称;
参数chunksize
设置每次批量写入的块大小,默认一次写入全部数据;
参数dtype
设置写入的数据类型,dict
类型,键为列名,值为sqlalchemy数据类型;
read_sql
方法用于读取数据库:
参数sql
设置要执行的sql查询或表名;
参数conn
设置数据库连接,sqlalchemy.engine.Engine
类型;
参数index_col
设置作为行标签索引的列名,传入列名的列表时会生成多级索引;
参数coerce_float
设置是否尝试将一些非字符串非数字对象(如decimal.Decimal)的值转换为浮点数,默认True
;
参数params
设置传递给执行sql的参数列表,具体格式由使用的驱动决定;
参数parse_dates
设置要解析为时间的列名列表,默认None
;
参数columns
设置要读取的列,仅在sql
参数传入表名时有效,默认None
读取全部列;
参数chunksize
设置分块的大小,如果设置,会按该大小分块读取并以迭代器返回。
网友评论