anas83alrajeh commited on
Commit
ba08136
·
verified ·
1 Parent(s): 310d1ba

Update datenbereinigung.py

Browse files
Files changed (1) hide show
  1. datenbereinigung.py +39 -21
datenbereinigung.py CHANGED
@@ -1,28 +1,46 @@
1
- # -*- coding: utf-8 -*-
2
- """
3
- Datenbereinigung für neue Transaktionen
4
- """
5
  import pandas as pd
6
- from sklearn.preprocessing import OneHotEncoder, StandardScaler
7
 
8
- def clean_data(df):
9
- # Fehlende Werte entfernen
10
- df = df.dropna()
 
 
11
 
12
- # Beispiel: Negative Beträge entfernen
13
- df = df[df['amt'] > 0]
14
 
15
- # Kategoriale Merkmale One-Hot encodieren
16
- categorical_cols = ['gender', 'category', 'state', 'job']
17
- encoder = OneHotEncoder(sparse_output=False, handle_unknown='ignore')
18
- encoded = encoder.fit_transform(df[categorical_cols])
19
- encoded_df = pd.DataFrame(encoded, columns=encoder.get_feature_names_out(categorical_cols))
20
- df = df.drop(categorical_cols, axis=1)
21
- df = pd.concat([df.reset_index(drop=True), encoded_df.reset_index(drop=True)], axis=1)
 
22
 
23
- # Standardisierung für Modell
24
- scaler = StandardScaler()
25
- df_scaled = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
 
 
 
 
 
26
 
27
- return df_scaled
 
 
 
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import pandas as pd
2
+ import numpy as np
3
 
4
+ def daten_vorbereiten(df: pd.DataFrame) -> pd.DataFrame:
5
+ """
6
+ Führt grundlegende Datenbereinigung und Feature-Vorbereitung durch.
7
+ Diese Funktion wird automatisch vor der Modellvorhersage aufgerufen.
8
+ """
9
 
10
+ # 1️⃣ Leere Spalten entfernen
11
+ df = df.dropna(axis=1, how="all")
12
 
13
+ # 2️⃣ Fehlende Werte mit sinnvollen Standardwerten ersetzen
14
+ df = df.fillna({
15
+ "gender": "Unknown",
16
+ "state": "Unknown",
17
+ "job": "Unbekannt",
18
+ "category": "Sonstiges",
19
+ "amt": 0
20
+ })
21
 
22
+ # 3️⃣ Datumsformat bereinigen (falls vorhanden)
23
+ if "trans_date_trans_time" in df.columns:
24
+ df["trans_date_trans_time"] = pd.to_datetime(
25
+ df["trans_date_trans_time"], errors="coerce"
26
+ )
27
+ df["trans_hour"] = df["trans_date_trans_time"].dt.hour
28
+ df["trans_day"] = df["trans_date_trans_time"].dt.day
29
+ df["trans_month"] = df["trans_date_trans_time"].dt.month
30
 
31
+ # 4️⃣ Kategorische Spalten in Kleinbuchstaben umwandeln
32
+ for col in ["gender", "state", "job", "category"]:
33
+ if col in df.columns:
34
+ df[col] = df[col].astype(str).str.lower()
35
 
36
+ # 5️⃣ Nur numerische und sinnvolle Merkmale behalten
37
+ erlaubte_spalten = [
38
+ "amt", "trans_hour", "trans_day", "trans_month", "gender",
39
+ "state", "job", "category"
40
+ ]
41
+ df = df[[c for c in erlaubte_spalten if c in df.columns]]
42
+
43
+ # 6️⃣ One-Hot-Encoding für Kategorien
44
+ df_encoded = pd.get_dummies(df, columns=["gender", "state", "job", "category"], drop_first=True)
45
+
46
+ return df_encoded