1. 程式人生 > >利用Python資料分析:pandas入門(二)

利用Python資料分析:pandas入門(二)

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 #資料型別不同就會選擇相容所有資料的型別