1.向量化函数应用map。
map是作用在Series上,是元素级别的操作 Series.map(arg, na_action=None) ,arg可以是一个函数,对元素做函数变换 ,arg也可以是一个dict、series,对元素做数据映射。
df=pd.Series([1,2,4,7,8],index=('a','m','c','e','f'))
print(df)
out:
a 1
m 2
c 4
e 7
f 8
print(df.map(lambda x:x*x))
out:
a 1
m 4
c 16
e 49
f 64
dtype: int64
dict={1:'A',2:'B',7:'C'}
print(df.map(dict))
out:
a A
m B
c NaN
e C
f NaN
dtype: object
2.向量化函数应用 - applymap。
applymap是作用在dataframe上,是元素级别的操作 DataFrame.applymap(func) ,func:参数只能是一个函数,func可以是自己定义的函数。
import pandas as pd
import numpy as np
df=pd.DataFrame(np.arange(9).reshape(3,3),index=list("acb"),columns=['w','m','z',])
print(df)
out:
w m z
a 0 1 2
c 3 4 5
b 6 7 8
print(df.applymap(np.sqrt))
out:
w m z
a 0.000000 1.000000 1.414214
c 1.732051 2.000000 2.236068
b 2.449490 2.645751 2.828427
print(df.apply(sum,axis=1))
out:
a 3
c 12
b 21
dtype: int64
3.向量化函数应用 -apply。
apply是作用在dataframe上,用于对row或者column进行计算 DataFrame.apply(func, axis=0), func为聚合函数时,对行列进行聚合处理 ,func为普通函数时,和applymap效果一样
4.数据的一元运算。
利用map、applymap。
5.数据的二元运算。
两个对象运算中数据对齐问题: 取索引的并集进行数据对其,在没有重叠的位置默认赋值'NA’ Series 和 DataFrame 之间的算术运算涉及广播, 函数举例(类似) DataFrame.add(other, axis='columns', fill_value=None)
import pandas as pd
import numpy as np
df=pd.DataFrame(np.arange(9).reshape(3,3),index=list("acb"),columns=['w','m','z',])
df1=pd.DataFrame(np.arange(9).reshape(3,3),index=list("abf"),columns=['w','k','h',])
print(df)
out:
w m z
a 0 1 2
c 3 4 5
b 6 7 8
print(df1)
out:
w k h
a 0 1 2
b 3 4 5
f 6 7 8
print(df.add(df1))
out:
h k m w z
a NaN NaN NaN 0.0 NaN
b NaN NaN NaN 9.0 NaN
c NaN NaN NaN NaN NaN
f NaN NaN NaN NaN NaN
#并集后给没有值的一方填入fill_value,如果两方都是NAN则依旧为NAN。
print(df.add(df1,fill_value=0))
out:
h k m w z
a 2.0 1.0 1.0 0.0 2.0
b 5.0 4.0 7.0 9.0 8.0
c NaN NaN 4.0 3.0 5.0
f 8.0 7.0 NaN 6.0 NaN
6.汇总运算。
mean(axis=None, skipna=None, level=None) ,axis:行列标记, skipna:是否跳过NaN值 level:对于多层索引有效。
import pandas as pd
import numpy as np
df_obj=pd.DataFrame([[1,6.5,3],[4.6,np.nan,2.4],[np.nan,np.nan,3.9],[np.nan
,8.5,3.8]],columns=['col1','col2','col3'])
print(df_obj)
out:
col1 col2 col3
0 1.0 6.5 3.0
1 4.6 NaN 2.4
2 NaN NaN 3.9
3 NaN 8.5 3.8
print(df_obj.sum(axis=0))
out:
col1 5.6
col2 15.0
col3 13.1
dtype: float64
print(df_obj.sum(axis=0,skipna=False))
out:
col1 NaN
col2 NaN
col3 13.1
dtype: float64