前言
pandas以NumPy爲核心,使用下面這樣的pandas引入約定
import pandas as pd
from pandas import Series DataFrame
Pandas的數據結構介紹
Series
obj = Series([4,-5,1,7])
obj
obj.values
obj.index
默認分配索引爲從0開始的整數,當然也可以手動賦予索引值。
obj2 = Series([4,-5,1,7],index=['d','b','a','c'])
obj2
obj2['d']
與NumPy相比,Series可以通過索引訪問一個元素的值。另外,NumPy中的數值運算都會保存索引和值之間對應的關係。可以將其視爲一個字典,應用在各種需要字典的場合。
如果數據被存儲在一個字典中,則可直接將該字典轉爲Series。
sdata = {'l':100,'w':300,'c':700}
obj3 = Series(sdata)
k=['l','w']
obj4 = Series(sdata,index=k)
obj4
對於很多應用而言,Series最重要的是自動對齊索引相關的數據運算。
Series本身及其index有一個name屬性,該屬性在與pandas其他功能相配合時非常關鍵。
obj4.name = 'population'
obj4.index.name = 'hh'
Series中obj4的索引可以根據需要進行就地修改。
obj.index = ['a','b','c','d']
DataFrame
DataFrame是一個表格形的數據結構,它含有一組有序的列,每一列可以是不同的值類型。DataFrame既有行索引又有列索引,可以看成由Series組成的字典(共用一個索引),面向行和麪向列的操作基本上是平衡的。數據是以一個或多個二維塊存放的。
構建方法:
data = {'name':['w','x','l','z'],
'year':[24,12,50,48],
'where':['h','l','l','l']}
frame = DataFrame(data)
frame.year
frame['name']
同樣,在構建時,可以傳入index值進行索引值的替換
新增和刪除一列,如果需要對上,那就指定索引index吧。
frame['easten']=frame.year==24
frame
del frame['easten']
frame
其他屬性與Series類似。
索引對象
構建Series或者DataFrame時,所用到的任何數組或其他序列的標籤轉換爲Index。
Index對象是不可修改的,不可修改是非常重要的,它可以在多個數據間安全共享。
基本功能
重新索引
一個重要的方法是reindx,其作用是創建一個適應新索引的新對象。
obj = Series([1,2,3,4],index=['a','s','d','f'])
obj
obj2 = obj.reindex(['q','w','s','r'],fill_value=0)
obj2
丟掉指定軸上的項
new=obj2.drop('q')
new
需要注意的是,Series上切片的方法是末端包含的。
算術運算和數據對齊
默認情況下,索引數據在不重合出引入NA
obj3 = Series([1,2,3,4],index=['k','s','d','f'])
oo = obj+obj3
oo
對於DataFrame,返回的索引爲相加兩個DataFrame索引的並集。
填充數據。