pandas之Series

pandas之Series

一維數據,帶標籤的數組python

1. 建立Series

1.1 經過list 建立Series

須要指定 data,index,data和index是list類型或者 np.arange數組

s1 = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))
s2 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s3 = pd.Series([1, 2, 3], index=np.arange(3))
s4 = pd.Series([1, 2, 3], index=list("efg"))
複製代碼

image-20190408140811871

1.2 經過字典 建立Series

直接傳入字典便可,key爲index,value爲databash

dict = {"name": "Jack", "age": 30, "tel": 10086}
s5 = pd.Series(dict)
複製代碼

image-20190408141048327

1.3 經過舊的Series建立新的Series

能夠修改Series的index,若是加入了新索引,對應的value爲Nan, 注意NaN是float,pandas會自動更改成floatui

s6 = pd.Series(s1, index=list(string.ascii_uppercase[:15]))
s7 = s6.astype(object) #修改元素數據類型
複製代碼

image-20190408141534044

image-20190408141729234

2. Series的索引

2.1 經過所在的位置取值

s1[3]
複製代碼

3spa

2.2 經過索引名稱取值

s1['C']
複製代碼

23d

3. Series的切片

3.1 取前兩行

s1[0:2]) # 經過位置-取前兩行
複製代碼

3.2 取不連續多行,注意嵌套[]

s1[[1, 8]])  # 經過位置-取不連續多行
s1[['A', 'C', 'F']])  # 經過索引名稱-取不連續多行
複製代碼

3.3 取出全部行,步長爲2

s1[0::2] # 取出全部行,步長爲2
複製代碼

3.4 按照條件,取出對應行

s1[s1 > 5]  # 按照單個條件取
s1[(s1 > 5) & (s1 % 2 == 0)] # 按照多個條件取
複製代碼

4. Series取出來全部索引index

4.1 全部索引index

index是一個類型code

type(s1.index)
s1.index
複製代碼

image-20190408143334080

4.2 遍歷全部的index

for i in s1.index:
    print(i)
複製代碼

image-20190408143443907

4.3 index類型轉爲list

list(s1.index)
複製代碼

['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']cdn

4.4 index能夠直接切片

s1.index[0::2]
複製代碼

Index(['A', 'C', 'E', 'G', 'I'], dtype='object')blog

4.5 獲得全部index的長度

en(s1.index)
複製代碼

10索引

5. Series取出來全部值values

s1.values
type(s1.values)
複製代碼

[ 1 3 5 7 9 2 4 6 8 10] <class 'numpy.ndarray'>

6. where 條件

6.1 全部大於3的元素,都變成10

s1.where(s1 > 3, 10)
複製代碼

A 10 B 10 C 5 D 7 E 9 F 10 G 4 H 6 I 8 J 10

6.2 全部大於5的元素,保持不變,其餘的都爲Nan

s1.where(s1 > 5)
複製代碼

A NaN B NaN C NaN D 7.0 E 9.0 F NaN G NaN H 6.0 I 8.0 J 10.0

6.3 全部大於5的元素都變爲Nan,其他的保持不變

s1.mask(s1 > 5)
複製代碼

A 0.0 B 1.0 C 2.0 D 3.0 E 4.0 F 5.0 G NaN H NaN I NaN J NaN

附代碼

import pandas as pd
import numpy as np
import string

# pandas之Series
# 一維數據,帶標籤的數組

# 1. 建立Series

# 1.1 經過list 建立Series (須要指定 data,index)
# 指定indexdata和index是list類型或者 np.arange
s1 = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))
s2 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s3 = pd.Series([1, 2, 3], index=np.arange(3))
s4 = pd.Series([1, 2, 3], index=list("efg"))
print(s1)
print(s2)
print(s3)
print(s4)

# 1.2 經過字典 建立Series(直接傳入字典便可,key爲index,value爲data)
dict = {"name": "Jack", "age": 30, "tel": 10086}
s5 = pd.Series(dict)
print(s5)

# 1.3 經過舊的Series建立新的Series
# (能夠修改Series的index,若是加入了新索引,對應的value爲Nan,
# 注意NaN是float,pandas會自動更改成float)

s6 = pd.Series(s1, index=list(string.ascii_uppercase[:15]))
print(s6)

# 1.3.1 修改元素數據類型
# s7 = s6.astype(int) 由於存在nan,因此不能指定爲int
s7 = s6.astype(object)
print(s7)
print("*" * 100)

# 2. Series的索引

# 2.1 經過所在的位置取值
print(s1[3])

# 2.2 經過索引名稱取值
print(s1['C'])

# 3. Series的切片

s1 = pd.Series([1, 3, 5, 7, 9, 2, 4, 6, 8, 10], index=list(string.ascii_uppercase[:10]))
print(s1)
# 3.1 輸入 start end 步長

print(s1[0:2])  # 經過位置-取前兩行
print(s1[[1, 8]])  # 經過位置-取不連續多行
print(s1[['A', 'C', 'F']])  # 經過索引名稱-取不連續多行

print(s1[0::2])  # 取出全部行,步長爲2

print(s1[s1 > 5])  # 按照單個條件取
print(s1[(s1 > 5) & (s1 % 2 == 0)])  # 按照多個條件取

# 4. Series取出來全部索引index 是一個類型

# 4.1 全部索引index
print(type(s1.index))

print(s1.index)

# 4.2 遍歷全部的index
for i in s1.index:
    print(i)

# 4.3 index類型轉爲list
print(list(s1.index))

# 4.4 index能夠直接切片
print(s1.index[0::2])

# 4.5 獲得全部index的長度
print(len(s1.index))

# 5. Series取出來全部值values 是一個類型

print(s1.values)
print(type(s1.values))

# 6. where 條件

# 6.1 全部大於3的元素,都變成10
print(s1.where(s1 > 3, 10))

# 6.2 全部大於5的元素,保持不變,其餘的都爲Nan
print(s1.where(s1 > 5))

# 6.3 全部大於5的元素都變爲Nan,其他的保持不變
s1 = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))
print(s1.mask(s1 > 5))
複製代碼
相關文章
相關標籤/搜索