bc100_fgr.py
· 873 B · Python
Orginalformat
import pandas as pd
from datetime import datetime, date, timedelta
BC_START_DATE = date(2025, 3, 6)
PRICE = 2988.00
FILENAME = "Transaktionen.csv"
TODAY = date.today()
BC_END_DATE = BC_START_DATE + timedelta(days=365)
df = pd.read_csv(
FILENAME,
converters={
"Betrag": lambda x: float(x.replace(",", ".")),
"Buchungsdatum": lambda x: datetime.strptime(x, "%d.%m.%Y").date()
}
)
df = df[
(df["Zahlungsempfänger"] == "Deutsche Bahn") &
(df["Verwendungszweck"].str.contains("Fahrgastrechtsfall", case=False)) &
(df["Betrag"] == 10) &
(df["Buchungsdatum"] >= BC_START_DATE)
]
current_amount = df["Betrag"].sum()
max_amount = round(((BC_END_DATE - TODAY).days / 365) * PRICE * 0.25, 2)
print("{:.2f} € von {:.2f} € ({}%)".format(
df["Betrag"].sum(),
max_amount,
round((current_amount / max_amount) * 100)
))
| 1 | import pandas as pd |
| 2 | |
| 3 | from datetime import datetime, date, timedelta |
| 4 | |
| 5 | BC_START_DATE = date(2025, 3, 6) |
| 6 | PRICE = 2988.00 |
| 7 | FILENAME = "Transaktionen.csv" |
| 8 | |
| 9 | TODAY = date.today() |
| 10 | BC_END_DATE = BC_START_DATE + timedelta(days=365) |
| 11 | |
| 12 | df = pd.read_csv( |
| 13 | FILENAME, |
| 14 | converters={ |
| 15 | "Betrag": lambda x: float(x.replace(",", ".")), |
| 16 | "Buchungsdatum": lambda x: datetime.strptime(x, "%d.%m.%Y").date() |
| 17 | } |
| 18 | ) |
| 19 | |
| 20 | df = df[ |
| 21 | (df["Zahlungsempfänger"] == "Deutsche Bahn") & |
| 22 | (df["Verwendungszweck"].str.contains("Fahrgastrechtsfall", case=False)) & |
| 23 | (df["Betrag"] == 10) & |
| 24 | (df["Buchungsdatum"] >= BC_START_DATE) |
| 25 | ] |
| 26 | |
| 27 | current_amount = df["Betrag"].sum() |
| 28 | max_amount = round(((BC_END_DATE - TODAY).days / 365) * PRICE * 0.25, 2) |
| 29 | |
| 30 | print("{:.2f} € von {:.2f} € ({}%)".format( |
| 31 | df["Betrag"].sum(), |
| 32 | max_amount, |
| 33 | round((current_amount / max_amount) * 100) |
| 34 | )) |
| 35 |