2016-05-30 114 views
1

在Python大熊貓據幀「DF」數據創建箱,我有以下三列:蟒蛇大熊貓據幀只爲閾值

song_id | user_id | play_count 

play_count =用戶多少次聽過一首歌

我想根據播放次數向此表中添加一列「評級」。 例如,如果play_count = 2,則評分將低至「1」。

首先,我需要建立我的1-10評級系統的評級門檻。

df.play_count.describe() 
count 393727.000000 
mean   2.567627 
std   4.822111 
min   1.000000 
25%   1.000000 
50%   1.000000 
75%   2.000000 
max   771.000000 
Name: play_count, dtype: float64 

大多數play_counts的是1和200之間:我想創建10桶,與上次鬥是,如果play_count高於200,這首歌有一個等級

pd.value_counts(pd.cut(df.play_count, bins = 10)) 
(0.23, 78] 393576 
(78, 155]  129 
(155, 232]  13 
(232, 309]   6 
(309, 386]   2 
(694, 771]   1 
(617, 694]   0 
(540, 617]   0 
(463, 540]   0 
(386, 463]   0 
dtype: int64 

「10」。所以我需要建立其他9個桶的閾值。

不幸的是,這並不工作:

pd.value_counts(pd.cut(df[['play_count'] < 200]], bins = 9)) 
f = df[df['play_count'] < 200].hist() 
+0

不應該在第一行是'pd.cut(DF [] DF [ 'play_count'<200]的,...'代替'pd.cut(df [['play_count'] <200]],...'? – IanS

+0

我也試過,它給了我錯誤「無效的語法」 – jeangelj

回答

1
# get threshholds for first 9 bins 
_, bins = pd.cut(df[df.play_count < 200].play_count, bins=9,retbins=True) 

# append threshhold representing class with play_counts > 200 
new_bins = pd.np.append(bins,float(max(df.play_count))) 

# our categorized data 
out = pd.cut(df.play_count,bins=new_bins) 

# a histogram of the data with the updated bins 
df.play_count.hist(bins=new_bins) 
+0

非常感謝! – jeangelj