20170430 pandas入門
20170430 pandas入門
《利用Python進行數據分析》第五章
pandas數據結構介紹(P116)
pandas兩個主要數據結構:Series和DataFrame。
pandas數據結構之一:Series
認識Series
Series是一種類似於一維數組的對象,由一組數據+與數據相關對應的數據標籤(索引)組成。
Series創建
In [1]: import pandas as pdnnIn [2]: from pandas import Series,DataFramennIn [3]: obj = Series([4,7,-5,3])nnIn [4]: objnOut[4]:n0 4n1 7n2 -5n3 3ndtype: int64n
Series數組表達形式和索引對象查詢方法
In [6]: obj.values #表達形式查詢nOut[6]: array([ 4, 7, -5, 3], dtype=int64)nn#方式1:默認自動創建0到N-1的整數型索引nnIn [7]: obj.index #數組索引查詢nOut[7]: RangeIndex(start=0, stop=4, step=1)nn#方式2::為Series數組元素手動創建標記索引nnIn [8]: obj2 = Series([2,4,8,6],index=[d,b,a,c])nnIn [9]: obj2nOut[9]:nd 2nb 4na 8nc 6ndtype: int64nnIn [10]: obj2.indexnOut[10]: Index([d, b, a, c], dtype=object)nnSeries數組單個or多個值的查詢nnIn [11]: obj2[a]nOut[11]: 8nnIn [13]: obj2[[d,b,c]]nOut[13]:nd 2nb 4nc 6ndtype: int64n
通過字典的方式創建Series數組
In [14]: sdata = {Ohio:35000,Texas:71000,Oregon:16000,Utah:5000}nnIn [15]: obj3 = Series(sdata)nnIn [16]: obj3nOut[16]:nOhio 35000nOregon 16000nTexas 71000nUtah 5000ndtype: int64nnIn [17]: states = [California,Ohio,Oregon,Texas]nnIn [18]: obj4 = Series(sdata,index = states)nnIn [19]: obj4nOut[19]:nCalifornia NaNnOhio 35000.0nOregon 16000.0nTexas 71000.0ndtype: float64nn#在pandas中,使用isnull或者notnull函數檢測缺失數據nnIn [20]: pd.isnull(obj4)nOut[20]:nCalifornia TruenOhio FalsenOregon FalsenTexas Falsendtype: boolnnIn [21]: pd.notnull(obj4)nOut[21]:nCalifornia FalsenOhio TruenOregon TruenTexas Truendtype: booln
Series索引的修改
方法:Series索引可以通過賦值方式就地修改。
In [30]: obj.index = [Bob,Steve,Jeff,Ryan]nnIn [31]: objnOut[31]:nBob 4nSteve 7nJeff -5nRyan 3ndtype: int64n
pandas數據結構之二:DataFrame
認識DataFrame
DataFrame是一個表格型的數據結構。它含有一組有序的列,每列可以是不同的值類型(數值、字元串、布爾值等)。
DataFrame的幾種創建方法
1)DataFrame創建方式一,最常見的一種是直接傳入一個由等長列表或NumPy數組組成的字典:
In [32]: data = {state:[Ohio,Ohio,Ohio,Nevada,Nevada],year:[2000,2001,2002,2001,2002],pop:[1.5,1.7,3.6,n ...: 2.4,2.9]}nnIn [33]: frame = DataFrame(data)nnIn [34]: framenOut[34]:n pop state yearn0 1.5 Ohio 2000n1 1.7 Ohio 2001n2 3.6 Ohio 2002n3 2.4 Nevada 2001n4 2.9 Nevada 2002nnIn [35]: DataFrame(data,columns = [year,state,pop]) #指定DataFrame列排列順序nOut[35]:n year state popn0 2000 Ohio 1.5n1 2001 Ohio 1.7n2 2002 Ohio 3.6n3 2001 Nevada 2.4n4 2002 Nevada 2.9nnIn [36]: frame2 = DataFrame(data,columns = [year,state,pop,debt],index = [one,two,three,four,five])nnIn [37]: frame2nOut[37]:n year state pop debtnone 2000 Ohio 1.5 NaNntwo 2001 Ohio 1.7 NaNnthree 2002 Ohio 3.6 NaNnfour 2001 Nevada 2.4 NaNnfive 2002 Nevada 2.9 NaNnnIn [38]: frame2.columnsnOut[38]: Index([year, state, pop, debt], dtype=object)nnIn [39]: frame2[state]nOut[39]:none Ohiontwo Ohionthree Ohionfour Nevadanfive NevadanName: state, dtype: objectnnIn [40]: frame2.statenOut[40]:none Ohiontwo Ohionthree Ohionfour Nevadanfive NevadanName: state, dtype: objectnnIn [41]: frame2.yearnOut[41]:none 2000ntwo 2001nthree 2002nfour 2001nfive 2002nName: year, dtype: int64nnIn [42]: frame2[year]nOut[42]:none 2000ntwo 2001nthree 2002nfour 2001nfive 2002nName: year, dtype: int64nnIn [43]: frame2.ix[three] #DataFrame行的獲取(使用索引欄位ix)nOut[43]:nyear 2002nstate Ohionpop 3.6ndebt NaNnName: three, dtype: objectnnIn [44]: frame2[debt] = 16.5nnIn [45]: frame2nOut[45]:n year state pop debtnone 2000 Ohio 1.5 16.5ntwo 2001 Ohio 1.7 16.5nthree 2002 Ohio 3.6 16.5nfour 2001 Nevada 2.4 16.5nfive 2002 Nevada 2.9 16.5n
2)DataFrame創建方式二,嵌套字典:
外層字典的鍵作為列索引,內層鍵則作為行索引。
In [46]: pop = {Nevada:{2001:2.4,2002:2.9},Ohio:{2000:1.5,2001:1.7,2002:3.6}}nnIn [47]: frame3 = DataFrame(pop)nnIn [48]: frame3nOut[48]:n Nevada Ohion2000 NaN 1.5n2001 2.4 1.7n2002 2.9 3.6nnIn [49]: frame3.TnOut[49]:n 2000 2001 2002nNevada NaN 2.4 2.9nOhio 1.5 1.7 3.6n
可以輸入給DataFrame構造器的數據:
推薦閱讀: