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"