閱讀之前假定你已經有了python內置的list和dict的基礎.這里內容幾乎是官方文檔的翻譯版本.
概覽:

原來的文檔是在一個地方,那邊的代碼看起來舒服些 https://www.yuque.com/u86460/dgt6mu/bx0m4g
一個要銘記在新的基本特點是 數據對齊
要點:索引,軸標簽,生成實例時傳入的數據類型
#*生成:pd.Series(data,index) data是傳入的數據,index是第一列的名稱(即標簽) (其他不常用的參數忽略)
#ndarray (data的類型)
>>> pd.Series(np.random.randn(5)) 0 1.617186 1 0.326732 2 -0.230443 3 -0.137932 4 0.474872 dtype: float64 >>> pd.Series(np.random.randn(5),index=['a', 'b', 'c', 'd', 'e']) a 0.048464 b 1.413755 c 0.036489 d 0.533946 e 0.286384 dtype: float64
如果不指定index,標簽默認從0開始
#dict
>>> d = {'b' : 1, 'a' : 0, 'c' : 2} >>> pd.Series(d) b 1 a 0 c 2 dtype: int64
index的順序跟字典key的順序一樣.
>>> pd.Series(d,index=['b', 'c', 'd', 'a']) b 1.0 c 2.0 d NaN a 0.0 dtype: float64
在這里,index順序跟傳入的數據一致.雖然‘d’在字典中不存在,但為了保證數據不丟失,便創建起來,其值為空.這可以理解為數據對齊
#scalar (標量)
>>> pd.Series(5,index=['a', 'b', 'c', 'd', 'e']) a 5 b 5 c 5 d 5 e 5 dtype: int64 >>> pd.Series('a',index=['b', 'c', 'd', 'a']) b a c a d a a a dtype: object
一整列的數據都一樣
#*操作
#ndarray-like
切片,過濾,通過索引取值
>>> se =pd.Series(np.random.randn(5),index=['a', 'b', 'c', 'd', 'e']) >>> se[:3] #slice a 1.169659 b -1.557760 c 1.199475 dtype: float64 >>> se[se >se.median()] #filter a 1.169659 c 1.199475 dtype: float64 >>> se[[4,3,1]] #indexing e -1.113787 d 0.571881 b -1.557760 dtype: float64
#dic-like
索引,in 判斷
>>> se['a']=12 #indexing >>> 'e' in se True
#*計算:矢量加法,數乘,函數
>>> se+se a 24.000000 b -3.115519 c 2.398949 d 1.143761 e -2.227573 dtype: float64 >>> se*4 a 48.000000 b -6.231039 c 4.797899 d 2.287523 e -4.455147 dtype: float64 >>> np.exp(se) a 162754.791419 b 0.210607 c 3.318373 d 1.771596 e 0.328313 dtype: float64
#*其他:序列的命名和重命名
>>> s=pd.Series(np.random.randn(5),name='something') >>> s 0 -0.010572 1 -0.519850 2 0.649738 3 -0.443780 4 0.402685 Name: something, dtype: float64 >>> s2=s.rename('different') >>> s2 0 -0.010572 1 -0.519850 2 0.649738 3 -0.443780 4 0.402685 Name: different, dtype: float64
變成兩個不同的序列
源碼:
import pandas as pdu import numpy as npa n #basic tentet:data aligment/基本的原則:數據對齊m #point:data types;indexing;axis labeling/alignment]/要點:數據類型,索引,軸標簽和對齊 def series(): #*generate #ndarray se=pd.Series(np.random.randn(5)) se =pd.Series(np.random.randn(5),index=['a', 'b', 'c', 'd', 'e']) #dict d = {'b' : 1, 'a' : 0, 'c' : 2} se=pd.Series(d) se=pd.Series(d,index=['b', 'c', 'd', 'a']) #scalar se=pd.Series(5,index=['a', 'b', 'c', 'd', 'e']) #*operate #ndarrat-like se[:3] #slice se[se >se.median()] #filter se[[4,3,1]] #indexing #dict-like se['a']=12 #indexing 'e' in se #compute se+se se*2 np.exp(se)