What I spend money on in 2020 — Looking at my transaction records

A data scientists yearly review

Martin Thoma
7 min readDec 29, 2020


Photo by Micheile Henderson on Unsplash

Many banks allow you to get a CSV dump of your transactions. I’ve downloaded my transaction data for this year and I will walk you through my analysis. I will only look at what I spend money on. I will not look at my income and I will not write about my savings plan/investments.

All code can be found on Github (link), in case you’re interested in Streamlit / Pydantic.

About me: The Data Generating Process

Photo by Ruthson Zimmerman on Unsplash

I’m Martin, an IT Consultant working in Munich (Germany). I’m 30 years old, in a long-term relationship. In my leisure time, I like to go bouldering (climbing), programming/data analysis, and playing board games. And blogging, of course. At the end of 2019, I’ve decided that I will thoroughly track my spending in 2020. I wrote down every single receipt and thus tracked what I spend money on. For this article, I will only have a look at what my bank tracked. I tried only to pay digitally this year, but some things are cash-only in Germany.

I live in a shared apartment and my girlfriend visits me a lot, meaning that some of the expenses are divided by multiple people (e.g. a new dishwasher) and for others, I pay more than I would for my own (e.g. food).

One reason why I live in a shared apartment is to save money to buy a house at some time. For this reason, I also try not to spend too much money on other stuff as well.

The transaction data export of my bank contains the following columns:

  • Date when the transaction was executed
  • Payee: Who received the money?
  • Transaction Type: e.g. Direct Debit, Master Card / Maestro Payment, MoneyBeam, Income, Giro Transfer
  • Payment reference: A message which helps me to understand what this is about.
  • Category: My bank has a fixed set of categories such as “Leisure & Entertainment” or “Transport & Car”. It typically gets the category correct automatically, but in…



Martin Thoma

I’m a Software Engineer with over 10 years of Python experience (Backend/ML/AI). Support me via https://martinthoma.medium.com/membership