2013-07-03 13 views
5

dayalı değeri olan bir sütun ekleyin ve ben çözemediğiniz bir sorunla karşı karşıyayımpandalar - ... exisitng biri (bidonları, qcut) yavaşça</strong> + <strong>pandalar</strong><strong>piton R</strong><strong>hareket ediyorum

Bir sütundaki değerleri, kutulara atayarak ve bu ikili adları ile bir sütunu özgün DataFrame'a ekleyerek ayırmam gerekiyor. pandas.qcut kullanmayı deniyorum, ancak ortaya çıkan Categorical nesnesi, DataFrame ile iyi çalışmıyor gibi görünüyor.

Bir örnek: Şimdi

import pandas as pd 
df1 = pd.DataFrame(np.random.randn(10), columns=['a']) 
df1['binned_a'] = pd.qcut(df1['a'],4) 

Ben yeni bir sütun göremiyorum df1 üzerinde describe çağırmak için çalışıyor: Ancak

>>> df1.describe() 
       a 
count 10.000000 
mean 0.594072 
std  1.109981 
min -0.807307 
25% -0.304550 
50%  0.545839 
75%  1.189487 
max  2.851922 

, görünüşe göre vardır:

>>> df1 
      a   binned_a 
0 0.190015 (-0.305, 0.546] 
1 0.140227 (-0.305, 0.546] 
2 1.380000 (1.189, 2.852] 
3 -0.522530 [-0.807, -0.305] 
4 -0.452810 [-0.807, -0.305] 
5 2.851922 (1.189, 2.852] 
6 -0.807307 [-0.807, -0.305] 
7 0.901663 (0.546, 1.189] 
8 1.010334 (0.546, 1.189] 
9 1.249205 (1.189, 2.852] 

Neyi yanlış yapıyorum? İstenilen sonuç, kutularını tanımlayan 4 benzersiz dize değeri olan bir sütun elde etmektir (R'deki gibi).


DÜZENLEME:

olarak doğru Dan tarafından fark, salt metin verilerinin bulunduğu sütun ve böylece gizemli sorun çözüldü :) Çok teşekkürler göstermez summary() yöntemi!

cevap

3

Hiç bir R kullanıcısı olmadım, ancak sizi anlarsam, verileri kutulara ayırmak ve her bölmeyi tanımlamak istersiniz.

In [9]: df.groupby('binned_a').describe().unstack() 
Out[9]:    a             \ 
        count  mean  std  min  25%  50% 
binned_a                  
(-0.113, 0.109]  2 0.025114 0.010264 0.017856 0.021485 0.025114 
(-0.337, -0.113]  2 -0.282838 0.056445 -0.322751 -0.302794 -0.282838 
(0.109, 0.563]  3 0.354481 0.214402 0.134978 0.250027 0.365076 
[-1.842, -0.337]  3 -1.003969 0.765167 -1.841622 -1.335073 -0.828523 


        75%  max 
binned_a        
(-0.113, 0.109] 0.028742 0.032371 
(-0.337, -0.113] -0.262882 -0.242925 
(0.109, 0.563] 0.464233 0.563390 
[-1.842, -0.337] -0.585142 -0.341762 

aslında sadece yeni `binned_a` sütun ... Ancak` describe` sonucu neden gösterilmediğini merak ediyorum, https://stackoverflow.com/a/17150734/1221924

+0

Tam olarak değil, tamamen categoricals önlemek görmek için ben df1 ['binned_a'] = pd.Series (pd.qcut (df1 ['a'], 4)) 'yi denemeyi denedim ve hala sonuç yok ... –

+1

'binned_a''daki" biblolar "dizgilerdir Yani '' define() '' onları görmezden gelir. Tam olarak bidonları anlatmak ister miydin? –

+0

Ahhh, gerçekten ... Bir sütun 'define()' de gösterilmediğinde, o zaman bir şey yanlış (R metin sütunları da summry'de gösterilir) ... Şimdi açık gibi görünüyor, düşündüm çok! –

İlgili konular