寫這篇文章,主要是想按照必定的邏輯順總結一下本身作項目以來,序用到過的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的寫入模式.
數據採樣