Pandas是基於Numpy的一種工具,這個工具是爲了解決數據分析任務而建立的,pandas歸入了大量的庫和一些標準的數據模型,提供了高效的操做大型數據集所需的工具,pandas提供了大量能使咱們快速便捷的處理數據的函數和方法。Pandas是使Python成爲強大而高效的數據分析環境的重要因素之一。另外html
在pandas包含了三種數據結構:html5
下面咱們就介紹一下Series和DataFrame這兩種經常使用的數據結構,Time-series時間序列,咱們後期會專門在開一篇文章仔細的去講述一下。python
1、Seriesmysql
Series是一維數組,與Numpy中的一維array相似。兩者與Python基本的數據結構List也很相近,其區別是:List中的元素能夠是不一樣的數據類型,而Array和Series中則只容許存儲相同的數據類型,這樣能夠更有效的使用內存,提升運算效率,而且series能夠運用Ndarray或字典的幾乎全部索引操做和函數,融合了字典和ndarray的優勢。sql
一、series索引數據庫
Series類型是由一組數據及與之相關的數據索引組成編程
自動索引:不建立系統自動建立索引。json
自定義索引:自定義索引,建立完自定義索引後,自動索引也在。數組
Series是一維帶’標籤’數組,它的基本操做相似Ndarray和字典,genuine索引對齊。數據結構
二、建立對象
Series(列表/元組/字典/標量/Numpy數組/range等序列,<index=param1>)不寫index會自動建立索引,若是寫定指定索引,index能夠是列表,numpy數組。
列子以下:
能夠看出index('a', 'b', 'c', 'd', 'e')分別對應1,3,5,7,9
字典的key做爲索引,value做爲值
若是字典中在設置index,就至關因而從字典中挑選數據
Index能夠是列表,元組,range序列,numpy數組
三、屬性
Series的主要屬性包括index和values兩部分
屬性
說明
Values
獲取數據,底層存儲的是numpy數組
Index
獲取索引
還有兩個不過重要的屬性
Name
Series的name(在DataFrame中沒有Name屬性)
Index.name
索引的name
還有一些相似於numpy數組的屬性,好比dtype和shape等。
下面是一些屬性的列子:
3.1Values值
3.2Index索引
3.3Name,series的名字
3.4Index,series索引的名字
四、選取
經過自定義索引訪問,保留字in操做,使用.get()方法
PS:.get(key,default=none)函數返回指定鍵的值,若是值再也不字典中則返回默認值(默認爲空),key是要查找的鍵,default是設置的默認值。
五、series類型對齊操做
Series+series,series類型在運算中會自動對齊不一樣索引的數據。
六、獲取,設置,刪除等
6.1獲取值
因爲具有numpy數組和字典的特性,series能夠像使用numpy數組的索引切片或用字典的get同樣來用。
6.2設置/修改:索引和切片
6.3刪除
drop方法(結果改變)和pop(像字典的用法,改變自身)
2、DataFrame
DataFrame類型由公用相同索引的一組序列組成,是一個表格型的數據類型,每列值類型能夠不一樣。DataFrame即有行索引也有列索引:
DataFrame經常使用於表達二維數據,但能夠表達多維數據,基本操做相似於Series,依據行列索引
一、DataFrame的建立
1.一、從內存中建立
語法:
DataFrame(字典/列表/numpy數組/DataFrame,index=0,columns=1)也能夠在建立的時候不指定index和columns,在建立完後單獨設置這兩個屬性。
經常使用的參數:
例子:
手動建立行索引和列索引,方法1:建立的時候就設置好行列索引
手動建立行列索引,方法2:建立的時候設置自動索引,以後在修改
手動輸入數組
使用方法生成數組
手動建立列索引,行索引自動建立
手動建立列索引,手動建立行索引
1.二、從文件中建立
DataFrame能夠從文件中建立:
文件第一行默認做爲列索引(columns),默認爲沒有行索引,能夠經過indx_dol參數設置第1列或前幾行做爲行索引。若是第一行不做爲列索引,設置header=none。
文件編碼爲utf-8,能夠經過參數encoding設置編碼。
方式
做用
pd.read_csv(filename)
從CSV文件導入數據, 文件是逗號分隔。
pd.read_table(filename,<sep='t'>)
從限定分隔符的文本文件導入數據,默認是 tab
pd.read_excel(filename)
從Excel文件導入數據
pd.read_sql(query, connection_object)
從SQL表/庫導入數據
pd.read_json(json_string)
從JSON格式的字符串導入數據
pd.read_html(url)
解析URL、 字符串或者HTML文件, 抽取其中的tables表格
pd.read_clipboard()
從你的粘貼板獲取內容, 並傳給read_table()
下面咱們就將上面的這麼多方法一個個演示一遍,文章中用的這些數據能夠本身生成對應格式的就能夠了,這個是不影響的,只要本身掌握了這些知識就好。
讀取的時候,能夠帶行索引,用index_col=列
2)pd.read_table(filename)
查看DataFrame的信息http://df.info()
3) pd.read_excel(filename):從Excel文件中導入數據
4) pd.read_sql(query, connection_object):從SQL表/庫導入數據
SQLAlchemy是python編程語言下的一款ORM框架,該框架創建在數據庫API上,使用關係對象映射進行數據庫操做,簡言之即是:將對象轉換成SQL
首先導入兩個模塊,鏈接數據庫建議用sqlalchemy,使用pymysql可能會出問題
Sqlalchemy.create(‘mysql+pymysql://用戶名:用戶名密碼@localhost:編號/數據庫名稱’)
不清楚用戶名和編號的可使用mysql workbench查看
將文件寫入到數據庫中
Test是要在數據庫中建立的表名,表示的意思是將df的數據傳入到數據庫lianxi下的表test中
5) pd.read_json(json_string)
6) pd.read_html(url)
首先要安裝html5lib,pip install html5lib
7) pd.read_clipboard():從剪切板導入數據
首先複製一段文字
而後運行代碼
二、寫入文件
寫入數據後,前往輸入路徑下查看文件
方式
做用
df.to_csv(filename)
導出數據到CSV文件
df.to_excel(filename)
導出數據到Excel文件
df.to_sql(table_name, connection_object)
導出數據到SQL表
df.to_json(filename)
以Json格式導出數據到文本文件
1)第一種方式:將行索引和列索引肉寫入到文件
2)第二種方式:行索引不寫入
3)第三種方式:行和列索引都不寫入
三、DataFrame的屬性
屬性
說明
Values
值
Index
行索引
Columns
列索引
Index.name
行索引名字
Columns.name
列索引名字
其餘屬性:dtypes,shape等,能夠用numpy數組等等大部分屬性
四、DataFrame的函數和方法
4.一、取值和修改(索引,切片,ix,loc,iloc)
DataFrame的取值和修改應該從三個層次考慮:行列,區域,單元格。每一個層次都有其對應的方法:
行列df[],df.ix
區域df.ix[]
單元格df.ix
其中ix官方推薦使用iloc和loc代替
loc和iloc的用法和ix基本同樣,只是loc參數用手動索引,iloc用自動索引,ix混用
取行:
取列:
五、其餘函數或方法
5.1查看數據
5.二、清洗數據
df.dropna(axis=1,thresh=n): 刪除全部小於n個非空值的列
5.三、數據規整
5.四、數據合併
5.五、數據統計