I use an excel spreadsheet I got off the internet (can't upload sheet for some reason).
This is the most effective setup I've found yet. You input transactions that convert to data. The data is recorded on a second sheet under general purchase categories like food, automotive, entertainment, ect. Within those general categories are several more defined categories. So for example within the general category of food there's dining out, groceries, ect. Every time you input a transaction, you click a drop down menu to designate a category. This is how a transaction is converted to a category.
If every transaction is carefully recorded, you'll end up with percentages in each category. The data can be manipulated by time range also. So for example if I wanted to know how much fuel I spend from December to January, I just select the date range and new data appears. It shows percentages and raw numbers.
The
PROBLEM with this system is it doesn't scale well. You need to put in every single transaction. You also need to keep track of all transactions before they go into the system. I accomplish this by paying for everything on my debit card. If you use cash you don't have an electronic record you can reference later.
My ideal system would be something, which records and categorizes purchases automatically. I've yet to see this though.