2013-07-03 5 views
5

मैं धीरे धीरे अजगर को से आगे बढ़ रहा हूँ आर + पांडा के आधार पर मूल्य के साथ एक स्तंभ जोड़ने के लिए, और मैं एक समस्या का समाधान नहीं कर रहा सामना करना पड़ रहा हूँ ...पांडा - exisitng एक (डिब्बे, qcut)

मुझे एक कॉलम से मूल्यों को अलग करने की आवश्यकता है, उन्हें डिब्बे पर असाइन करके और उन बिन नामों के साथ कॉलम को मूल DataFrame पर जोड़कर। मैं pandas.qcut का उपयोग करने की कोशिश कर रहा हूं, लेकिन परिणामस्वरूप Categorical ऑब्जेक्ट DataFrame के साथ अच्छी तरह से खेल नहीं रहा है।

एक उदाहरण:

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

अब जब df1 पर describe आह्वान करने के लिए मैं नया स्तंभ नहीं देख सकते हैं की कोशिश कर रहा:

>>> 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 

हालांकि, यह जाहिरा तौर पर है:

>>> 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] 

मैं क्या गलत कर रहा हूं? मेरा वांछित परिणाम डिब्बे का वर्णन करने वाले 4 अद्वितीय स्ट्रिंग मानों के साथ कॉलम प्राप्त करना है (जैसे आर में कारक)।


संपादित करें:

के रूप में सही ढंग से दान ने देखा, summary() विधि और केवल-पाठ डेटा वाले स्तंभ को इतना रहस्यमय समस्या हल हो जाता है :) धन्यवाद एक बहुत नहीं दिखाया जाएगा!

उत्तर

3

मैं कभी भी आर उपयोगकर्ता नहीं रहा हूं, लेकिन अगर मैं आपको समझता हूं, तो आप डेटा को डिब्बे में समूहित करना और प्रत्येक बिन का वर्णन करना चाहते हैं।

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 

Categoricals पूरी तरह से बचने के लिए https://stackoverflow.com/a/17150734/1221924

+0

नहीं वास्तव में देखते हैं, वास्तव में मैं बस सोच रहा हूँ क्यों नई 'binned_a' स्तंभ' describe' परिणाम में नहीं दिखा रहा है ... हालांकि, मैं 'df1 ['binned_a'] = pd.Series (pd.qcut (df1 ['a'], 4) करने का प्रयास किया है) और अभी भी कोई परिणाम नहीं ... –

+1

' binned_a'' में "डिब्बे" तार हैं , इसलिए '' वर्णन() '' उन्हें अनदेखा कर रहा है। क्या आप वास्तव में डिब्बे के बारे में वर्णन करना चाहते हैं? –

+0

अहह, वास्तव में ... मैंने सोचा था कि जब कोई स्तंभ 'वर्णन()' में नहीं दिख रहा है तो कुछ गलत है (आर टेक्स्ट कॉलम में भी सारांश में दिखाया गया है) ... तो अब यह स्पष्ट हो रहा है, धन्यवाद बहुत! –

संबंधित मुद्दे