讀書筆記一 pandas資料結構介紹

2022-08-30 03:54:07 字數 4226 閱讀 5137

pandas資料結構介紹

主要兩種資料結構:series和dataframe.

series

series是一種類似於一維陣列的物件,由一組資料(各種numpy資料型別)+資料標籤(即索引)組成。

#

直接傳入一組資料

from pandas import

series,dataframe

obj=series([4,2,3])

obj#

series的values和index屬性獲取陣列表示形式和索引物件

obj.values

obj.index

series字串的表現形式:索引在左,值在右邊。

不為資料指定索引,自動建立乙個0~n-1的整數型索引。

series的index和values的元素之間雖然存在對應關係,但是與字典的對映不同。index和values實際上仍為互相獨立的ndarray陣列.

#

建立乙個對各個資料點進行標記索引的series

obj2=series([4,2,3],index=['

a','

b','c'

])obj2

obj2.index

#通過索引的方式選取series中的單個或者一組值

obj2['a'

]obj2[['a

','c

','b']]

obj2['d

']=6

#對陣列進行運算保留索引和值之間的關係

obj2

obj2+obj2

obj2[obj2>2]

obj2*2

#將series看成乙個定長的有序字典,它是索引值到資料值的乙個對映'b

'inobj2'e

'inobj2

#通過字典來建立series

#只傳入乙個字典,則結果series中的索引就是原字典中的鍵。

sdata=

obj3=series(sdata)

obj3

states=['

california

','ohio

','oregon

','texas']

obj4=series(sdata,index=states)

obj4

sdata中和states索引相匹配的三個值會被找出來並放到相應的位置上,找不到「california"對應的sdata值,其結果就為nan。在pandas中,nan用於表示缺失或na值。

#

pandas的isnull函式、notnull函式用於檢測缺失資料

pd.isnull(obj4)

pd.notnull(obj4)

#series也有類似的例項方法

obj4.isnull()

series最重要的乙個功能:在算術運算中會自動對齊不同索引的資料。(換句話說就是series在進行算術運算時,index會自動對齊)

obj3

obj4

obj3+obj4

#會發現'california'和'utah'索引對應的資料值是nan

#name屬性

#series本身以及其索引都有name屬性

obj4.name='

population

'obj4.index.name='

state

'obj4

#通過賦值的方式就地修改series的索引

obj.index=['

bob','

steve

','jeff']

obj

dataframe

dataframe是乙個**型資料結構,含有一組有序的列,每列可以是不同的值的型別。基本上可以把dataframe看成乙個共享同乙個index的series的集合。

dataframe的構造方法與series類似,只不過同時接受一條一維資料來源,每一條都會成為單獨的一列。

建立dataframe

最常用的是直接傳入乙個由等長列表或numpy陣列組成的字典。

data=

df=dataframe(data)

df

結果會自動加上索引,且全部列會被有序排列。

雖然引數data看起來是個字典,但是字典的鍵並非充當dataframe的index的角色,而是series的「name」屬性。

#

構造較為完整的dataframe的引數:

dataframe(data=none,index=none,columns=none)

#columns即「name」

如果指定了列序列,則dataframe的列會按照指定順序進行排列:

dataframe(data,columns=['

year

','state

','pop'])

#如果傳入的列找不到,就會產生na值

df=dataframe(data,index=['

one','

two','

three

','four

','fiva'],

columns=['

year

','state

','pop

','debt

'])

缺失值由nan補上。

df.index

df.columns

type(df[

'debt

'])

dataframe 面向行和面向列的操作基本上是平衡的,任意抽出一列都是series。

將dataframe的列獲取為乙個series

#

兩者等價

df['

state']

df.state

注意,返回的series擁有原dataframe 相同的索引,且其name屬性也已經被相應地設定好。

獲取行行也可以使用位置或名稱的方式進行獲取,使用索引欄位ix

df.ix['

three

']

列可以通過賦值的方式進行修改。

#

對空列進行賦值

df['

debt

']=16.5df[

'debt

']=np.arange(5.)

將列表或陣列進行賦值給某個列時,其長度必須跟dataframe的長度相匹配。如果賦值的時乙個series,就會精確匹配dataframe的索引,所有的空位都將被填上缺失值:

val=series([-1.2,-1.5,-1.7],index=['

two','

four

','fiva'])

df['

debt

']=val

df

為不存在的列賦值會建立出乙個新列。關鍵字del用於刪除列:

df['

eastern

']=df.state=='

ohino

'del df['

eastern']

df.columns

另一種常見的資料形式是巢狀字典,將其傳給dataframe,被解釋為:外層字典的鍵作為列,內層字典的鍵作為索引(也可以顯示指定索引)

pop=,

'ohio

':}frame=pd.dataframe(pop)

#

對frame進行轉置,內層字典的鍵會被合併、排序以形成最終的索引

frame.t

#

顯示指定索引

dataframe(pop,index=[2001,2002,2003])

#由series組成的字典

pdata=

#設定dataframe的index和columns的name屬性,也會顯示出來

frame3.index.name='

year

'frame3.columns.name='

state

'

和series一樣,values屬性也會以二維ndarray的形式分返回dataframe中的資料:

frame3.values

資料結構讀書筆記

首先有個關於指標的問題 如果函式傳進來乙個指標 p,函式裡操作p不會影響原來的值,而如果有 或者 才會改變 比如 malloc的時候傳入指標的指標才行 o 1 刪除節點時末尾必須要便利一遍 刪除頭指標要變為刪除第二個節點。1.o 1 刪除指定位置的節點 如果為最後乙個節點還是必須遍歷一遍 2.倒數第...

《資料結構》讀書筆記

2010年9月2日開始研究 資料結構基礎 這本書。為什麼要說是研究呢,一是覺得研究這個詞比較賞心悅目,總比 看 閱讀 之類的好聽多了。二是真的想把資料結構學好。488頁,看來有忙活的了!第一章 基本概述 生命週期各階段描述及理解 1.需求階段 所有人規模程式設計專案,都是從確定規範宣告開始,規範宣告...

《大話資料結構》讀書筆記 一

2.線性結構 線性結構 線性結構中的資料元素之間是一對一的關係 3.樹形結構 樹形就夠 樹形結構中的資料元素之間存在一種一對多的層次關係。4.圖形結構 圖形結構 圖形結構的資料元素是多對多的關係 我們在用示意圖表示資料的邏輯結構時,需要注意兩點 a.將每乙個資料元素看做乙個結點,用圓圈表示。b.元素...