引言:对齐运算是数据清洗的重要过程,可以按索引对齐进行运算,如果没对齐的位置则补NaN,最后也可以填充NaN
一、Series的对齐运算
1.Series 按行、索引对齐
import pandas as pds1 = pd.Series(range(10, 20), index=range(10))
s2 =pd.Series(range(20, 25), index=range(5))
print('s1: ')
print(s1)
print('')
print('s2: ')
print(s2)
2.Series的对齐运算
import pandas as pds1 = pd.Series(range(10, 20), index=range(10))
s2 =pd.Series(range(20, 25), index=range(5))
# Series 对齐运算
print(s1 + s2)
二、DataFrame的对齐运算
1.DataFrame按行、列索引对齐
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.ones((2, 2)), columns=['a', 'b'])
df2 = pd.DataFrame(np.ones((3, 3)), columns=['a', 'b', 'c'])
print('df1: ')
print(df1)
print('')
print('df2: ')
print(df2)
2.DataFrame的对齐运算
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.ones((2, 2)), columns=['a', 'b'])
df2 = pd.DataFrame(np.ones((3, 3)), columns=['a', 'b', 'c'])
# DataFrame对齐操作
print(df1 + df2)
三、填充未对齐的数据进行运算
fill_value
使用add, sub, div, mul的同时,
通过fill_value指定填充值,未对齐的数据将和填充值做运算
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.ones((2, 2)), columns=['a', 'b'])
df2 = pd.DataFrame(np.ones((3, 3)), columns=['a', 'b', 'c'])
s1 = pd.Series(range(10, 20), index=range(10))
s2 =pd.Series(range(20, 25), index=range(5))
print(s1)
print(s2)
print(s1.add(s2,fill_value=-1))
print('==================================')
print(df1)
print(df2)
print(df1.sub(df2,fill_value=2.))
四、函数应用
apply 和 applymap : 可直接使用 NumPy 的函数
import pandas as pd
import numpy as np# Numpy ufunc 函数
df = pd.DataFrame(np.random.randn(5,4) - 1)
print(df)
print(np.abs(df))
通过 apply 将函数应用到列或行上
import pandas as pd
import numpy as npdf = pd.DataFrame(np.random.randn(5,4) - 1)print(df.apply(lambda x :x.max()))
注意指定轴的方向,默认axis=0,方向是列
import pandas as pd
import numpy as npdf = pd.DataFrame(np.random.randn(5,4) - 1)# 指定轴方向,axis=1,方向是行
print(df.apply(lambda x : x.max(), axis=1))
通过 applymap将函数应用到每个数据上示
import pandas as pd
import numpy as npdf = pd.DataFrame(np.random.randn(5,4) - 1)#使用applymap应用到每个数据
f2 = lambda x : '%.2f' % x
print(df.applymap(f2))