《python for data analysis》pandas可以對不同索引的物件進行算術運算。
例如:當物件相加時,如果存在不同的索引對,其結果的索引就是該索引對的並集。自動的資料對齊操作在不重疊的索引處引入了na值。並且會在算術運算中傳播。
in [1]: import numpy as np
in [2]: import pandas as pd
in [3]: from pandas import series, dataframe
in [4]: df1 = dataframe(np.arange(12).reshape((3,4)),columns=list('abcd'))
in [5]: df2 = dataframe(np.arange(20).reshape((4,5)),columns=list('abcde'))
in [6]: df1
out[6]:
a b c d00
1231
4567
28910
11in [7]: df2
out[7]:
a b c d e00
1234
1567
89210
1112
1314315
1617
1819
in [8]: df1+df2
out[8]:
a b c d e
00.0
2.04.0
6.0 nan
19.0
11.0
13.0
15.0 nan
218.0
20.0
22.0
24.0 nan
3 nan nan nan nan nan
in [9]: df1.add(df2, fill_value=0)
out[9]:
a b c d e
00.0
2.04.0
6.04.0
19.0
11.0
13.0
15.0
9.02
18.0
20.0
22.0
24.0
14.0
315.0
16.0
17.0
18.0
19.0
in [10]: df1.reindex(columns=df2.columns, fill_value=0)
out[10]:
a b c d e00
1230
1456
7028
910110
廣播
in [12]: arr = np.arange(12).reshape((3,4))
in [13]: arr
out[13]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
in [14]: arr[0] #行
out[14]: array([0, 1, 2, 3])
in [15]: arr - arr[0]
out[15]:
array([[0, 0, 0, 0],
[4, 4, 4, 4],
[8, 8, 8, 8]])
預設情況下,dataframe和series之間的算術運算會將series的索引匹配到dataframe的列,然後沿著行一直向下傳播。(series=frame.ix[0]
)
上例是series取dataframe的行,但是如果想匹配到dataframe的行,且希望在列上傳播,必須使用算術運算方法。frame.sub(series, axis=0)
。傳入的軸號就是希望匹配的軸。(series = frame['a']
)
pandas基礎運算和合併示例
source python資料分析的三劍客 outputs source import numpy as np n n import pandas as pd n n pip install matplotlib n 畫圖,視覺化!n 頭號玩家,虛擬實境遊戲,視覺化,立體化 n import mat...
Pandas 矩陣運算
dataframe.add other,axis columns level none,fill value none dataframe.sub other,axis columns level none,fill value none dataframe.mul other,axis colum...
pandas算術運算
df1 dataframe np.arange 12 reshape 3,4 columns list abcd df1out 74 a b c d 0 0 1 2 3 1 4 5 6 7 2 8 9 10 11df2 dataframe np.arange 20 reshape 4,5 colum...