Pandas Praxis der E-Commerce-Datenanalyse

Dieser Abschnitt verwendet einen vollständigen E-Commerce-Datenanalysefall, um verschiedene Pandas-Funktionen umfassend für die Datenanalyse anzuwenden.


Fallübersicht

Analysiere Bestelldaten einer E-Commerce-Plattform, einschließlich Umsatztrends, Produktleistung, Kundenanalyse und anderer Dimensionen.

Datenvorbereitung

Beispiel

import pandas as pd
import numpy as np

# Simuliere E-Commerce-Bestelldaten
np.random.seed(42)
n_orders = 1000

orders = pd.DataFrame({
    "Order ID": range(1, n_orders + 1),
    "Customer ID": np.random.randint(100, 200, n_orders),
    "Product ID": np.random.randint(1, 20, n_orders),
    "Order Date": pd.date_range("2024-01-01", periods=n_orders, freq="30min"),
    "Quantity": np.random.randint(1, 5, n_orders),
    "Unit Price": np.random.uniform(10, 500, n_orders).round(2)
})

# Berechne Bestellbetrag
orders["Order Amount"] = (orders["Quantity"] * orders["Unit Price"]).round(2)

print("Überblick über die Bestelldaten:")
print(orders.head(10))
print(f"\nDatenmenge: {len(orders)} Datensätze")

Datenvorverarbeitung

Beispiel

# Datumsmerkmale extrahieren
orders["Date"] = orders["Order Date"].dt.date
orders["Hour"] = orders["Order Date"].dt.hour
orders["Weekday"] = orders["Order Date"].dt.day_name()
orders["Month"] = orders["Order Date"].dt.month

print("Nach dem Hinzufügen von Zeitmerkmalen:")
print(orders.head())
print()

# Prüfung auf fehlende Werte
print("Prüfung auf fehlende Werte:")
print(orders.isnull().sum())

Verkaufsanalyse

Gesamte Verkaufssituation

Beispiel

# Gesamte Verkaufsmetriken
print("=== Gesamte Verkaufssituation ==="\n")
print(f"Bestellungen insgesamt: {len(orders):,}")
print(f"Gesamtumsatz: ¥{orders['Order Amount'].sum():,.2f}")
print(f"Durchschnittlicher Bestellbetrag: ¥{orders['Order Amount'].mean():,.2f}")
print(f"Median-Bestellbetrag: ¥{orders['Order Amount'].median():,.2f}")
print()

# Monatliche Statistik
monthly = orders.groupby("Month").agg({
    "Order ID": "count",
    "Order Amount": "sum",
    "Customer ID": "nunique"
}).rename(columns={
    "Order ID": "Order Count",
    "Order Amount": "Sales Amount",
    "Customer ID": "Customer Count"
})

print("Monatlicher Umsatztrend:")
print(monthly)

Produktanalyse

Beispiel

# Produktverkaufsrangliste
product_sales = orders.groupby("Product ID").agg({
    "Order ID": "count",
    "Quantity": "sum",
    "Order Amount": "sum"
}).rename(columns={
    "Order ID": "Order Count",
    "Quantity": "Sales Volume",
    "Order Amount": "Sales Amount"
}).sort_values("Sales Amount", ascending=False)

print("=== Top 10 Produktverkaufsrangliste ==="\n")
print(product_sales.head(10))
print()

# Meistverkauftes Produkt
print(f"Meistverkauftes Produkt: Produkt {product_sales.index)
print(f"Verkaufsbetrag: ¥{product_sales.iloc)

Kundenanalyse

Beispiel

# Kundenausgabenanalyse
customer_sales = orders.groupby("Customer ID").agg({
    "Order ID": "count",
    "Order Amount": "sum"
}).rename(columns={
    "Order ID": "Order Count",
    "Order Amount": "Total Spending"
})

print("=== Kundenanalyse ==="\n")
print(f"Anzahl aktiver Kunden: {len(customer_sales)}")
print(f"Durchschnittliche Bestellungen pro Kunde: {customer_sales['Order Count'].mean():.1f}")
print(f"Durchschnittliche Ausgaben pro Kunde: ¥{customer_sales['Total Spending'].mean():,.2f}")
print()

# Kundensegmentierung
customer_sales["Segment"] = pd.cut(
    customer_sales["Total Spending"],
    bins=[0, 1000, 5000, 10000, float("inf")],
    labels=["Standard", "Silber", "Gold", "VIP"]
)

print("Statistiken zu Kundensegmenten:")
print(customer_sales["Segment"].value_counts())

Zeitanalyse

Beispiel

# Analyse nach Zeitraum
hourly = orders.groupby("Hour")["Order Amount"].sum()

print("=== Umsatzanalyse nach Zeitraum ==="\n")
print(f"Stunde mit dem höchsten Umsatz: {hourly.idxmax()} Uhr")
print(f"Umsatz in diesem Zeitraum: ¥{hourly.max():,.2f}")
print()

# Analyse nach Wochentag
weekday = orders.groupby("Weekday")["Order Amount"].sum().reindex([
    "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"
])

print("Umsatz nach Wochentag:")
for day, amount in weekday.items():
    print(f"{day}: ¥{amount:,.2f}")

Analysezusammenfassung

Beispiel

print("""
=== Zusammenfassung der E-Commerce-Datenanalyse ===

1. Umsatzübersicht
- Gesamtbestellungen: {0}
- Gesamtumsatz: ¥{1:,.2f}
- Durchschnittlicher Bestellwert: ¥{2:.2f}

2. Produktleistung
- Meistverkauftes Produkt: Produkt {3}
- Die Umsatzverteilung der Produkte ist ungleichmäßig, wobei die Top-Produkte erheblich zum Umsatz beitragen

3. Kundenerkenntnisse
- Aktive Kunden: {4} Personen
- Empfehlung: Priorisierung der Bindung von High-Value-Kunden

4. Zeitmuster
- Verkaufsspitze gegen {5} Uhr
- Marketingstrategien können basierend auf Spitzenzeiten angepasst werden

5. Optimierungsvorschläge
- 1) Lagerbestand und Promotion für meistverkaufte Produkte erhöhen
- 2) Personalisierte Services für High-Value-Kunden bereitstellen
- 3) Kundenservice-Personal während der Spitzenverkaufszeiten aufstocken
"""
.format(
    len(orders),
    orders["Order Amount"].sum(),
    orders["Order Amount"].mean(),
    product_sales.index[0],
    len(customer_sales),
    hourly.idxmax()
))
Andere Erweiterungen