6 为什么pandas中的聚合运算遇到nan不会生成nan
6.1 nan的运算
import numpy as np
print(np.nan+4)
out(1): np.nan #这是因为nan与任何数字进行运算,结果均为nan
6.2 pandas中的聚合运算
import pandas as pd
import numpy as np
data = pd.DataFrame({"a":[1,2,3,np.nan],"b":[np.nan,2,3,4]})
print(data)
print(data.sum())
a b
0 1.0 NaN
1 2.0 2.0
2 3.0 3.0
3 NaN 4.0
a 6.0
b 9.0
dtype: float64
如图所示,在对其进行聚合运算时,本该因为数据中出现了
nan而结果应当为nan,但事实好像并不是如此
聚合运算中的skipna参数
print(data)
print(data.sum(skipna=False))
a b
0 1.0 NaN
1 2.0 2.0
2 3.0 3.0
3 NaN 4.0
a NaN
b NaN
dtype: float64
如图所示,当在聚合函数中使用了skipna参数,并令其为False,运算结果均为nan,另外,我们看到结果均是nan的那张数据表格数据类型是float,即nan的数据类型是float.
7 pandas中涉及多列数据的计算,如相关系数,协方差等
import pandas as pd
import numpy as np
df = pd.DataFrame({"a":[1,2,3,4,5],"b":[5,4,3,2,1]})
#计算a,b的相关系数
print(df["a"].corr(df["b"]))
#计算a,b的协方差
print(df["a"].cov(df["b"]))
-0.9999999999999999
-2.5
df.corr()
#将会计算各列之间的相关系数,生成一张表,我就不计算了
df.corrwith(df.a)
#计算某一列与其他整个表的相关系数