bc100_fgr.py
· 1.1 KiB · Python
Raw
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()
bc_use_percentage= ((BC_END_DATE - TODAY).days / 365)
max_amount = bc_use_percentage * PRICE * 0.25
effective_price = PRICE - (current_amount * (1 / bc_use_percentage))
print("Fahrgastrechte: {:.2f}€ von {:.2f}€ ({:.0f}%)".format(
current_amount,
max_amount,
(current_amount / max_amount) * 100
))
print("Effektiver Preis der BC100 wird statt {:.2f}€ {:.2f}€ sein ({:.0f}% Rabatt)".format(
PRICE,
effective_price,
(1 - (effective_price / PRICE)) * 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 | bc_use_percentage= ((BC_END_DATE - TODAY).days / 365) |
29 | max_amount = bc_use_percentage * PRICE * 0.25 |
30 | |
31 | effective_price = PRICE - (current_amount * (1 / bc_use_percentage)) |
32 | |
33 | print("Fahrgastrechte: {:.2f}€ von {:.2f}€ ({:.0f}%)".format( |
34 | current_amount, |
35 | max_amount, |
36 | (current_amount / max_amount) * 100 |
37 | )) |
38 | |
39 | print("Effektiver Preis der BC100 wird statt {:.2f}€ {:.2f}€ sein ({:.0f}% Rabatt)".format( |
40 | PRICE, |
41 | effective_price, |
42 | (1 - (effective_price / PRICE)) * 100 |
43 | )) |