Dieses Projekt zielt darauf ab, Kaufabsichten im E-Commerce vorherzusagen. Mithilfe historischer und Echtzeitdaten sollen Nutzer mit hoher Konvertierungswahrscheinlichkeit identifiziert werden. Ziel ist es, Marketingmaßnahmen zu optimieren, Abwanderung zu reduzieren und Konversionsraten zu steigern. https://archive.ics.uci.edu/dataset/468/online+shoppers+purchasing+intention+dataset
To upload files, please first save the app
import streamlit as st
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
import plotly.express as px
import plotly.graph_objects as go
# Page config
st.set_page_config(page_title="E-Commerce Kaufabsicht Analyse", layout="wide")
# Titel und Einführung
st.title("🛒 E-Commerce Kaufabsicht Analyse")
st.markdown("""
Diese App analysiert und prognostiziert Kaufabsichten von Online-Shop-Besuchern basierend auf
verschiedenen Verhaltensmetriken und Session-Informationen.
""")
# Daten laden
@st.cache_data
def load_data():
# NOTE: Using corsproxy.io because we're in a WASM environment
url = "https://corsproxy.io/?https://archive.ics.uci.edu/ml/machine-learning-databases/00468/online_shoppers_intention.csv"
df = pd.read_csv(url)
return df
def prepare_data(df):
# Kategorische Variablen encodieren
df = pd.get_dummies(df, columns=['Month', 'VisitorType', 'Weekend'])
return df
# Daten laden und vorbereiten
try:
df = load_data()
st.success("✅ Daten erfolgreich geladen!")
except Exception as e:
st.error(f"❌ Fehler beim Laden der Daten: {e}")
st.stop()
# Sidebar für Analyseoptionen
st.sidebar.header("Analyseoptionen")
# Hauptbereich mit Tabs
tab1, tab2, tab3 = st.tabs(["📊 Datenübersicht", "🔍 Explorative Analyse", "🎯 Vorhersagemodell"])
with tab1:
st.header("Datensatzübersicht")
st.write("Anzahl der Datensätze:", df.shape[0])
st.write("Anzahl der Merkmale:", df.shape[1])
# Basic statistics
st.subheader("Statistische Übersicht")
st.dataframe(df.describe())
# Sample data
st.subheader("Beispieldaten")
st.dataframe(df.head())
with tab2:
st.header("Explorative Datenanalyse")
# Conversion Rate nach Besuchertyp
st.subheader("Conversion Rate nach Besuchertyp")
visitor_conv = df.groupby('VisitorType')['Revenue'].mean().reset_index()
fig_visitor = px.bar(visitor_conv, x='VisitorType', y='Revenue',
title='Conversion Rate nach Besuchertyp',
labels={'Revenue': 'Conversion Rate', 'VisitorType': 'Besuchertyp'})
st.plotly_chart(fig_visitor)
# Verteilung der Seitenbesuche
st.subheader("Verteilung der Seitenbesuche")
fig_pages = px.histogram(df, x='PageValues',
title='Verteilung der Seitenwerte',
labels={'PageValues': 'Seitenwert'})
st.plotly_chart(fig_pages)
# Conversion Rate nach Monat
st.subheader("Conversion Rate nach Monat")
month_conv = df.groupby('Month')['Revenue'].mean().reset_index()
fig_month = px.line(month_conv, x='Month', y='Revenue',
title='Conversion Rate im Jahresverlauf',
labels={'Revenue': 'Conversion Rate', 'Month': 'Monat'})
st.plotly_chart(fig_month)
with tab3:
st.header("Vorhersagemodell")
# Model training
if st.button("Modell trainieren"):
with st.spinner("Modell wird trainiert..."):
# Daten vorbereiten
X = prepare_data(df.drop('Revenue', axis=1))
y = df['Revenue']
# Train-Test-Split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Modell trainieren
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# Modellergebnisse
train_score = model.score(X_train, y_train)
test_score = model.score(X_test, y_test)
# Feature Importance
feature_importance = pd.DataFrame({
'feature': X.columns,
'importance': model.feature_importances_
}).sort_values('importance', ascending=False)
# Ergebnisse anzeigen
col1, col2 = st.columns(2)
with col1:
st.metric("Training Score", f"{train_score:.2%}")
with col2:
st.metric("Test Score", f"{test_score:.2%}")
# Feature Importance Plot
st.subheader("Feature Importance")
fig_importance = px.bar(feature_importance.head(10),
x='importance', y='feature',
orientation='h',
title='Top 10 wichtigste Merkmale')
st.plotly_chart(fig_importance)
# Footer
st.markdown("---")
st.markdown("""
**Über dieses Projekt:**
- Datenquelle: UCI Machine Learning Repository
- Features: Browser-Informationen, Seitenaufrufe, Zeitmetriken, etc.
- Ziel: Vorhersage der Kaufwahrscheinlichkeit
""")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?