2016-04-10 19 views
1

Veri kümemde çok sayıda benzersiz değere (nesne tipi) sahip bir sütun var. Bazılarının önemsiz olduğuna inanıyorum (eğer yedeklerse) ve bu yüzden belirli bir eşiğin altındaysa seviyeleri gruplamak istiyorum. Sütunu etiket kodlayıcı modülü ile kategorik değerlere dönüştürdüm, sonra belirtilen bir eşikten daha az bir sayıya sahip olan bu kategorileri birleştirmek istiyorum. Bu yüzden, hazırladığım bu örnek kümesi için, 'bin' sütunundaki belirli bir sınıfa ait toplam sayı (frek), 2 yerine eşit veya daha azsa, bunun yerine 'o' 'new_bins' sütununun altında yeni bir değer alır. . Böylece bin ('c', 'd') 'new' lerde 'o' olarak değiştirilecektir.python benzer kategorik değerleri gruplandırıyor

id | bin | new_bins 
======== ================= 
    1  a  a 
    2  a  a 
    3  b  b 
    4  c  o 
    5  b  b 
    6  a  a 
    7  b  b 
    8  a  a 
    9  c  o 
    10  a  a 
    11  d  o 
    12  d  o 

df.groupby(['bin'], sort=True).count()) 

Bu, denediğim bir kod satırı ancak istediğimi gerçekleştirmiyor. Kodum olmadığı için bu biraz bulanık bir şey olduğunu biliyorum. Bu meselenin çöp kutularına atıfta bulunduğunu düşündüm ama belki de başka bir şey deniyor, benzer bir örneği cezalandıramayacağım. Kaggle yarışmalarında birleşme seviyeleri olarak adlandırıldı. Belki de sadece aramam gereken terim veya cümlenin isimlendirilmesi de yardımcı olacaktır.

cevap

1

Bu size yardımcı olacaktır:

In [127]: df 
Out[127]: 
    id bin new_bins 
0 1 a  a 
1 2 a  a 
2 3 b  o 
3 4 c  o 
4 5 b  o 
5 6 a  a 
6 7 b  o 
7 8 a  a 
8 9 c  o 
9 10 a  a 

Grup öğeleri:

In [128]: dfg = df.groupby('bin').count() 

In [129]: dfg 
Out[129]: 
    id new_bins 
bin 
a  5   5 
b  3   3 
c  2   2 

bir sütunun değerlerini değiştirmek için koşul

In [130]: dfg[dfg['id'] > 2] 
Out[130]: 
    id new_bins 
bin 
a  5   5 
b  3   3 

In [143]: val = dfg[dfg['id'] <= 2] 

In [144]: val 
Out[144]: 
    id new_bins 
bin 
c  2 MODIFIED 

karşılayan öğeleri seçmek için o koşulu karşılar

In [147]: df.loc[df['bin'] == val.index[0], 'new_bins'] = 'MOD' 

In [148]: df 
Out[148]: 
    id bin new_bins 
0 1 a  a 
1 2 a  a 
2 3 b  o 
3 4 c  MOD 
4 5 b  o 
5 6 a  a 
6 7 b  o 
7 8 a  a 
8 9 c  MOD 
9 10 a  a 
+0

çalışması gerektiği gibi görünüyor. Seni haberdar ederim. – OAK

İlgili konular