一部の列にカテゴリ値を持つデータセットがあります(1行に複数のカテゴリが含まれ、,
で区切られていることがあります)。例:ダミー列を生成する前のデータフレーム内のフィルタカテゴリ
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