第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁 慕課教程 Pandas 入門教程 Pandas 入門教程 Pandas 數(shù)據(jù)結(jié)構(gòu) Series

Pandas 數(shù)據(jù)結(jié)構(gòu) Series

1. 前言

通過上幾小節(jié)的學(xué)習(xí),我們已經(jīng)能夠?qū)⑼獠繑?shù)據(jù)用 Pandas 庫進(jìn)行解析,通過實(shí)際代碼操作可以看出,不同的數(shù)據(jù)文件解析的函數(shù)不同,不同的數(shù)據(jù)內(nèi)容,解析出來數(shù)據(jù)結(jié)構(gòu)也不一樣。了解一組數(shù)據(jù)的結(jié)構(gòu)類型,對(duì)于我們分析數(shù)據(jù)有著至關(guān)重要的作用,那 Pandas 中的數(shù)據(jù)結(jié)構(gòu)究竟有哪幾種呢?

Pandas 中有兩種主要的數(shù)據(jù)結(jié)構(gòu) Series 和 DataFrame,正是這兩種數(shù)據(jù)結(jié)構(gòu),是 Pandas 為應(yīng)用提供一種可靠性、易于使用的基礎(chǔ)。本節(jié)課我們將先從 Series 數(shù)據(jù)結(jié)構(gòu)進(jìn)行入手,講解 Series 數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),以及掌握該數(shù)據(jù)結(jié)構(gòu)常用的屬性和方法。

2. Series 數(shù)據(jù)結(jié)構(gòu)概述

Series 是一種一維數(shù)組的對(duì)象,由一組數(shù)據(jù)和對(duì)應(yīng)的數(shù)據(jù)標(biāo)簽(索引)所組成,也就是 index(索引) 和 values (值),表現(xiàn)形式為索引在左邊,值在右邊,并且其中的索引值是可以重復(fù)的,如果不指定索引,默認(rèn)會(huì)創(chuàng)建一個(gè)從 0 開始的整數(shù)序列索引,數(shù)組里面可以放任意類型的數(shù)據(jù),但數(shù)據(jù)必須是一維的;

圖片描述

3. Series 數(shù)據(jù)結(jié)構(gòu)常用的屬性

3.1 Series 常用的屬性

Series 作為一維數(shù)組結(jié)構(gòu),它的對(duì)象中提供了一些常用的屬性,來獲取對(duì)象的信息,下面我們列舉了一些常用的屬性。

常用屬性 屬性描述
index 獲取 Series 的索引對(duì)象
name 獲取 Series 索引列的名字(index.name)或獲取數(shù)據(jù)列的名字(values.name
axes 獲取 Series 索引的數(shù)組表示形式
values 獲取 Series 的數(shù)組表示形式
ndim 獲取 Series 的數(shù)據(jù)維度(Series是1維數(shù)組)
size 獲取數(shù)據(jù)的個(gè)數(shù)
dtype 獲取 Series 的數(shù)據(jù)類型

現(xiàn)在我們通過代碼程序,具體演示上面的屬性操作。

**實(shí)例:**我們通過定義一個(gè) Series,然后分別演示上面的屬性操作。

# 引入pandas
import pandas as pd
# 定義一個(gè)series對(duì)象
obj=pd.Series([12,"welcom",23, "to",34, "pandas",45])
print(obj)

# --- 輸出結(jié)果 --- 
0        12
1    welcom
2        23
3        to
4        34
5    pandas
6        45

具體的屬性操作:

# index 屬性
print(obj.index)
#--- 輸出結(jié)果 ---
RangeIndex(start=0, stop=7, step=1)   #索引對(duì)象的的開始下標(biāo),最后下標(biāo),步長

# values 屬性
print(obj.values)
#--- 輸出結(jié)果 ---
[12 'welcom' 23 'to' 34 'pandas' 45]   #Series的數(shù)組表示的值

# name 屬性
print(obj.index.name)
#--- 輸出結(jié)果 ---
None  #None是索引列和數(shù)據(jù)類默認(rèn)的名稱,可以通過 obj.index.name="索引" 重新命名

# axes 屬性
print(obj.axes)
#--- 輸出結(jié)果 ---
[RangeIndex(start=0, stop=7, step=1)]  #下標(biāo)從0到7,步長為1,長度為8的數(shù)組

# ndim 屬性
print(obj.ndim)
#--- 輸出結(jié)果 ---
1  #驗(yàn)證了Series是一維數(shù)組

# size 屬性
print(obj.size)
#--- 輸出結(jié)果 ---
7  #有7個(gè)數(shù)據(jù)

# dtype 屬性
print(obj.dtype)
#--- 輸出結(jié)果 ---
object  #是一個(gè)object的數(shù)據(jù)類型,這里要區(qū)分一下數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),我們說Series是Pandas的數(shù)據(jù)結(jié)構(gòu)之一,并不是數(shù)據(jù)類型就是Series。

3.2 Series 常用的方法

另外 Series 中還提供了豐富的函數(shù),方便我們來進(jìn)行操作,下面我們列舉了幾個(gè)常用的操作方法。

常用函數(shù) 函數(shù)描述
Series() 創(chuàng)建一個(gè) Series 數(shù)據(jù)結(jié)構(gòu)的對(duì)象
isnull()和notnull() 用于檢測(cè)缺失數(shù)據(jù)
argmin()和argmax() 返回對(duì)應(yīng)條件值的索引位置
copy() 復(fù)制一個(gè) Series,注意淺拷貝和深拷貝
reindex([x,y,…]) 重返回一個(gè)適應(yīng)新索引的新對(duì)象,缺失索引對(duì)應(yīng)數(shù)值使用默認(rèn)值 NaN
drop() 丟棄指定索引的項(xiàng)

下面我們分別看一下每個(gè)方法的具體操作實(shí)例:

Series() 方法

該方法用于創(chuàng)建一個(gè)一維數(shù)組的對(duì)象,通過該方法有多種方式去創(chuàng)建 Series 對(duì)象:方式一:Series([x,y,…])、方式二:Series([x,y,…], index=[param1,param1,…])、方式三:Series({“a”:x,“b”:y,…})

# 引入pandas
import pandas as pd

# 形式一:Series([x,y,...])
obj=pd.Series([12,23,34,45])
print(obj)
#--- 輸出結(jié)果 ---
0    12
1    23
2    34
3    45
dtype: int64

# 形式二:Series([x,y,...], index=[param1,param1,...])
obj=pd.Series([12,23,34,45],index=["a","b","c","d"])
print(obj)
#--- 輸出結(jié)果 ---    
# 該形式,我們可以指定它的索引列的值
a    12
b    23
c    34
d    45
dtype: int64

# 形式三:Series({"a":x,"b":y,...})
obj2=pd.Series({"a":12,"b":33,"c":5,"d":22})
print(obj2)
#--- 輸出結(jié)果 ---
# 這里我們里面?zhèn)魅氲氖且粋€(gè)字典,他的key就會(huì)對(duì)應(yīng)成索引列,value對(duì)應(yīng)數(shù)據(jù)列
a    12
b    33
c     5
d    22
dtype: int64

isnull() 和 notnull() 方法

isnull() 是缺失值返回 Ture 運(yùn)行結(jié)果,而 notnull() 則不是缺失值的返回 Ture 運(yùn)行結(jié)果

# 引入pandas
import pandas as pd
obj=pd.Series([12,23,34,45],index=["a","b","c","d"])
print(obj.isnull())
#--- 輸出結(jié)果 ---
a    False
b    False
c    False
d    False
dtype: bool
    
print(obj.notnull())
#--- 輸出結(jié)果 ---
a    True
b    True
c    True
d    True
dtype: bool

argmin() 和 argmax() 方法

argmin() 用于返回最小值索引的位置,argmax() 用于返回最大值索引的位置

# 引入pandas
import pandas as pd
obj2=pd.Series({"a":12,"b":33,"c":5,"d":22})
print(obj2.argmin())
# --- 輸出結(jié)果 ---
2 #最小值的索引為2,因?yàn)樗饕菑?開始的,我們最小值為5,

print(obj2.argmax())
# --- 輸出結(jié)果 ---
1 #最小值的索引為1,最大值是33,

copy( ) 方法

該方法為拷貝一個(gè) Series,但要注意里面的 deep 設(shè)置,也就是深拷貝 copy(deep=True) 和淺拷貝copy(deep=False) 的問題。淺拷貝:拷貝父對(duì)象,不會(huì)拷貝對(duì)象的內(nèi)部的子對(duì)象,只復(fù)制對(duì)象本身,沒有復(fù)制該對(duì)象所引用的對(duì)象;深拷貝:完全拷貝了父對(duì)象及其子對(duì)象,新的組合對(duì)象與原對(duì)象沒有任何關(guān)聯(lián)。

# 引入pandas
import pandas as pd
obj2=pd.Series({"a":12,"b":33,"c":5,"d":22})
# 1.cpys 淺拷貝
cpys = obj2.copy(deep=False)
cpys['a']=0
print(cpys)
print(obj2)
# --- 輸出結(jié)果 ---
# 這是淺拷貝之后的cpys
a     0
b    33
c     5
d    22
dtype: int64
# 這是被拷貝的 obj2
a     0
b    33
c     5
d    22
dtype: int64
# 通過上面的輸出結(jié)果,我們可以看到,我們對(duì)拷貝后的對(duì)象進(jìn)行修改,也會(huì)影響到被淺拷貝的對(duì)象,進(jìn)而證明了,淺拷貝只復(fù)制對(duì)象本身,沒有復(fù)制該對(duì)象所引用的對(duì)象
  
# 2.cpys_deep深拷貝
cpys_deep = obj2.copy(deep=True)
cpys_deep['a']=0
print(cpys_deep)
print(obj2)
# --- 輸出結(jié)果 ---
# 這是深拷貝之后的cpys_deep
a     0
b    33
c     5
d    22
dtype: int64
# 這是被拷貝的 obj2
a    12
b    33
c     5
d    22
dtype: int64  
# 我們通過輸出結(jié)果,可以看到 索引a,obj和cps_deep的值是不一樣的,我們修改拷貝后的對(duì)象,并不能影響到被拷貝的對(duì)象,這就是深拷貝,它完全拷貝了父對(duì)象及其子對(duì)象,和之前的對(duì)象是相互獨(dú)立的。

reindex([x,y,…]) 方法

該方法會(huì)將源 Series 對(duì)象,按照新的索引順序生成新的 Series 對(duì)象,默認(rèn)如果沒有對(duì)應(yīng)索引的則使用默認(rèn)值NaN。( NaN 即"?數(shù)字" (not a number),在 Pandas 中,它?于表示缺失或NA值 )

# 引入pandas
import pandas as pd
obj=pd.Series([12,23,6,145,44],index=["a","b","c","d","e"])
rs_obj=obj.reindex(["e","d","c","b","a","f","g"])
print(rs_obj)

#--- 輸出結(jié)果 ---
e     44.0
d    145.0
c      6.0
b     23.0
a     12.0
f      NaN
g      NaN
dtype: float64
# 這里我們看到按照我們寫的索引的順序,生成了一個(gè)新的對(duì)象rs_obj,沒有值的默認(rèn)為NaN進(jìn)行填充。

drop( ) 方法

該方法通過傳入指定的索引,丟棄對(duì)應(yīng)的數(shù)據(jù)項(xiàng),返回一個(gè)新的 Series 對(duì)象。

# 引入pandas
import pandas as pd
obj=pd.Series([12,23,6,145,44],index=["a","b","c","d","e"])
drop_obj=obj.drop(["e","d"])
print(obj)
print(drop_obj)

#--- 輸出結(jié)果 ---
# 源對(duì)象
a     12
b     23
c      6
d    145
e     44
dtype: int64
# drop操作后新的對(duì)象 drop_obj
a    12
b    23
c     6
dtype: int64

4. 小結(jié)

通過本小節(jié)內(nèi)容的學(xué)習(xí),我們了解到 Pandas 庫主要包含了兩種數(shù)據(jù)結(jié)構(gòu),該節(jié)內(nèi)容主要講述了 Series 數(shù)據(jù)結(jié)構(gòu)特點(diǎn),以及我們?nèi)绾尾僮髟摂?shù)據(jù)結(jié)構(gòu)的常用方法,在實(shí)際運(yùn)用當(dāng)中,大家會(huì)接觸到更多關(guān)于 Series 數(shù)據(jù)結(jié)構(gòu)的使用方法和技巧。本節(jié)課程的重點(diǎn)如下:

  • Series 數(shù)據(jù)結(jié)構(gòu)的常用屬性;
  • Series 數(shù)據(jù)結(jié)構(gòu)的常用操作方法;

圖片描述

Tips:想要學(xué)習(xí)更多Pandas相關(guān)知識(shí),可以點(diǎn)擊
Pandas Pandas讀取數(shù)據(jù)文件
Pandas 讀取MySql數(shù)據(jù)
Pandas 數(shù)據(jù)結(jié)構(gòu)DataFrame