2

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

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

4

2 回答 2

1

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

数据框中的所有列wedding_seasons都包含浮点值;但是,如果我的怀疑是正确的,那么原始数据框中的行df包含类似于交易记录的内容,其中每一行对应于一个人。

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

相关性将直观地衡量在同一观察中值一起变化/相互对抗的趋势(例如,如果 X 和 Y 负相关,那么当我们看到 X 高于其平均值时,我们预计 Y 会低于其平均值)。

但是,您在这里拥有的是数据,如果一个事务是summer,那么绝对不可能winter同时发生。当您创建时wedding_seasons,Pandas 会创建虚拟变量,在计算相关矩阵时将其视为浮点值;由于任何行不可能同时包含两个1.0条目,因此很明显,您得到的相关矩阵将到处都有负条目。

于 2018-07-10T20:36:12.060 回答
0

你可以在做之前删除婚礼栏corr()

wedding_seasons.drop(columns = ['weddings'])
于 2018-07-10T19:57:06.663 回答