有没有讲述在熊猫数据帧的百分比或比赛的数量,而不做一些这样的功能...百分比匹配
len(trace_df[trace_df['ratio'] > 0])/len(trace_df)
0.189
len(trace_df[trace_df['ratio'] <= 0])/len(trace_df)
0.811
必须有一个更Python或至少优雅的方式做这件事。
有没有讲述在熊猫数据帧的百分比或比赛的数量,而不做一些这样的功能...百分比匹配
len(trace_df[trace_df['ratio'] > 0])/len(trace_df)
0.189
len(trace_df[trace_df['ratio'] <= 0])/len(trace_df)
0.811
必须有一个更Python或至少优雅的方式做这件事。
找到真正列的百分比的最pythonic方法是简单地取布尔表达式的均值。
(trace_df['ratio'] > 0).mean()
泰德的答案很好,当然,只要考虑这个答案就可以了。如果经常存在缺失值,请注意它们也将被视为False,因为熊猫仅跟踪浮点数的缺失值,而不是布尔值。
ser = pd.Series([-1,1,np.nan])
(ser > 0).mean()
0.33333333333333331
同样,Jezrael做出的好处只有在Ted的答案中没有缺失值时才是正确的。 (在这种情况下,你将有.333 + .333!= 1)
这不一定是错误的(它和你的答案产生的一样),但是如果你缺少值,你可能更喜欢添加一些额外的代码泰德的回答是:
(ser[ser.notnull()] > 0).mean()
0.5
我希望这不会是一个挑剔碰到过,不过我认为这是这里值得注意的是,由于mean()
默认行为是排除缺失值,但是当你把一个平均值这样的布尔值可以有效地包含缺失值,可能会导致意想不到的结果。
很好。和第二个值1 - (trace_df ['ratio']> 0).mean()' – jezrael