# Datenexploration

Die Datenexploration ist ein entscheidender Schritt im Datenanalyseprozess, der die Grundlage für fundierte Entscheidungen und die Entwicklung erfolgreicher Modelle bildet. Die Hauptkomponenten dieses beispielhaften Prozesses sind mit Codebeispielen im Folgenden zu finden.

* **Statistische Kennzahlen:** Statistische Kennzahlen wie der Durchschnitt, Median und die Standardabweichung bieten eine grundlegende Zusammenfassung der Datenverteilung. Sie ermöglichen einen ersten Überblick über die zentrale Tendenz und die Streuung der Daten.

  Im folgenden Beispiel wird der Durchschnitt, der Median und die Standardabweichung für eine beispielhafte Datenserie berechnet.

  ```python
  import numpy as np

  data = [10, 20, 30, 40, 50]
  # Durchschnitt berechnen
  mean = np.mean(data)
  # Median berechnen
  median = np.median(data)
  # Standardabweichung berechnen
  std_dev = np.std(data)
  ```
* **Datenvisualisierung:** Die Verwendung von visuellen Darstellungen wie Histogrammen, Box-Plots und Scatterplots hilft bei der Identifizierung von Mustern, Ausreißern und Verteilungen. Diese visuellen Elemente erleichtern das Verständnis der Datenstruktur und ermöglichen das Erkennen potenzieller Zusammenhänge.

  Im Folgenden werden die Daten mithilfe der Python-Bibliothek matplotlib dargestellt.

  ```python
  import matplotlib.pyplot as plt
  from sklearn.datasets import load_iris

  # Laden des Iris-Datensatzes
  iris = load_iris()
  data = iris.data

  # Auswahl eines Features (z. B. das erste Feature: 'Sepal Length (cm)')
  feature_index = 0
  feature_name = iris.feature_names[feature_index]

  # Erstellen des Histogramms für das ausgewählte Feature
  plt.figure(figsize=(8, 6))
  plt.hist(data[:, feature_index], bins=10)
  plt.title(f'Histogramm von {feature_name}')
  plt.xlabel('Werte')
  plt.ylabel('Häufigkeit')
  plt.show()
  ```
* **Korrelationsanalyse:** Die Untersuchung von Korrelationen zwischen verschiedenen Merkmalen offenbart potenzielle Abhängigkeiten und Beziehungen. Dies ist entscheidend, um zu verstehen, wie sich verschiedene Variablen in den Daten verhalten.

  In folgendem Code wird die Korrelation zwischen den Daten aufgezeigt.

  ```python
  import pandas as pd
  from sklearn.datasets import load_iris

  # Iris-Datensatz laden
  iris = load_iris()

  # Den Iris-Datensatz in ein pandas DataFrame umwandeln
  data = pd.DataFrame(data=iris.data, columns=iris.feature_names)

  # Berechnung der Korrelationsmatrix des DataFrames
  correlation_matrix = data.corr()
  ```
* **Mustererkennung:** Die Suche nach Mustern, Saisonalitäten, Clustern oder Anomalien trägt zur Erkenntnisgewinnung bei. Dieser Schritt ermöglicht die Identifizierung von wiederkehrenden Trends oder ungewöhnlichen Ereignissen in den Daten. Folgend wird eine Möglichkeit dargestellt, wie Cluster mit dem KMeans Algorithmus aus einem Datensatz herausgearbeitet werden können.

  ```python
  import pandas as pd
  from sklearn.datasets import load_iris
  from sklearn.cluster import KMeans

  # Laden des Iris-Datensatzes
  iris = load_iris()
  iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)

  # Initialisierung des K-Means-Algorithmus mit der Anzahl der Cluster
  kmeans = KMeans(n_clusters=3, random_state=42)

  # Training des K-Means-Algorithmus mit den bereitgestellten Daten
  kmeans.fit(iris_df)

  # Zuordnung der Datenpunkte zu den Clustern
  clusters = kmeans.predict(iris_df)
  ```
* **Hypothesenbildung:** Die Formulierung von Hypothesen über die Daten legt den Grundstein für spätere Analysen und Experimente. Dieser explorative Ansatz fördert ein tiefes Verständnis der zugrundeliegenden Strukturen und Zusammenhänge.

  Hier ist beispielhaft die Formulierung einer Hypothese über den Zusammenhang zwischen Luftqualitätsindikatoren und Asthmafällen: "An Tagen mit hoher Luftverschmutzung steigt die Anzahl der Asthmafälle."
* **Fehler- und Inkonsistenzprüfung:** Die systematische Überprüfung auf Fehler, fehlende Werte oder Inkonsistenzen gewährleistet die Qualität der Daten. Eine sorgfältige Bereinigung von Datenfehlern ist entscheidend, um zuverlässige Analysen durchzuführen.

  Der nachstehende Code demonstriert, die Berechnung der Anzahl fehlender Werte in jeder Spalte eines DataFrames.

  ```python
  import pandas as pd

  data = pd.DataFrame(...)

  # Berechnung der Anzahl der fehlenden Werte (NaN, None) in jeder Spalte des DataFrames
  missing_values = data.isnull().sum()
  ```
* **Fachwissen einbeziehen:** Die Zusammenarbeit mit Domänenexperten ist vorteilhaft, um die Daten im richtigen Kontext zu interpretieren. Das Fachwissen hilft dabei, potenzielle Einflussfaktoren zu identifizieren und die Ergebnisse besser zu verstehen. Beispielsweise ist die Zusammenarbeit mit einem Umweltwissenschaftler, um Sensordaten zur Luftqualität zu interpretieren und den potenziellen Einfluss auf Asthmafälle zu verstehen, vorteilhaft.

Die Datenexploration ist ein iterativer und dynamischer Prozess, der die Grundlage für die Auswahl geeigneter Merkmale, die Modellentwicklung und die erfolgreiche Anwendung von ML-Algorithmen bildet. Ein gründliches Datenverständnis ist der Schlüssel zu effektiven Entscheidungen und präzisen Vorhersagen.

Mehr erfahren: [IBM/What is EDA?](https://www.ibm.com/topics/exploratory-data-analysis) [Kaggle/Comprehensive data exploration with Python](https://www.kaggle.com/code/pmarcelino/comprehensive-data-exploration-with-python)
