導包
import pandas as pd
import numpy as npfrom pandas import Series,DataFrame
一.Series
1.Series的創建
Series是一種類似與一維數組的對象,由下面兩個部分組成:
values:一組數據(ndarray類型)
index:相關的數據索引標籤
創建Series
兩種創建方式:
1:
由列表或numpy數組創建,默認索引爲0-n-1
obj=Series([1,2,3,4]) #默認索引從0開始
obj
0 1
1 2
2 3
3 4
dtype: int64
obj2=Series([1,2,3,4],index=['a','b','c','d']) #自主定義索引
obj2
a 1
b 2
c 3
d 4
dtype: int64
由narray創建的是引用,而不是副本。
對series元素的改變也會改變原來narray的值(列表不存在這種情況)
a=np.array([1,2,3,4])
obj=Series(a,index=['a','b','c','d'])
obj
a 1
b 2
c 3
d 4
dtype: int64
obj['d']=0 #對Series元素的改變,影響narray自身的改變
a
array([1, 2, 3, 0])
2:由字典創建
obj=Series({'a':1,"b":2})
obj
a 1
b 2
dtype: int64
練習1:
使用多種方法創建以下Series,命名爲sss: 語文 150 數學 150 英語 150 理綜 300
#1由np.narray創建
ss=np.array([150,150,150,300])
sss=Series(ss,index=['語文','數學','英語','理綜'])
sss
#法二:由字典創建
sss=Series({'語文':150,'數學':150,'英語':150,'理綜':300})
sss
2)Series的索引和切片
可以使用中括號取單個索引(此時返回的是元素類型),或者中括號裏一個列表取多個索引(此時返回的仍然是一個Series類型)。分爲顯示索引和隱式索引:
(1) 顯式索引:
- 使用index中的元素作爲索引值
- 使用.loc[](推薦)
注意,此時是開區間
sss['語文']
150
sss['語文':'英語']
語文 150
數學 150
英語 150
dtype: int64
(2) 隱式索引:
- 使用整數作爲索引值
- 使用.iloc[](推薦)
注意,此時是半開區間
sss[0:2]
sss.iloc[0:2]
練習2:
使用多種方法對練習1創建的Series sss進行索引和切片:
索引: 數學 150
切片: 語文 150 數學 150 英語 150
索引:sss['數學']
切片:sss.iloc[0:3]#sss[0:3]
3)Series的基本概念
可以把Series看成一個定長的有序字典
可以通過shape,size,index,values等得到series的屬性
head(),tail()查看數據內容head()默認爲前5個,tail()默認爲後5 個數據
可以使用pd.isnull(),pd.notnull(),或自帶isnull(),notnull()函數檢測缺失數據
pd.isnull(obj)#obj.isnull() #查看是否爲空值
pd.notnull(obj)#obj.notnull() #查看是否不爲空
Series對象本身及其索引都有一個name屬性
4)Series的運算
(1) 適用於numpy的數組運算也適用於Series
obj+2
obj[obj>1]
(2) Series之間的運算
在運算中自動對齊不同索引的數據
如果索引不對應,則補NaN
若要保留所有的index,則需要使用add()/sub()/mul()/div()/函數 內部添加fill_value=0
A = pd.Series([2,4,6],index=[0,1,2])
B = pd.Series([1,3,5],index=[1,2,3])
display(A,B)
A.add(B,fill_value=0)