पंडों के ग्रुपबी रेंज ऑफ वैल्यूज़


92

क्या groupbyमूल्य वृद्धि की एक सीमा पर आह्वान करने के लिए पांडा में एक आसान तरीका है ? उदाहरण के लिए नीचे दिए गए उदाहरण में I और समूह कॉलम Bको बढ़ा-चढ़ा कर देखा जा सकता है 0.155, ताकि उदाहरण के लिए, कॉलम में समूहों के पहले जोड़ेB '0 - 0.155, 0.155 - 0.31 ...' के बीच की श्रेणियों में विभाजित किया जा सके।

import numpy as np
import pandas as pd
df=pd.DataFrame({'A':np.random.random(20),'B':np.random.random(20)})

     A         B
0  0.383493  0.250785
1  0.572949  0.139555
2  0.652391  0.401983
3  0.214145  0.696935
4  0.848551  0.516692

वैकल्पिक रूप से मैं पहले उन वृत्तों द्वारा डेटा को एक नए कॉलम में वर्गीकृत कर सकता था और बाद groupbyमें कॉलम में लागू हो सकने वाले किसी भी प्रासंगिक आँकड़े को निर्धारित करने के लिए उपयोग कर सकता था A?

जवाबों:


132

आप में रुचि हो सकती है pd.cut:

>>> df.groupby(pd.cut(df["B"], np.arange(0, 1.0+0.155, 0.155))).sum()
                      A         B
B                                
(0, 0.155]     2.775458  0.246394
(0.155, 0.31]  1.123989  0.471618
(0.31, 0.465]  2.051814  1.882763
(0.465, 0.62]  2.277960  1.528492
(0.62, 0.775]  1.577419  2.810723
(0.775, 0.93]  0.535100  1.694955
(0.93, 1.085]       NaN       NaN

[7 rows x 2 columns]

11
क्या मेरे लिए कई आयामों के लिए ऐसा करना संभव है? अनिवार्य रूप से दो मूल्यों को एक साथ समूहीकृत करना?
madsthaks

13

इसे इस्तेमाल करे:

df = df.sort('B')
bins =  np.arange(0,1.0,0.155)
ind = np.digitize(df['B'],bins)

print df.groupby(ind).head()

बेशक आप समूहों पर किसी भी फ़ंक्शन का उपयोग न केवल कर सकते हैं head

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.