如何从corr()函数输出中删除NaN值

时间:2018-07-10 19:42:00

标签: python pandas correlation dummy-variable

编辑以显示原始数据帧示例:

df.head(4)

            shop   category  subcategory     season
date                
2013-09-04  abc    weddings  shoes           winter
2013-09-04  def    jewelry   watches         summer
2013-09-05  ghi    sports    sneakers        spring
2013-09-05  jkl    jewelry   necklaces       fall

我已经使用get_dummies()成功生成了以下数据框:

wedding_seasons = pd.get_dummies(df.loc[df['category']=='weddings',['category','season']],prefix = '', prefix_sep = '' )

wedding_seasons.head(3)

        weddings    winter  summer  spring  fall
71654   1.0         0.0     1.0     0.0     0.0
72168   1.0         0.0     1.0     0.0     0.0
72080   1.0         0.0     1.0     0.0     0.0

上面的目标是帮助评估整个季节的婚礼频率,因此我使用corr()来产生以下结果:

         weddings   fall       spring     summer       winter
weddings NaN        NaN        NaN        NaN          NaN
fall     NaN        1.000000   0.054019   -0.331866    -0.012122
spring   NaN        0.054019   1.000000   -0.857205    0.072420
summer   NaN        -0.331866  -0.857205  1.000000     -0.484578
winter   NaN        -0.012122  0.072420   -0.484578    1.000000

我不确定婚礼专栏为什么会生成NaN值,但是我的直觉是它源自我最初创建wedding_seasons的方式。任何指导将不胜感激,以便我可以正确地评估列的相关性。

2 个答案:

答案 0 :(得分:1)

我不认为您对这里的内容感兴趣是“相关性”。

数据帧wedding_seasons中的所有列都包含浮点值;但是,如果我的猜想是正确的,则原始数据帧df中的行包含类似事务记录的内容,其中每一行对应一个人。

如果我不正确,请告诉我,但我将继续我的推理。

在一个观测值内,相关性将直观地衡量值的趋势在一起/彼此相对(例如,如果X和Y呈负相关,那么当我们看到X超出其均值时,我们期望Y出现)低于平均值)。

但是,这里的数据是,如果一项交易是summer,那么绝对不可能同时是winter。当您创建wedding_seasons时,Pandas正在创建虚拟变量,这些虚拟变量在计算相关矩阵时将被视为浮点值。由于任何行都不可能同时包含两个1.0条目,因此很明显,您得到的相关矩阵将在每个地方都具有负条目。

答案 1 :(得分:0)

您可以在进行corr()之前先删除“婚礼”列。

wedding_seasons.drop(columns = ['weddings'])