pandas使用

写这篇文章,主要是想按照一定的逻辑顺总结一下自己做项目以来,序用到过的pandas的知识点.
虽然pandas官方文档上各个方面都写的很清楚,但是还是想自己再写一份,一个是想作为个人梳理,另外也可以把最经常使用的部分拎出来,更清晰一些.

不定时更新.

数据的IO

MySQL

1.读mysq数据

df = pd.read_sql(sql, db.conn)

其中sql是需要的sql语句,db是创建的数据库连接对象.

一般来说,这样基本就能满足需求.

额外的参数


 1. chunksize : int, default None
    当数据量比较大,或者想将读入的数据分割成指定行数的一个个block,则可以设置这个参数.其会返回一个迭代器,迭代器中的元素为chunksize行数的记录.
    
 2. index_col : string or list of strings, optional, default: None
    可以设置某些列为索引列.

pandas.read_sql文档

2.写mysql数据

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.

参数说明

1. if_exists: {‘fail’, ‘replace’, ‘append’}, default ‘fail’
当数据库中存在要写入的table时,三种处理方式
fail:那么写入失败
replace:把原来的table删掉,写入新的
append:在原来的table上,添加新的记录

2. index : boolean, default True
当设为True时,会把df的index当成一列写入数据库.

pandas.DataFrame.to_sql文档

csv

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的时候,需要加上这个.

关于这个函数,可设置的参数还比较多,不过目前使用的也就这几个,所以先不描述其他了.

pandas.read_csv文档

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的写入模式.

pandas.DataFrame.to_csv文档

excel

直接创建dateFrame

数据的选择

简单选择

  1. 选择部分行
  2. 选择部分列
  3. 选择数值

按照条件进行筛选

  1. 单一条件筛选
  2. 多个条件筛选

数据的聚合值描述

数据的修改

索引信息的修改

数据的合并

  1. concat
  2. merge
  3. join

数据的可视化

时间序列相关

数据采样

    原文作者:棠棠的椰子球
    原文地址: https://segmentfault.com/a/1190000012805590
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞