2016-09-24 8 views
0

私はデータフレームdfを持っており、そこからカラムmpgを抽出します。データをnumpyのクラスにグループ化する

mpgの値に基づいて、各行にクラスラベル/名前を追加したいとします。

私は

mpg = df.iloc[:,0] 

median = np.percentile(mpg, q=50) 
upper_quartile = np.percentile(mpg, q=75) 
lower_quartile = np.percentile(mpg, q=25) 

mpg_class = np.ones((num_observations, 1)) 

for i, element in enumerate(X): 
    mpg = element[0] 
    if mpg >= upper_quartile: 
     mpg_class[i] = 3 
    elif mpg >= median: 
     mpg_class[i] = 2 
    elif mpg >= lower_quartile: 
     mpg_class[i] = 1 
    else: 
     mpg_class[i] = 0 

でそれを行っているが、私はそれが道賢くnumpyで行うことが可能かどうだろうか?私はそれがnp.whereまたはこれのようなものでそれをすることが可能かもしれないと思います。あなたがpd.qcutを探しているよう

+0

サンプルケースを追加できますか? 'X'とは何ですか? – Divakar

+0

'X'は多くの変数を持つパンダのデータフレームですが、' mpg = df.iloc [:、0] 'というベクトルは最初の列だけで、' 10.0'と '90.0の間の浮動小数点値を含んでいます'。 – Jamgreen

+0

あなたは[Pandas 'Cut()?](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html)を探しています –

答えて

3

は思え:

pd.qcut(df.iloc[:, 0], [0, 0.25, 0.5, 0.75, 1], [0, 1, 2, 3]) 
Out: 
0  1 
1  0 
2  1 
3  0 
4  0 
5  0 
6  0 
... 

最初のパラメータは、あなたが離散したいシリーズです。 2番目は分位数/百分位数です。最後のものはラベルです(0〜25% - 0,25%〜50% - 1など)

+0

まさに私が望んでいたものです。ありがとう! – Jamgreen

関連する問題