Skip to content Skip to sidebar Skip to footer

Pandas Count Unique Occurrences By Month

I have some monthly data that I'm trying to summarize using Pandas and I need to count the number of unique entries that occur each month. Here's some sample code that shows what

Solution 1:

The filling is optional.

In [40]: testFrame.apply(Series.value_counts).fillna(0)
Out[40]: 
                      JAN  FEB  MAR  APR
No Data                 1    0    2    0
Purchased Competitor    1    0    1    2
purchased Prod          1    3    0    1

Here is a neat apply trick. I'll create a function and print out what is incoming (and maybe even debug in their). Then easy to see what's happening.

In [20]: def f(x):
   ....:     print(x)
   ....:     return x.value_counts()
   ....: 

In [21]: testFrame.apply(f)
A          purchased Prod
B                 No Data
C    Purchased Competitor
Name: JAN, dtype: object
A          purchased Prod
B                 No Data
C    Purchased Competitor
Name: JAN, dtype: object
A    purchased Prod
B    purchased Prod
C    purchased Prod
Name: FEB, dtype: object
A                 No Data
B                 No Data
C    Purchased Competitor
Name: MAR, dtype: object
A    Purchased Competitor
B          purchased Prod
C    Purchased Competitor
Name: APR, dtype: object
Out[21]: 
                      JAN  FEB  MAR  APR
No Data                 1  NaN    2  NaN
Purchased Competitor    1  NaN    1    2
purchased Prod          1    3  NaN    1

[3 rows x 4 columns]

So its doing this operation then concatting them together (with the correct labels)

In [22]: testFrame.iloc[0].value_counts()
Out[22]: 
purchased Prod          2
Purchased Competitor    1
No Data                 1
dtype: int64

Solution 2:

li = [testFrame.ix[:,i].value_counts() for i in range(len(mnths))]
frame = pd.DataFrame(li, index=mnths)

frame.fillna(value=0).swapaxes(0,1)
Out[42]: 
                      JAN  FEB  MAR  APR
No Data                 1    0    2    0
Purchased Competitor    1    0    1    2
purchased Prod          1    3    0    1

[3 rows x 4 columns]

Post a Comment for "Pandas Count Unique Occurrences By Month"