1
私は頻度に基づいて分類したいシティー名のリストを持っています。私は最初にビンニングを使いたいと思っていましたが、これは単調な間隔が必要なので、私はそれをあきらめました。次の、おそらくより良いアプローチは、pandas.qcutを使用して周波数に基づく分位数に基づいてカテゴリを作成することです。しかし、分位数を持つので、私は分数に基づいて追加の列を作成する方法がわかりません。例:頻度に基づいてテキスト列を分類する方法
import numpy as np
import pandas as pd
np.random.seed(0)
cities = np.random.choice(['Ontario', 'Ottawa', 'Vancouver','Edmonton',
'Winnipeg', 'Churchill'], 500)
# Create fake data and their frequencies
df = pd.DataFrame (cities, columns=['City'])
freq = df['City'].value_counts()
print (freq)
# Create quantiles
qc = pd.qcut (freq, 3)
print (qc)
# And now? I have the quantiles but how to assign a categorie to each City?
category_for_each_city = df['City'] in qC# does not work, but many other things neither
私は多くのことを試しましたが、どれもうまくいきませんでした。私はこのためのループを書くことができるはずですが、私はそれがPythonの方法であるとは想像できません。私はいくつかのSklearnトランスフォーマーを探してみましたが、この特定のソリューションでは何も見つかりませんでした。どんな助けでも大歓迎です。
さらに、私は多くの偏りのある分布を持っています。たとえば、ログ変換などの拡張が可能なソリューションは大きな助けになります。
これは確かに簡単です。私は 'qc.category_for_each_city.codes [df ['City']]'のようなものを試していましたが、あなたのソリューションはずっと簡単です。あなたの助けをありがとう! – Arnold