编辑以显示原始数据帧示例:
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
的方式。任何指导将不胜感激,以便我可以正确地评估列的相关性。
答案 0 :(得分:1)
我不认为您对这里的内容感兴趣是“相关性”。
数据帧wedding_seasons
中的所有列都包含浮点值;但是,如果我的猜想是正确的,则原始数据帧df
中的行包含类似事务记录的内容,其中每一行对应一个人。
如果我不正确,请告诉我,但我将继续我的推理。
在一个观测值内,相关性将直观地衡量值的趋势在一起/彼此相对(例如,如果X和Y呈负相关,那么当我们看到X超出其均值时,我们期望Y出现)低于平均值)。
但是,这里的数据是,如果一项交易是summer
,那么绝对不可能同时是winter
。当您创建wedding_seasons
时,Pandas正在创建虚拟变量,这些虚拟变量在计算相关矩阵时将被视为浮点值。由于任何行都不可能同时包含两个1.0
条目,因此很明显,您得到的相关矩阵将在每个地方都具有负条目。
答案 1 :(得分:0)
您可以在进行corr()
之前先删除“婚礼”列。
wedding_seasons.drop(columns = ['weddings'])