iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
Python

讓Python不拍勝-實用套件實作與介紹系列 第 14

[DAY14]使用Python進行資料處理-Pandas(六)

  • 分享至 

  • xImage
  •  

今天這篇來介紹如何在 Series 和 DataFrame 上面檢查是否有重複的標籤,以及如何在 Series 和 DataFrame 上面做運算。

利用 .index.duplicate() or .columns.duplicate() 來檢查是否有重複的標籤

.index.duplicate() 的示範

首先先建立帶有重複標籤的物件

dict_ = {'guitar': [2, 3, 4, 11], 'bass': [5, 6, 7, 12], 'keyboard': [8, 9, 10, 13]}
instrument = pd.DataFrame(dict_, index=['A', 'B', 'C', 'B'])
print(instrument)

輸出結果

   guitar  bass  keyboard
A       2     5         8
B       3     6         9
C       4     7        10
B      11    12        13 #這一列是重複的

檢查是否有重複的索引標籤

這個函數會在檢查到第二個重複的標籤時返回 True

print(instrument.index.duplicated())

輸出結果

[False False False  True]

排除掉重複的索引

這邊的用法是,先將返回的布林值陣列儲存到 duplicated 這個變數上,再利用 '~' 這個取反運算子取得 duplicated 的相反值,接下來在用布林索引的方式來取值,藉以達到排除掉重複索引的目的

duplicated = instrument.index.duplicated()
instrument = instrument[~duplicated] #返回True的索引
print(instrument)

輸出結果

   guitar  bass  keyboard
A       2     5         8
B       3     6         9
C       4     7        10

.columns.duplicate() 的使用方式跟上面一樣,這邊就不另外在做示範了,請讀者自己嘗試看看喔!

在 Series 物件上做運算

先建立兩個 Series 物件

data_1 = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
data_2 = pd.Series([10, 10, 10], index=['a', 'b', 'c'])
print(data_1)
print(data_2)

輸出結果

a    10
b    20
c    30
d    40
dtype: int64
a    10
b    10
c    10
dtype: int64

使用 .add() 相加

  • 在這個例子可以看到,data_2 是沒有 d 這一列的,所以在相加時,d 這一列的值就會回傳 NaN,這時如果我們在後面指定 fill_value=n,就會在 data_2 自動補上 d 這一列,值為 n 去做相加。
print('#1')
print(data_1.add(data_2))
print('\n#2')
print(data_1.add(data_2, fill_value=10))

輸出結果

#1
a    20.0
b    30.0
c    40.0
d     NaN
dtype: float64

#2
a    20.0
b    30.0
c    40.0
d    50.0
dtype: float64

使用 .sub() 相減

print(data_1.sub(data_2))

輸出結果

a     0.0
b    10.0
c    20.0
d     NaN
dtype: float64

使用 .mul() 相乘

print(data_1.mul(data_2))

輸出結果

a    100.0
b    200.0
c    300.0
d      NaN
dtype: float64

使用 .div() 相除

print(data_1.div(data_2))

輸出結果

a    1.0
b    2.0
c    3.0
d    NaN
dtype: float64

下一篇將繼續介紹 DataFrame 相關的運算函數和更多應用!


上一篇
[DAY13]使用Python進行資料處理-Pandas(五)
下一篇
[DAY15]使用Python進行資料處理-Pandas(七)
系列文
讓Python不拍勝-實用套件實作與介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言