2013-03-14 9 views
106

मैं एक डीबी विकल्प के रूप में पांडा का उपयोग कर रहा हूं क्योंकि मेरे पास एकाधिक डेटाबेस (ऑरैकल, mssql, आदि) हैं और मैं SQL समकक्ष को कमांड का अनुक्रम बनाने में असमर्थ हूं।पांडस गिनती (विशिष्ट) बराबर

YEARMONTH, CLIENTCODE, SIZE, .... etc etc 

एसक्यूएल में, प्रति वर्ष विभिन्न ग्राहकों की राशि की गणना करने के होगा::

मैं एक मेज कुछ कॉलम के साथ एक DataFrame में लोड

SELECT count(distinct CLIENTCODE) FROM table GROUP BY YEARMONTH; 

और परिणाम होगा

201301 5000 
201302 13245 

मैं पांडा में यह कैसे कर सकता हूं?

+0

मैंने किया है और दो श्रृंखला वर्ष महीना द्वारा और सभी अनन्य मानों के साथ अनुक्रमित के साथ आया था: Yhat के अनुसार। प्रत्येक श्रृंखला पर मूल्यों की मात्रा कैसे गिनें? –

+0

कुछ के लिए, 'value_counts' वह उत्तर हो सकता है जिसे आप ढूंढ रहे हैं: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.value_counts.html –

उत्तर

183

मेरा मानना ​​है कि यह तुम क्या चाहते है:

table.groupby('YEARMONTH').CLIENTCODE.nunique() 

उदाहरण:

In [2]: table 
Out[2]: 
    CLIENTCODE YEARMONTH 
0   1  201301 
1   1  201301 
2   2  201301 
3   1  201302 
4   2  201302 
5   2  201302 
6   3  201302 

In [3]: table.groupby('YEARMONTH').CLIENTCODE.nunique() 
Out[3]: 
YEARMONTH 
201301  2 
201302  3 
+4

'apply' की आवश्यकता नहीं है , मुझे लगता है; '.CLIENTCODE.nunique() 'भी काम करना चाहिए। – DSM

+0

हा। खैर, यह वैसे भी अधिक संतोषजनक लगता है। चीयर्स! –

+1

.column.unique() भी एक विकल्प है ... – reabow

24

दिलचस्प बात यह बहुत बार len(unique()) कुछ समय (3x-15x) nunique() से तेज है।

+5

आपका मतलब यह है? '.CLIENTCODE.apply (लैम्ब्डा एक्स: लेन (x.unique())) ', [यहां] से (http://stackoverflow.com/a/17926436/4015990) – Chen

+3

मुझे' अद्वितीय() आकार का उपयोग करना पसंद है [ 0] '। – 3novak

19

यहाँ एक और तरीका है, बहुत सरल, मान लीजिए कि आपके dataframe नाम daat है और स्तंभ नाम YEARMONTH

daat.YEARMONTH.value_counts() 
+0

मुझे यह जवाब पसंद है। यदि मेरे कॉलम नाम में '।' है तो मैं इस विधि का उपयोग कैसे कर सकता हूं इसमें (उदा। 'ck.Class')? धन्यवाद –

+1

दाट ['ck.Class']। Value_counts() – Enthusiast

+0

यह पूछे गए प्रश्न को संबोधित नहीं करता है। –

-1

ऊपर अमीर जवाब को जोड़ना है, वहाँ अजगर के साथ पांडा dataframe पर एसक्यूएल प्रश्नों लिखने के लिए एक संभावना है मॉड्यूल pandasql कहा जाता है। । Table.groupby ([ 'वर्ष महीना']) [ 'CLIENTCODE'] अद्वितीय()

pandasql allows you to query pandas DataFrames using SQL syntax.[...] pandasql seeks to provide a more familiar way of manipulating and cleaning data for people new to Python or pandas.