有沒有講述在熊貓數據幀的百分比或比賽的數量,而不做一些這樣的功能...百分比匹配
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