我有一些數據集在某些列中包含分類值(一行可能包含多個類別,由,
分隔)。例如:在生成虛擬列之前在數據幀中過濾類別
user hashtags
0 u1 a,b
1 u2 a,c
2 u3 c
我想爲這些類別製作虛擬列。我對數據集中出現次數很少的類別也不感興趣。目前,我生成虛設列,然後丟棄的那些具有很少出現,這樣的(chunk
是原始數據幀):
dummies_hashtags = chunk['hashtags'].str.get_dummies(sep=',')
dummies_hashtags.columns = dummies_hashtags.columns.map(lambda c: 'hashtag_' + c)
# get rid of dummy columns with usage below 10
usage = dummies_hashtags.sum(0)
high_usage = dummies_hashtags[np.where(usage >= 10)[0]]
low_usage = dummies_hashtags[np.where(usage < 10)[0]]
dummies_hashtags = high_usage
dummies_hashtags['other_hashtags'] = low_usage.sum(1)
通知我還加入了列的類別與所述數發生率低。
這種方法的工作原理非常緩慢。關於如何改進它的想法是首先獲取所有獨特的類別和它們的計數,然後刪除具有低計數的類別,在之前生成虛擬列。
我想問你這個問題:這個方法是否會改善任何事情?它將如何實施? (想到了np.unique
和return_counts=True
)。另外,有沒有更好的方法來解決這個問題?
(注意:數據集已經是SparseDataFrame
)。
列名是什麼?你顯示的內容看起來不像DataFrame。 – Peaceful