利用Python資料分析:pandas入門(二)
阿新 • • 發佈:2019-01-05
import pandas as pd import numpy as np from pandas import Series,DataFrame data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada'], 'year':[2000,2001,2002,2001,2002], 'pop':[1.5,1.7,3.6,2.4,2.9]} frame = DataFrame(data) frame #可以把字典,等長的列表轉換成一個 dataframe dataframe有行索引也有列的索引 DataFrame(data,columns=['year','state','pop']) #指定列的順序,DataFrame就會按照指定的順序進行排列 frame2 = DataFrame(data,columns=['year','state','pop','debt'], index=['one','two','three','four','five']) frame2 # 如果列找不到就會返回一個NAN 這裡同樣的可以將1~N-1的索引改成指定索引 frame2.columns # 返回列的資訊 frame2['state'] #通過字典標記方式可以將dataframe的列獲取為一個Series frame2.year # 同上 frame2['state'].name # 返回的Series的name屬性也是設定好的 frame2['state'].index.name frame2.ix['three'] # 行可以通過為止或者名稱的方式進行獲取比如說使用索引的欄位ix frame2['debt'] = 16.5 # 給列進行賦值 比如給前面為空值的列進行賦值為16.5 frame2 # 對於dataframe的每一列都具有series的每一個功能 frame2['debt'] = np.arange(5.) frame2 val = Series([-1.2,-1.5,-1.7],index=['two','four','five']) frame2['debt'] = val #將Series賦值的時候能夠精確的匹配Dataframe的索引 列表或者陣列賦值則需要長度匹配 frame2 frame2['eastern'] = frame2.state =='Ohio' # 給不存在的列進行賦值就會出現一個新的列 # 這裡的 frame2.state =='Ohio' 返回的是一個布林型的陣列 del frame2['eastern'] # 使用del關鍵字進行刪除列 frame2.columns pop ={'Nevada':{2001:2.4,2002:2.9}, 'Ohio':{2000:1.5,2001:1.7,2002:3.6}} #這是一個巢狀字典 frame3 = DataFrame(pop)# 巢狀字典轉成Dataframe的時候外層的鍵作為列內層的鍵作為索引 frame3 frame3.T#也可以對結果進行轉置 DataFrame(pop,index=[2001,2002,2003])#內層字典的鍵會被合併排序形成最終的索引,如果顯示指定則不會 pdata ={'Ohio':frame3['Ohio'][:-1], 'Nevada':frame3['Nevada'][:2] } #由Series組成的字典 DataFrame(pdata) frame3.index.name = 'year' # 設定索引的名字 frame3.columns.name= 'state'#設定列的名字 frame3 frame3.values #以二維的ndarray形式返回Dataframe中的資料 frame2.values #資料型別不同就會選擇相容所有資料的型別