写这篇文章,主要是想按照必定的逻辑顺总结一下本身作项目以来,序用到过的pandas的知识点.
虽然pandas官方文档上各个方面都写的很清楚,可是仍是想本身再写一份,一个是想做为我的梳理,另外也能够把最常常使用的部分拎出来,更清晰一些.html
不定时更新.python
1.读mysq数据mysql
df = pd.read_sql(sql, db.conn)
其中sql是须要的sql语句,db是建立的数据库链接对象.sql
通常来讲,这样基本就能知足需求. 数据库
额外的参数app
1. chunksize : int, default None 当数据量比较大,或者想将读入的数据分割成指定行数的一个个block,则能够设置这个参数.其会返回一个迭代器,迭代器中的元素为chunksize行数的记录. 2. index_col : string or list of strings, optional, default: None 能够设置某些列为索引列.
2.写mysql数据excel
engine = create_engine('mysql+pymysql://root:password@localhost/schemeName', echo=False) df.to_sql(tablename, engine, if_exists='append', index=index)
将df的数据写入到数据库表中.pandas文档中提供的例子是SQlite的数据库,因此不能直接用db.conn去充当engine.code
参数说明htm
1. if_exists: {‘fail’, ‘replace’, ‘append’}, default ‘fail’ 当数据库中存在要写入的table时,三种处理方式 fail:那么写入失败 replace:把原来的table删掉,写入新的 append:在原来的table上,添加新的记录 2. index : boolean, default True 当设为True时,会把df的index当成一列写入数据库.
1.读数据
df = pd.read_csv(path + filename, header=None, names=[name1, name2])
参数说明
1.header: int or list of ints, default ‘infer’ 用来指定行号做为数据的开始和列的名称.header设为None是告诉其打开的文件里没有列名.若是打开的文件有列名的时候,能够不设置这一项,这样系统会自动推测出列名. 2.names : array-like, default None 显示地指定列的名称.当header是None的时候,须要加上这个.
关于这个函数,可设置的参数还比较多,不过目前使用的也就这几个,因此先不描述其余了.
2.写数据
df.to_csv(path+filename, index=False, header=header, mode='a')
参数说明
1.index: boolean, default True 说明是否须要写入df的index. 2.header : boolean or list of string, default True 说明是否要把列名写入.也能够在这里从新设置写入的列名. 3.mode : str,default ‘w’ python的写入模式.
数据采样