Dernière activité 1753297680

Révision 86fcc5d79e6a9a6a536e050b1159da1ee995fe04

bc100_fgr.py Brut
1import pandas as pd
2
3from datetime import datetime, date, timedelta
4
5BC_START_DATE = date(2025, 3, 6)
6PRICE = 2988.00
7FILENAME = "Transaktionen.csv"
8
9TODAY = date.today()
10BC_END_DATE = BC_START_DATE + timedelta(days=365)
11
12df = 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
20df = 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
27current_amount = df["Betrag"].sum()
28bc_use_percentage= ((BC_END_DATE - TODAY).days / 365)
29max_amount = bc_use_percentage * PRICE * 0.25
30
31effective_price = PRICE - (current_amount * (1 / bc_use_percentage))
32
33print("Fahrgastrechte: {:.2f}€ von {:.2f}€ ({:.0f}%)".format(
34 current_amount,
35 max_amount,
36 (current_amount / max_amount) * 100
37))
38
39print("Effektiver Preis der BC100 wird statt {:.2f}{:.2f}€ sein ({:.0f}% Rabatt)".format(
40 PRICE,
41 effective_price,
42 (1 - (effective_price / PRICE)) * 100
43))