中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現pandas對齊運算

發布時間:2021-10-29 18:04:07 來源:億速云 閱讀:142 作者:iii 欄目:開發技術

這篇文章主要講解了“怎么實現pandas對齊運算”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么實現pandas對齊運算”吧!

1.算術運算和數據對齊

import numpy as np
import pandas as pd

1.1 Series

a1 = pd.Series(np.arange(4),index=['a','b','c','d'])
a2 = pd.Series(np.arange(5),index=['a','r','c','u','k'])
print(a1)
print("="*20)
print(a2)

a    0
b    1
c    2
d    3
dtype: int32
====================
a    0
r    1
c    2
u    3
k    4
dtype: int32

有相同的索引值相加后結果變為浮點數,不相同則返回NAN值。

a1 + a2

a    0.0
b    NaN
c    4.0
d    NaN
k    NaN
r    NaN
u    NaN
dtype: float64

1.2 DataFrame

a3 = pd.DataFrame(np.arange(12).reshape(3,4),index=['a','b','c'],columns=['q','w','e','r'])
a4 = pd.DataFrame(np.arange(9).reshape(3,3),index=['a','u','c'],columns=['m','e','r'])
print(a3)
print("="*20)
print(a4)

   q  w   e   r
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
====================
   m  e  r
a  0  1  2
u  3  4  5
c  6  7  8

只有行和列索引都相同的才能運算,否則返回NAN值

a3 + a4

 e   m     q   r     w
a 3.0   NaN NaN   5.0 NaN
b NaN   NaN NaN   NaN NaN
c 17.0  NaN NaN   19.0 NaN
u NaN   NaN NaN   NaN NaN

2.使用填充值的算術方法

2.1 Series

a1 = pd.Series(np.arange(4),index=['a','b','c','d'])
a2 = pd.Series(np.arange(5),index=['a','r','c','u','k'])
print(a1)
print("="*20)
print(a2)
print("="*20)
print(a1 + a2)    #有相同的索引值相加后結果變為浮點數,不相同索引值相加則返回NAN

a    0
b    1
c    2
d    3
dtype: int32
====================
a    0
r    1
c    2
u    3
k    4
dtype: int32
====================
a    0.0
b    NaN
c    4.0
d    NaN
k    NaN
r    NaN
u    NaN
dtype: float64

使用填充值,不會返回NAN值,如果a1,a2的索引值相同則將對應的值作算術運算,如果不同則作為一行新的數據,形成一個新的Series索引

a1.add(a2,fill_value=0)  #a1+a2 忽略NAN影響

a    0.0
b    1.0
c    4.0
d    3.0
k    4.0
r    1.0
u    3.0
dtype: float64

2.2 DataFrame

a3 = pd.DataFrame(np.arange(12).reshape(3,4),index=['a','b','c'],columns=['q','w','e','r'])
a4 = pd.DataFrame(np.arange(9).reshape(3,3),index=['a','u','c'],columns=['m','e','r'])
print(a3)
print("="*20)
print(a4)
print("="*20)
print(a3 + a4)   #只有行索引和列索引都相同的才能運算,否則返回NAN

   q  w   e   r
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
====================
   m  e  r
a  0  1  2
u  3  4  5
c  6  7  8
====================
    e     m     q     r     w
a   3.0   NaN   NaN   5.0   NaN
b   NaN   NaN   NaN   NaN   NaN
c  17.0   NaN   NaN   19.0  NaN
u   NaN   NaN   NaN   NaN   NaN

只有當兩個DataFrame索引獨有的行和列獨有的索引對應的值才返回NAN,例如下面的 b行m列返回NAN值,其索引值是由a3獨有的b和a4獨有的m組成的,行和列其中之一的索引值不是獨有的,則返回對應DataFrame中的值,例如a行q列中的是a3,a4都有的,返回a3中 a行q列對應的值。

#使用填充值,
a3.add(a4,fill_value=0)

    e    m  q     r    w
a 3.0    0.0  0.0 5.0    1.0
b 6.0    NaN  4.0 7.0    5.0
c 17.0   6.0  8.0 19.0   9.0
u 4.0    3.0  NaN 5.0    NaN

r 開頭字母表示會翻轉參數

1/a3

q w e r
a inf 1.000000 0.500000 0.333333
b 0.250 0.200000 0.166667 0.142857
c 0.125 0.111111 0.100000 0.090909

a3.rdiv(1)   #翻轉div(除法),結果等同 1/a3

q w e r
a inf 1.000000 0.500000 0.333333
b 0.250 0.200000 0.166667 0.142857
c 0.125 0.111111 0.100000 0.090909

reindex指定索引和缺失值

將a3的列索引替換為a4的列索引 ,如果索引名字不相同,則返回NAN(不改變原DataFrame索引)

a3.reindex(columns=a4.columns))

 m e r
a NaN 2 3
b NaN 6 7
c NaN 10 11

#對NAN進行填充
a3.reindex(columns=a4.columns,fill_value=66)  #把所有的NAN替換為66(可指定任意值)

 m e r
a 66 2 3
b 66 6 7
c 66 10 11

3.DataFrame和Series混合運算

3.1 按行廣播

arr = np.arange(12).reshape(3,4)
arr

array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

取出第一行

arr[0] #取出第一行

array([0, 1, 2, 3])

每一行都減去第一行(按行進行廣播)

arr - arr[0] #每一行都減去第一行(按行進行廣播)

array([[0, 0, 0, 0],
       [4, 4, 4, 4],
       [8, 8, 8, 8]])

a3 = pd.DataFrame(np.arange(12).reshape(3,4),index=['a','b','c'],columns=['q','w','e','r'])
a3

    q w e r
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11

位置索引 iloc[m,n] 第一個參數m表示行,第二個參數n表示列

s1 = a3.iloc[0]   #取出第一行
s1

q    0
w    1
e    2
r    3
Name: a, dtype: int32

每一行都減去第一行(按行進行廣播)

a3-s1    #每一行都減去第一行(按行進行廣播)

    q w e r
a 0 0 0 0
b 4 4 4 4
c 8 8 8 8

3.2 按列廣播

取出q這一列

s2 = a3['q']  #取出q這一列
s2

a    0
b    4
c    8
Name: q, dtype: int32

默認是行axis=1,指定axis='index'或axis=0,按列進行廣播(a3所有列分別減去第q列)

a3.sub(s2,axis='index')  #默認是行axis=1,指定axis='index'(或axis=0),按列進行廣播(a3所有列分別減去第q列)

 q w e r
a 0 1 2 3
b 0 1 2 3
c 0 1 2 3

a3.sub(s2,axis=0)  #默認是行axis=1,指定axis=0(或)axis='index',按列進行廣播(a3所有列分別減去第q列)

    q w e r
a 0 1 2 3
b 0 1 2 3
c 0 1 2 3

a3.sub(s2)  #默認情況 axis=1

    a b c e q r w
a NaN NaN NaN NaN NaN NaN NaN
b NaN NaN NaN NaN NaN NaN NaN
c NaN NaN NaN NaN NaN NaN NaN

感謝各位的閱讀,以上就是“怎么實現pandas對齊運算”的內容了,經過本文的學習后,相信大家對怎么實現pandas對齊運算這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临朐县| 克什克腾旗| 友谊县| 江源县| 罗山县| 临邑县| 乌兰浩特市| 禹城市| 女性| 广州市| 杭锦旗| 洛川县| 新安县| 成安县| 韶关市| 望谟县| 根河市| 平湖市| 垦利县| 五大连池市| 海南省| 凤山市| 鄂托克旗| 石城县| 惠东县| 枣庄市| 武邑县| 馆陶县| 简阳市| 麻城市| 江城| 桑植县| 吉安县| 淮南市| 隆德县| 湘潭市| 和林格尔县| 易门县| 鲁山县| 黔南| 乌兰浩特市|