how to balance the data set with different number of observations
Clustering the data depends on what your objective is

In this case I am assuming you would want to see similarity among customers. 

This would mean that the data should be unique at a customer level. This will help find similarities in some customer attributes.

For ex 
Number of transactions
Gender
Age group
Weekend or weekday txns etc

Hence you would need to first aggregate your data at a user level and create features of interest like the examples above and the try to cluster the customers.