寫在前面
Hello,大家好,我是可樂。
這是Python數據分析系列的第5篇文章,今天要說的是數據結構中的序列(Series),Series是由一組數據和一組行索引構成的一維數組,可以理解爲Excel裏沒有列名的一列數據。
要使用Series,就要導入pandas模塊。
import pandas as pd
1. 建
新建一個Series,用pd.Series,可以從列表中創建
# 從列表中新建一個序列
In [1]:S1 = pd.Series([2,4,6,8])
S1
Out[1]:0 2
1 4
2 6
3 8
dtype:int63
輸出的第一列[0,1,2,3]是這個序列S1的索引,第二列[2,4,6,8]是S1的值,與列表最主觀的不同是,列表是橫向排列,序列時縱向排列的。
同時可以看到,在不指定索引的情況下,默認索引從0開始遞增,當然也可指定索引,如下例, 給S2序列指定了從1開始遞增的索引,用index給它賦值。
In [2]:S2 = pd.Series(["a","b","d","e"],index = [1,2,3,4])
S2
Out[2]:1 a
2 b
3 d
4 e
dtype:object
還可以從字典中創建,這時鍵就是該序列的索引。
In [3]:S3 = pd.Series({"Tom":101,"Tony":102,"Judy":103})
S3
Out[3]:Tom 101
Tony 102
Judy 103
dtype:int64
2. 增
在序列中新增數據,實際上是創建一個新的序列,然後將兩個序列縱向合併。如在S2的基礎上,把S1追加過去,用append方法,這樣就間接實現了往S2序列中增加數據。
In [4]:S2.append(S1)
Out[4]:1 a
2 b
3 d
4 e
0 2
1 4
2 6
3 8
dtype:object
又或者,只想在S2序列中增加一個“f”的值,還是這樣。
In [5]:S_f = pd.Series(["f"],index = [5])
S2.append(S_f)
Out[5]:1 a
2 b
3 d
4 e
5 f
dtype:object
3. 刪
刪除序列中的值,用drop方法按照索引刪除,如要刪除a這個值,drop裏填寫a對應的索引1,注意不是0,因爲這不是默認索引,是我們設置了的從1開始遞增的索引。
In [6]:# 刪除
S2.drop([1])
Out[6]:2 b
3 d
4 e
5 f
dtype:object
上面的例子是刪除一個值,也可以刪除多個值
In [7]:# 刪除
S2.drop([1,3])
Out[7]:2 b
4 e
5 f
dtype:object
4. 查
查找某個值是否在序列中
同樣用in操作符,這裏就不多說了,要說一下另一個方法,isin,返回的是布爾值。
In [8]:# 查找
S2.isin([a,f])
Out[8]:2 FALSE
4 FALSE
5 TRUE
dtype:bool
查找S2序列中是否包含“a”和"f"的值,索引5是f,所以返回TRUE,其他都返回FALSE。
查找序列中指定位置的值
通過索引的訪問,查找指定位置的值。
In [9]:# 索引
S4 = pd.Series(["c","o","l","a"],index = ["一","二","三","四"])
S4["三"]
Out[9]:l
這裏新建了一個S4序列,索引是自定義的["一","二","三","四"],通過查找索引“三”,得到對應的值“l”。
切片,訪問多個位置,訪問前三(包括第三)的數據。
In [10]:# 切片
S4[:3]
Out[10]:一 c
二 o
三 l
dtype:object
5.改
對值的修改和其他數據結構一樣,根據索引查找,然後賦值,如把S4序列的c改成d:
In [11]:# 修改
S4["一"] = "d"
S4
Out[11]:一 d
二 o
三 l
四 a
dtype:object
@ 作者:可樂,進階的數據分析師
@ 公衆號/知乎專欄/頭條/簡書:可樂的數據分析之路
@ 歡迎加作者微信(data_cola)交流探討