1. 程式人生 > >《利用python進行數據分析》學習筆記--pandas(1)

《利用python進行數據分析》學習筆記--pandas(1)

索引 eight and dong 改變 組成 過濾 isnull 學習

pandas主要的兩個數據結構是:Series 和DataFrame

1、Series

series 類似於一維數組,由 索引+數據組成

若不指定索引,則會自動創建0到N-1的整數型索引,

可以用series的values獲取數組值,用index獲取索引值。

import pandas as pd
obj = pd.Series ([3,6,9,7],index = [c,b,d,a])
obj
返回為
c    3
b    6
d    9
a    7
dtype: int64
此時可以通過索引選取值
obj[d]
返回為
9

Numpy的數組運算(布爾型數組過濾、標量乘、數學函數)不會改變索引和值之間的鏈接

obj * 3
c     9
b    18
d    27
a    21
dtype: int64

np.exp(obj)
c      20.085537
b     403.428793
d    8103.083928
a    1096.633158
dtype: float64

如果數據存放在一個Python字典中,可以通過字典來創建Series

data = {JiangSu:20000,JiangXi:35000,FuJian:15000,GuangDong:40000}
obj = pd.Series(data)
obj
返回為
JiangSu      20000
JiangXi      
35000 FuJian 15000 GuangDong 40000 dtype: int64

如果只傳如一個字典,則Series的索引就是原字典的鍵。

states = [FuJian,JiangSu,ZheJiang]
obj1 = pd.Series(data,index = states)
obj1
返回為
FuJian      15000.0
JiangSu     20000.0
ZheJiang        NaN
dtype: float64

在pandas中一般用isnull、notnull檢測缺失值。

series最重要的一個功能是:可以在算數運算中自動對齊不同索引的數據

obj +obj1
返回為
FuJian       30000.0
GuangDong        NaN
JiangSu      40000.0
JiangXi          NaN
ZheJiang         NaN
dtype: float64

Series的對象本身和索引都有一個name屬性

obj1.name = population
obj1.index.name = state
obj1
返回為
state
FuJian      15000.0
JiangSu     20000.0
ZheJiang        NaN
Name: population, dtype: float64

series也可以通過賦值的方式就地修改

2、DataFrame

dataframe既有行索引,又有列索引,可以被看作由series組成的字典(共用一個索引)

傳入一個由等長列表或Numpy數組組成的字典,如果傳入時不加索引,則dataframe自動加上索引

data = {state:[JiangSu,JiangXi,ZheJiang,GuangDong],year:[2008,2009,2010,2011],pop:[1.5,1.8,2.5,2.9]}
frame = pd.DataFrame(data)
frame
frame2 = pd.dataframe(data,columns = [year,state,pop,debt],index = [one,two,three,four])
frame2
返回為
        state      year    pop
0    JiangSu    2008    1.5
1    JiangXi    2009    1.8
2    ZheJiang    2010    2.5
3    GuangDong    2011    2.9

frame2 = pd.DataFrame(data,columns = [year,state,pop,debt],index = [one,two,three,four])
frame2
返回為
        year     state    pop    debt
one    2008    JiangSu    1.5    NaN
two    2009    JiangXi    1.8    NaN
three  2010    ZheJiang   2.5    NaN
four   2011    GuangDong  2.9    NaN

DataFrame一般用索引字段ix來執行

frame2.ix[four]
返回為
year          2011
state    GuangDong
pop            2.9
debt           NaN
Name: four, dtype: object
也可以通過賦值進行修改
frame2[‘debt‘] = 15
frame2
返回為
yearstatepopdebt
one 2008 JiangSu 1.5 15
two 2009 JiangXi 1.8 15
three 2010 ZheJiang 2.5 15
four 2011 GuangDong 2.9 15

 

DataFrame另外一種數據形式是嵌套字典,被解釋為:外層字典的鍵作為列,內層字典則作為行索引。

DataFrame的索引對象:

《利用python進行數據分析》學習筆記--pandas(1)