搞機器學習、數據可視化這方面的工作、學習,pandas應該是必須要學習的內容。
pandas有兩大數據結構:series以及dataframe。
這一篇文章寫一些關於series的相關知識。
官方學習資料:https://pandas.pydata.org/pandas-docs/stable/getting_started/dsintro.html(下面代碼的例子取自官網)
series可以看做是一個一維的數據結構,多種數據類型可以填充入series。
那麼如何創建一個series呢?
s = pd.Series(data, index=index)
series可以由ndarray、dict、scalar value進行構造。
由ndarray構造
s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
由dict構造
d = {'a': 0., 'b': 1., 'c': 2.}
pd.Series(d)
由scala value構造
pd.Series(5., index=['a', 'b', 'c', 'd', 'e'])
series就像ndarray一樣,所以ndarray相關的方法在series對象上也能夠使用。
例如:索引取值,切片,“過濾數據”等等
索引取值
s[0]
切片
s[:3]
過濾數值
s[s > s.median()]
當然,series也像numpy的ndarray一樣,有一個類型的字段:
s.dtype
->dtype('float64')
一般直接打印series的對象時,dtype會顯示在最後面。
series也像dict一樣,它可以支持索引以及key的檢測,例如:檢測key=y是否在series內。
d = {'b': 1, 'a': 0, 'c': 2}
d=pd.Series(d)
print('f' in d)
->False
series也可以像向量一樣進行加減等操作:
d = {'b': 1, 'a': 0, 'c': 2}
d=pd.Series(d)
print(d+d)
->
b 2
a 0
c 4
dtype: int64
print(d[1:]+d[:-1])
->
a 0.0
b NaN
c NaN
dtype: float64
當加法前後的index不匹配時,對應的value會自動推斷爲NaN
當然,你也可以給series取一個專屬名字,只要在構建series時給一個name參數就可以了。
d = {'b': 1, 'a': 0, 'c': 2}
d=pd.Series(d, name='abc')
->
b 1
a 0
c 2
Name: abc, dtype: int64
不過,當你rename這個series對象的時候,它兩就不是一個對象了。
d = {'b': 1, 'a': 0, 'c': 2}
d=pd.Series(d,name='abc')
c1=d.rename('ab')
print(id(c1),id(d))
->感興趣可以看看結果,應該是不一致的。