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

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的方式。任何指导将不胜感激,以便我可以正确地评估列相关性。

最佳答案

我认为您不希望在这里看到“相关性”。

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

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

关联将直观地衡量值的趋势在同一观察值内一起/相对变化(例如,如果X和Y呈负相关,那么当我们看到X高于其均值时,我们希望Y出现在其均值以下) )。

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

09-25 20:55