【发布时间】:2018-07-10 19:41:59
【问题描述】:
编辑显示原始数据框示例:
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 的方式。任何指导将不胜感激,以便我可以正确评估列相关性。
【问题讨论】:
-
weddings的值是否会改变?如果它是恒定的,那么.corr()永远是NaN。 -
@HarvIpan 这是一个很好的观点 - 我已经编辑了我上面的帖子以显示我原来的
df的示例行。看着wedding_seasons,我觉得loc()函数只是过滤weddings值时它确实应该扫描每一行并在条目不是weddings时提供0。想法? -
您只为
df.loc[df['category']=='weddings'创建假人。这就是为什么您过滤的数据总是将婚礼设为 1。 -
@HarvIpan 这很有意义。有没有一种方法可以使用
get_dummies()来检查cateogry列中专门针对weddings的所有行,而不仅仅是使用weddings过滤行? -
不确定,如果我遵循您的问题。可能会问另一个问题?不知道为什么要找到 3 个变量和一个常数变量之间的相关性。如果您只是想分析季节并找出哪个季节贡献最大,条形图就足够了。
标签: python pandas correlation dummy-variable