1. 程式人生 > >python學習筆記六:Series

python學習筆記六:Series

Series是一種類似於一維陣列的物件,由以下兩部分組成:

values:一組資料(ndarray或list型別)

index:相關的資料索引標籤

一維陣列預設索引為0,1,2,3...,而Series的索引可以自己給定,比如說統計班級同學身高時,用0,1,2,3...索引不明瞭,可以直接將每個人的名字當作索引,所以Series是一維陣列的升級。 特別地,由ndarray建立的是引用,而不是副本。對Series元素的改變也會改變原來ndarray物件中的元素。(列表沒有這種情況)一維

#匯入三劍客:numpy;pandas;matplotlib
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
import matplotlib.pyplot as plt

1.通過list,ndarray和 dict建立Series

#Series儲存的資料必須是一維的,Data must be 1-dimensional
#通過列表建立序列
s = Series([1,3,5,7])
print(s)
s.index = list('abcd')
print(s)

#通過ndarray建立序列
nd = np.random.randint(160,180,size = 4)
s1 = Series(nd,index = ['張三','李四','王五','趙六'])
print(s1)

#通過字典建立序列
s2 = Series({'a':1,'b':3,'c':5,'d':7})
print(s2)

2.Series的索引和切片

可以使用中括號取單個索引(此時返回的是元素型別),或者中括號裡一個列表取多個索引(此時返回的仍然是一個Series型別)。分為顯式索引和隱式索引:

s = Series(np.random.random(10),index = list('abcdefghij'))

#顯式索引
print(s['a'])
print(s.loc['c'])

#隱式索引
print(s[0])
print(s.iloc[2])
#切片
print(s[0:2])
print(s.loc['a':'c'])

3.Series的基本概念

當索引沒有對應值時,可能缺失資料顯示NaN(not a number)的情況

print(s.shape,s.size,s.values,s.index)#檢視形狀,大小,元素值,索引值
s.head()#檢視前部分
s.tail()#檢視後部分

s = Series([1,2,None,np.nan],index = list('abcd'))
print(s)
print(s.sum())

#檢測缺失資料
s1 = s.isnull()
s2 = s.notnull()
s[s2]#會將True的元素全部提取出來
#name用於區分,DataFrame中用於區分,在DataFrame中是列名
s.name = '牛逼'
print(s)
#在進行線性運算時,如果包含Nan,那麼fill_value預設將Nan設定為=後面的值
s.add(10,fill_value=0)

4.Series的線性運算

#兩個Series進行相加時,就是索引相同進行相加
s1 = Series([2,4,7,9],index=[0,1,2,3])
s2 = Series([1,2,3,4],index=[2,3,4,5])
s1 + s2
執行結果:
0     NaN
1     NaN
2     8.0
3    11.0
4     NaN
5     NaN

#使用add函式時,相加後每個索引都有值
s1.add(s2,fill_value=0)
執行結果:
0     2.0
1     4.0
2     8.0
3    11.0
4     3.0
5     4.0

數1組預設索引為0,1,2,3...,而Se

一維陣列預設索引為0,1,2,3...,而Series的索引可以自己給定,比如說統計班級同學身高時,用0,1,2,3...索引不好,可以直接將每個人的名字當所以Series是一維陣列的升級。

特別地,由ndarray建立的是引用,而不是副本。對Series元素的改變也會改變原來ndarray物件中的元素。(列表沒有這種情況)

ries的索引可以自己給定,比如說統計班級同學身高時,用0,1,2,3...索引不好,可以直接將每個人的名字當作索引,所以Serie幅是v點選地,由ndarray建立的是引用,而不是副本。對Series元素的改變也會改變原來ndarray物件中的元素。(列表沒