File: //opt/af/src/components/data_loader.py
import streamlit as st
import pandas as pd
import os
from dotenv import load_dotenv
def load_local_data():
"""
Lädt die lokalen Daten aus dem konfigurierten Verzeichnis.
Returns:
dict: Ein Dictionary mit den geladenen Datenframes
"""
load_dotenv()
data_dir = os.getenv('DATA_DIR', 'data')
# Erstelle das Verzeichnis, falls es nicht existiert
os.makedirs(data_dir, exist_ok=True)
# Prüfe, ob das Verzeichnis leer ist
if not os.listdir(data_dir):
st.warning(f"Das Verzeichnis {data_dir} ist leer. Bitte laden Sie zuerst die Daten vom SFTP-Server herunter.")
return None
# Lade alle CSV-Dateien aus dem Verzeichnis
dataframes = {}
for file in os.listdir(data_dir):
if file.endswith('.csv'):
file_path = os.path.join(data_dir, file)
try:
df = pd.read_csv(file_path)
dataframes[file] = df
st.success(f"Datei {file} erfolgreich geladen: {len(df)} Zeilen, {len(df.columns)} Spalten")
except Exception as e:
st.error(f"Fehler beim Laden der Datei {file}: {str(e)}")
return dataframes
def render_data_loader():
"""
Rendert die Streamlit-Komponente zum Laden der lokalen Daten.
"""
st.header("Daten-Loader")
# Lade die lokalen Daten
dataframes = load_local_data()
if dataframes:
# Zeige eine Übersicht der geladenen Daten
st.subheader("Geladene Daten")
for filename, df in dataframes.items():
with st.expander(f"{filename} ({len(df)} Zeilen, {len(df.columns)} Spalten)"):
st.dataframe(df.head())
# Zeige Statistiken an
st.subheader("Statistiken")
st.write(f"Anzahl der Zeilen: {len(df)}")
st.write(f"Anzahl der Spalten: {len(df.columns)}")
# Zeige Spalteninformationen an
st.subheader("Spalteninformationen")
st.write(df.dtypes)
# Zeige Zusammenfassung an
st.subheader("Zusammenfassung")
st.write(df.describe())