《利用python進行數據分析》學習筆記--pandas(1)
阿新 • • 發佈:2018-08-26
索引 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 JiangXi35000 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
返回為
year | state | pop | debt | |
---|---|---|---|---|
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)