Series和DataFrame的簡單數學運算

2020-08-08 13:27:11

Series和DataFrame的簡單數學運算操作學習

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

引入相關庫

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

Series的數學運算

首先建立兩個series,s1和s2

s1=Series([1,2,3],index=['A','B','C'])
s1
A    1
B    2
C    3
dtype: int64
s1=Series([1,2,3],index=['A','B','C'])
s1
A    1
B    2
C    3
dtype: int64
s2=Series([4,5,6,7],index=['B','C','D','E'])
s2
B    4
C    5
D    6
E    7
dtype: int64

獲取s1+s2的運算結果
其中A在s2裏面爲NaN,D和E在s1裏面爲NaN,NaN和任何數相加爲NaN

s1 + s2
A    NaN
B    6.0
C    8.0
D    NaN
E    NaN
dtype: float64

DataFrame的運算

先建立兩個DataFrame
第一個DataFrame爲2*2的

df1=DataFrame(np.arange(4).reshape(2,2),index=['A','B'],columns=['BJ','SH'])
df1
     BJ SH
----------
A    0   1
B    2   3

第二個DataFrame爲3*3的

df2=DataFrame(np.arange(9).reshape(3,3),index=['A','B','C'],columns=['BJ','SH','GZ'])
df2
     BJ SH GZ
-------------
A    0  1  2
B    3  4  5
C    6  7  8

獲取df1+df2的運算結果
加法規則與Sereies類似,df1相對於df2沒有值的地方作爲NaN參與運算,結果也爲NaN。

     BJ    SH   GZ
------------------
A    0.0  NaN  2.0
B    5.0  NaN  7.0
C    NaN  NaN  NaN

DataFrame內建的運算

建立一個新的DataFrame

df3=DataFrame([[1,2,3],[4,5,np.nan],[7,8,9]],index=['A','B','C'],columns=['c1','c2','c3'])
df3
     c1  c2  c3
------------------
A    1   2   3.0
B    4   5   NaN
C    7   8   9.0

sum運算返回一個Series,忽略NaN的值,得出每一列的和

df3.sum()
c1    12.0
c2    15.0
c3    12.0
dtype: float64

如下可以獲取每一行的求和

df3.sum(axis=1)
A     6.0
B     9.0
C    24.0
dtype: float64

min求每一列的最小值,如果求行的min傳入axis=1

df3.min()
c1    1.0
c2    2.0
c3    3.0
dtype: float64

max求每一列的最大值,如果求行的max傳入axis=1

df3.max()
c1    7.0
c2    8.0
c3    9.0
dtype: float64

describe會返回一些以列爲基礎的統計的數據,count代表數據個數,mean代表平均值,std代表標準差,min代表最小值,max代表最大值,以及百分比數據。

df3.describe()
       c1   c2    c3
-------------------------
count 3.0  3.0  2.000000
mean  4.0  5.0  6.000000
std   3.0  3.0  4.242641
min   1.0  2.0  3.000000
25%   2.5  3.5  4.500000
50%   4.0  5.0  6.000000
75%   5.5  6.5  7.500000
max   7.0  8.0  9.000000