pandas中Series運(yùn)算匯總(算術(shù)、比較和邏輯運(yùn)算)
在Python的Pandas庫中,Series對象支持多種運(yùn)算操作,這些包括算術(shù)運(yùn)算、比較運(yùn)算和邏輯運(yùn)算等。下面,我將分別演示這些運(yùn)算的代碼示例,并提供相應(yīng)的場景說明。
1. 算術(shù)運(yùn)算
算術(shù)運(yùn)算包括加、減、乘、除等基本運(yùn)算。Pandas允許對Series進(jìn)行這些運(yùn)算,同時(shí)自動對齊不同Series之間的索引。
Series長度相同時(shí)
示例代碼:
import pandas as pd
# 創(chuàng)建兩個(gè)Series對象
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([4, 5, 6], index=['a', 'b', 'c'])
# 加法運(yùn)算
result_add = s1 + s2
print("加法結(jié)果:\n", result_add)
# 減法運(yùn)算
result_sub = s1 - s2
print("減法結(jié)果:\n", result_sub)
# 乘法運(yùn)算
result_mul = s1 * s2
print("乘法結(jié)果:\n", result_mul)
# 除法運(yùn)算
result_div = s1 / s2
print("除法結(jié)果:\n", result_div)
執(zhí)行結(jié)果:
加法結(jié)果:
a 5
b 7
c 9
dtype: int64
減法結(jié)果:
a -3
b -3
c -3
dtype: int64
乘法結(jié)果:
a 4
b 10
c 18
dtype: int64
除法結(jié)果:
a 0.25
b 0.40
c 0.50
dtype: float64
適用場景:
在進(jìn)行統(tǒng)計(jì)分析或數(shù)據(jù)預(yù)處理時(shí),可以用來計(jì)算不同數(shù)據(jù)的總和、差值、產(chǎn)品或商,例如計(jì)算總銷售額或平均銷售額。
Series長度不同時(shí)
算術(shù)運(yùn)算(加、減、乘、除)在索引不完全對應(yīng)時(shí),結(jié)果的索引將是兩個(gè)Series索引的并集,不存在的索引將填充為NaN。
示例代碼:
import pandas as pd
# 創(chuàng)建長度不相同的兩個(gè)Series
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([4, 5, 6, 7], index=['b', 'c', 'd', 'e'])
# 加法運(yùn)算
result_add = s1 + s2
print("加法結(jié)果:\n", result_add)
# 乘法運(yùn)算
result_mul = s1 * s2
print("乘法結(jié)果:\n", result_mul)
執(zhí)行結(jié)果:
加法結(jié)果:
a NaN
b 6.0
c 8.0
d NaN
e NaN
dtype: float64乘法結(jié)果:
a NaN
b 8.0
c 15.0
d NaN
e NaN
dtype: float64
適用場景:
非常適合于金融數(shù)據(jù)分析中的時(shí)間序列數(shù)據(jù),因?yàn)椴煌慕鹑诠ぞ呖赡茉诓煌臅r(shí)間有交易記錄,通過這種方式可以輕松處理數(shù)據(jù)對齊的問題。
2. 比較運(yùn)算
比較運(yùn)算包括等于、不等于、大于、小于等,用于比較Series中的元素。
Series長度相同時(shí)
示例代碼:
# 比較運(yùn)算
result_gt = s1 > s2
print("大于運(yùn)算結(jié)果:\n", result_gt)
result_eq = s1 == s2
print("等于運(yùn)算結(jié)果:\n", result_eq)
執(zhí)行結(jié)果:
大于運(yùn)算結(jié)果:
a False
b False
c False
dtype: bool
等于運(yùn)算結(jié)果:
a False
b False
c False
dtype: bool
適用場景:
在數(shù)據(jù)篩選過程中,比較運(yùn)算常用于根據(jù)條件過濾數(shù)據(jù),例如篩選出所有銷量超過某一閾值的記錄。
Series長度不同時(shí)
比較運(yùn)算(等于、不等于、大于、小于等)在索引不對應(yīng)時(shí),也會產(chǎn)生NaN。
示例代碼:
# 等于運(yùn)算
result_eq = s1 == s2
print("等于運(yùn)算結(jié)果:\n", result_eq)
執(zhí)行結(jié)果:
等于運(yùn)算結(jié)果:
a False
b False
c False
d False
e False
dtype: bool
適用場景:
同樣適用于時(shí)間序列的數(shù)據(jù)對齊和比較。例如,用于比較不同時(shí)間點(diǎn)的股票價(jià)格是否相等。
3. 邏輯運(yùn)算
Series長度相同時(shí)
邏輯運(yùn)算主要是對Series中的bool值進(jìn)行and、or、not運(yùn)算。
示例代碼:
# 創(chuàng)建邏輯運(yùn)算的Series
s3 = pd.Series([True, False, True])
s4 = pd.Series([False, True, True])
# 邏輯與運(yùn)算
result_and = s3 & s4
print("與運(yùn)算結(jié)果:\n", result_and)
# 邏輯或運(yùn)算
result_or = s3 | s4
print("或運(yùn)算結(jié)果:\n", result_or)
執(zhí)行結(jié)果:
與運(yùn)算結(jié)果:
0 False
1 False
2 True
dtype: bool
或運(yùn)算結(jié)果:
0 True
1 True
2 True
dtype: bool
適用場景:
在處理多個(gè)條件篩選的情況下,例如同時(shí)滿足多個(gè)條件或至少滿足一個(gè)條件的數(shù)據(jù)篩選處理。
Series長度不同時(shí)
邏輯運(yùn)算(與、或、非)同樣會出現(xiàn)NaN,因?yàn)椴紶栠壿嬤\(yùn)算在涉及NaN時(shí)的結(jié)果也是NaN。
示例代碼:
# 創(chuàng)建邏輯數(shù)據(jù)Series
s3 = pd.Series([True, False, True], index=['a', 'b', 'c'])
s4 = pd.Series([False, True, True, False], index=['b', 'c', 'd', 'e'])
# 邏輯與運(yùn)算
result_and = s3 & s4
print("與運(yùn)算結(jié)果:\n", result_and)
# 邏輯或運(yùn)算
result_or = s3 | s4
print("或運(yùn)算結(jié)果:\n", result_or)
執(zhí)行結(jié)果:
與運(yùn)算結(jié)果:
a False
b False
c True
d False
e False
dtype: bool或運(yùn)算結(jié)果:
a True
b True
c Trued True
e False
dtype: bool
適用場景:
邏輯運(yùn)算通常用于處理資料篩選。在實(shí)際的數(shù)據(jù)處理過程中,例如在處理用戶行為數(shù)據(jù)時(shí),可能需要根據(jù)多個(gè)時(shí)間點(diǎn)的行為數(shù)據(jù)來確定用戶的最終行為傾向,邏輯運(yùn)算可以用來組合不同時(shí)間點(diǎn)的條件。
總結(jié)
對于長度不同的Series進(jìn)行計(jì)算時(shí),Pandas的處理方式是非常智能的,它通過自動對齊索引并用NaN填充缺失值,保證了計(jì)算的可行性和結(jié)果的準(zhǔn)確性。這使得Pandas在處理實(shí)際工作中遇到的不規(guī)則數(shù)據(jù)時(shí)顯得格外強(qiáng)大和靈活。
- 在金融分析中,經(jīng)常需要對齊交易數(shù)據(jù),比如股票的日交易數(shù)據(jù),尤其是在合并多個(gè)股票數(shù)據(jù)進(jìn)行比較時(shí)。
- 在科研數(shù)據(jù)處理中,例如生物信息學(xué)或氣象數(shù)據(jù)分析,數(shù)據(jù)的時(shí)間點(diǎn)可能不完全一致,此時(shí)這種對齊方式極為重要。
- 在商業(yè)智能中,處理銷售數(shù)據(jù)或用戶行為數(shù)據(jù)時(shí),需要對產(chǎn)品線不同階段的數(shù)據(jù)進(jìn)行整合分析。
Pandas通過這種靈活的數(shù)據(jù)處理方式,極大地簡化了數(shù)據(jù)預(yù)處理的復(fù)雜度,使得數(shù)據(jù)分析師可以更加專注于數(shù)據(jù)分析本身,而不是花費(fèi)大量時(shí)間處理數(shù)據(jù)對齊和缺失問題。
到此這篇關(guān)于pandas中Series運(yùn)算匯總(算術(shù)、比較和邏輯運(yùn)算)的文章就介紹到這了,更多相關(guān)pandas Series運(yùn)算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)包含min函數(shù)的棧
這篇文章主要介紹了Python實(shí)現(xiàn)包含min函數(shù)的棧,可實(shí)現(xiàn)棧中元素的計(jì)算及進(jìn)棧出棧等操作,需要的朋友可以參考下2016-04-04
django之使用celery-把耗時(shí)程序放到celery里面執(zhí)行的方法
今天小編就為大家分享一篇django之使用celery-把耗時(shí)程序放到celery里面執(zhí)行的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python Numpy 控制臺完全輸出ndarray的實(shí)現(xiàn)
這篇文章主要介紹了Python Numpy 控制臺完全輸出ndarray的實(shí)現(xiàn)方式,希望給大家做個(gè)參考,一起跟隨小編過來看看吧2020-02-02
在Ubuntu 20.04中安裝Pycharm 2020.1的圖文教程
這篇文章主要介紹了在Ubuntu 20.04中安裝Pycharm 2020.1的圖文教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Python深度學(xué)習(xí)之實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)
今天帶大家學(xué)習(xí)如何使用Python實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò),這是個(gè)很難的知識點(diǎn),文中有非常詳細(xì)的介紹,對小伙伴們很有幫助,需要的朋友可以參考下2021-06-06
python+selenium實(shí)現(xiàn)簡歷自動刷新的示例代碼
這篇文章主要介紹了python+selenium實(shí)現(xiàn)簡歷自動刷新的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
python忽略警告(warning)的3種方法小結(jié)
python開發(fā)中經(jīng)常遇到報(bào)錯(cuò)的情況,但是warning通常并不影響程序的運(yùn)行,而且有時(shí)特別討厭,下面我們來說下如何忽略warning錯(cuò)誤,這篇文章主要給大家介紹了關(guān)于python忽略警告(warning)的3種方法,需要的朋友可以參考下2023-10-10

