Python · Datengenerierung
Code
import pandas as pd import numpy as np from datetime import datetime, timedelta np.random.seed(42) # --- Kundenstruktur mit realistischen Eigenschaften --- kunden = [] for i in range(43): branche = np.random.choice(['Automotive', 'FMCG', 'Baustoffe', 'Pharma', 'Chemie', 'Lebensmittel']) basis_standzeit = np.random.normal(45, 18) rampen_count = np.random.choice([1,2,3,4,6,8], p=[0.15,0.25,0.25,0.2,0.1,0.05]) kunden.append({ 'kunde_id': f'K-{i+1:03d}', 'branche': branche, 'basis_standzeit_min': max(15, basis_standzeit), 'rampen': rampen_count, 'hat_zeitfenster': np.random.random() > 0.4, 'wochenend_zuschlag': np.random.uniform(1.0, 1.5) }) # --- 18.000 Anfahrten generieren --- records = [] start_date = datetime(2024, 1, 1) for _ in range(18000): kunde = np.random.choice(kunden) tag_offset = np.random.randint(0, 365) ankunft = start_date + timedelta(days=tag_offset, hours=np.random.normal(9, 3)) wochentag = ankunft.weekday() standzeit = kunde['basis_standzeit_min'] if wochentag == 0: standzeit *= 1.3 if wochentag == 4: standzeit *= 1.15 if 11 <= ankunft.hour <= 13: standzeit *= 1.25 standzeit += np.random.normal(0, 12) standzeit = max(10, standzeit) records.append({ 'datum': ankunft.date(), 'ankunft_zeit': ankunft.strftime('%H:%M'), 'wochentag': wochentag, 'kunde_id': kunde['kunde_id'], 'branche': kunde['branche'], 'rampen': kunde['rampen'], 'hat_zeitfenster': kunde['hat_zeitfenster'], 'ladungstyp': np.random.choice(['Komplett','Teilladung','Stückgut']), 'gewicht_t': round(np.random.uniform(2,24),1), 'standzeit_min': round(standzeit,1) }) df = pd.DataFrame(records) print(f"Dataset: {len(df)} Anfahrten, {df['kunde_id'].nunique()} Kunden")