Programmierung und Data-Science - Exam.pdf

Programmierung und Data-Science - Exam
Aufgabe 1) Ein Chemieunternehmen sammelt Daten zu den Reaktionszeiten (in Sekunden) einer chemischen Reaktion unter bestimmten Bedingungen. Die folgenden Messwerte wurden aufgenommen: 12, 15, 14, 16, 13, 15, 14, 11, 13, 14.Verwende die Methoden der deskriptiven Statistik und Wahrscheinlichkeitsrechnung, um die Daten zu analysieren. Angenommen, das Unternehmen möchte die Wahrscheinlichkeit abschätz...

© StudySmarter 2024, all rights reserved.

Aufgabe 1)

Ein Chemieunternehmen sammelt Daten zu den Reaktionszeiten (in Sekunden) einer chemischen Reaktion unter bestimmten Bedingungen. Die folgenden Messwerte wurden aufgenommen: 12, 15, 14, 16, 13, 15, 14, 11, 13, 14.Verwende die Methoden der deskriptiven Statistik und Wahrscheinlichkeitsrechnung, um die Daten zu analysieren. Angenommen, das Unternehmen möchte die Wahrscheinlichkeit abschätzen, dass die Reaktionszeit unter 14 Sekunden liegt, wenn sie eine zusätzliche Messung durchführen.

a)

  • Berechne das arithmetische Mittel der Reaktionszeiten.
  • Nutze dazu die Formel:
    \[ \bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i \]

Lösung:

Um das arithmetische Mittel der Reaktionszeiten zu berechnen, folgen wir den gegebenen Anweisungen.

  • Die Formel für das arithmetische Mittel lautet
     \[ \bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i \]  

Wir werden die Formel Schritt für Schritt anwenden:

  • Identifiziere die Anzahl der Messwerte ( n ) und ihre Summe (\sum_{i=1}^{n} x_i).

Die gegebenen Messwerte sind: 12, 15, 14, 16, 13, 15, 14, 11, 13, 14

  • Zuerst berechnen wir die Summe der Messwerte: 12 + 15 + 14 + 16 + 13 + 15 + 14 + 11 + 13 + 14 = 137
  • Die Anzahl der Messwerte ist n = 10
  • Setze die Werte in die Formel für das arithmetische Mittel ein:
     \[ \bar{x} = \frac{1}{10} \sum_{i=1}^{n} x_i = \frac{137}{10} \]  
    Das arithmetische Mittel der Reaktionszeiten beträgt also 13,7 Sekunden.

Das berechnete Mittel sagt uns, dass die durchschnittliche Reaktionszeit unter den gegebenen Bedingungen 13,7 Sekunden beträgt.

b)

  • Bestimme den Median der Reaktionszeiten aus der gegebenen Datenmenge.
  • Zeige jeden Schritt der Berechnung.

Lösung:

Um den Median der Reaktionszeiten zu bestimmen, müssen die Daten zunächst in aufsteigender Reihenfolge sortiert werden. Dann können wir den Median, der die Mitte der Verteilung darstellt, bestimmen.

Folge diesen Schritten:

  • Sortiere die Daten in aufsteigender Reihenfolge.
  • Bestimme den Median basierend auf der Anzahl der Datenpunkte.

Die gegebenen Messwerte sind: 12, 15, 14, 16, 13, 15, 14, 11, 13, 14

  • Sortierte Daten: 11, 12, 13, 13, 14, 14, 14, 15, 15, 16

Da wir 10 Datenpunkte haben (eine gerade Anzahl), ist der Median der Durchschnitt der beiden mittleren Werte.

  • Die beiden mittleren Werte sind der 5. und der 6. Wert in der sortierten Liste: 14 und 14

Der Median wird durch den Durchschnitt dieser beiden Werte berechnet:

  • \[ \text{Median} = \frac{14 + 14}{2} = 14 \]

Der Median der Reaktionszeiten beträgt also 14 Sekunden. Das bedeutet, dass die Hälfte der Messwerte unter oder gleich 14 Sekunden und die andere Hälfte über oder gleich 14 Sekunden liegt.

c)

  • Berechne die Standardabweichung der Reaktionszeiten.
  • Nehme dazu an, dass die gegebene Datenmenge eine Stichprobe ist, und verwende die Formel:
    \[ s = \sqrt{\frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})^2} \]

Lösung:

Um die Standardabweichung der Reaktionszeiten zu berechnen, folgen wir den gegebenen Schritten und verwenden die Formel für die Standardabweichung einer Stichprobe.

Die Formel lautet:

 \[ s = \sqrt{\frac{1}{n-1} \sum_{i=1}^{n} ( x_i - \bar{x} )^2} \] 

Die gegebenen Messwerte sind: 12, 15, 14, 16, 13, 15, 14, 11, 13, 14

Vorgehen:

  1. Berechne das arithmetische Mittel \(\bar{x} \). Wir haben dies bereits als 13,7 Sekunden berechnet.
  2. Finde die Abweichung jedes Wertes von \(\bar{x} \) und quadriere diese Abweichungen.
  3. Summiere die quadrierten Abweichungen.
  4. Teile die Summe durch \(n-1\), wobei \(n\) die Anzahl der Datenpunkte ist.
  5. Ziehe die Quadratwurzel aus dem Ergebnis.

Die quadrierten Abweichungen der Datenwerte von ihrem Mittelwert sind:

  • \((12 - 13.7)^2 = 2.89\)
  • \((15 - 13.7)^2 = 1.69\)
  • \((14 - 13.7)^2 = 0.09\)
  • \((16 - 13.7)^2 = 5.29\)
  • \((13 - 13.7)^2 = 0.49\)
  • \((15 - 13.7)^2 = 1.69\)
  • \((14 - 13.7)^2 = 0.09\)
  • \((11 - 13.7)^2 = 7.29\)
  • \((13 - 13.7)^2 = 0.49\)
  • \((14 - 13.7)^2 = 0.09\)

Summiere die quadrierten Abweichungen:

  • 2.89 + 1.69 + 0.09 + 5.29 + 0.49 + 1.69 + 0.09 + 7.29 + 0.49 + 0.09 = 19.1

Teile diese Summe durch \(n-1\): Da \(n = 10\)

  • \[ \frac{19.1}{10-1} = \frac{19.1}{9} \approx 2.1222 \]

Ziehe die Quadratwurzel:

  • \[ s = \sqrt{2.1222} \approx 1.456 \]

Die Standardabweichung der Reaktionszeiten beträgt also ungefähr 1,456 Sekunden. Dies bedeutet, dass die Reaktionszeiten durchschnittlich um 1,456 Sekunden um den Mittelwert von 13,7 Sekunden streuen.

d)

  • Schätze die Wahrscheinlichkeit, dass die Reaktionszeit unter 14 Sekunden liegt.
  • Verwende die Formel:
    \[ P(A) = \frac{|A|}{|\Omega|} \]

Lösung:

Um die Wahrscheinlichkeit zu schätzen, dass die Reaktionszeit unter 14 Sekunden liegt, wenn das Unternehmen eine zusätzliche Messung durchführt, wenden wir die Wahrscheinlichkeitsformel an:

\[ P(A) = \frac{|A|}{|\Omega|} \]

Hierbei ist:

  • \( |A| \) = Anzahl der günstigen Ereignisse (Messungen mit Reaktionszeit unter 14 Sekunden)
  • \( |\Omega| \) = Gesamtanzahl der Ereignisse (Gesamtanzahl der Messungen)

Die gegebenen Messwerte sind: 12, 15, 14, 16, 13, 15, 14, 11, 13, 14.

Schritt-für-Schritt-Anleitung:

  1. Zähle die Anzahl der Messwerte, die unter 14 Sekunden liegen.
  2. Bestimme die Gesamtanzahl der Messwerte.
  3. Verwende die Wahrscheinlichkeitsformel zur Berechnung der Wahrscheinlichkeit.

1. Die Messungen unter 14 Sekunden sind: 12, 13, 11, 13 (also 4 Messungen)

2. Die Gesamtanzahl der Messwerte beträgt: 10

3. Die Wahrscheinlichkeit \(P(A)\) ist:

\[ P(A) = \frac{|A|}{|\Omega|} = \frac{4}{10} = 0.4 \]

Die Wahrscheinlichkeit, dass die Reaktionszeit unter 14 Sekunden liegt, beträgt also 0,4 oder 40%.

Aufgabe 2)

In Deiner Rolle als Data-Scientist an der TU München erhältst Du einen Datensatz, der chemische Experimentergebnisse enthält. Bevor Du mit der Auswertung beginnen kannst, musst Du den Datensatz aufbereiten und bereinigen. Die Datensätze sind in einem .csv-Format und enthalten Informationen über verschiedene Messungen, wobei einige Datenpunkte fehlen oder falsch sind. Verwende für Deine Bearbeitungen Python und die Skript-basierten Werkzeuge pandas sowie NumPy.

a)

Lade den Datensatz in ein pandas DataFrame und überprüfe ihn auf Duplikate. Entferne alle Duplikate und berichte die Anzahl der gelöschten Zeilen. Verwende den folgenden Python-Code als Grundlage:

 import pandas as pd import numpy as np df = pd.read_csv('chemische_experimentergebnisse.csv') # Deinen Code hier 

Lösung:

Aufgabe: Datenbereinigung

In Deiner Rolle als Data-Scientist an der TU München erhältst Du einen Datensatz, der chemische Experimentergebnisse enthält. Bevor Du mit der Auswertung beginnen kannst, musst Du den Datensatz aufbereiten und bereinigen. Die Datensätze sind in einem .csv-Format und enthalten Informationen über verschiedene Messungen, wobei einige Datenpunkte fehlen oder falsch sind. Verwende für Deine Bearbeitungen Python und die Skript-basierten Werkzeuge pandas sowie NumPy.

Teilaufgabe

Lade den Datensatz in ein pandas DataFrame und überprüfe ihn auf Duplikate. Entferne alle Duplikate und berichte die Anzahl der gelöschten Zeilen. Verwende den folgenden Python-Code als Grundlage:

 import pandas as pd import numpy as np df = pd.read_csv('chemische_experimentergebnisse.csv') # Deinen Code hier 

Schritt-für-Schritt-Lösung

  1. Importiere die notwendigen Bibliotheken: Pandas und NumPy
  2. Lade den Datensatz: Verwende pd.read_csv() um den Datensatz in ein DataFrame zu laden.
  3. Überprüfe auf Duplikate: Verwende die Methode df.duplicated() um nach Duplikaten zu suchen.
  4. Entferne Duplikate: Nutze df.drop_duplicates() um die Duplikate zu entfernen.
  5. Berichte die Anzahl der gelöschten Zeilen: Berechne die Differenz der Zeilenanzahl vor und nach dem Entfernen der Duplikate.

Hier ist der vollständige Python-Code:

 import pandas as pd import numpy as np df = pd.read_csv('chemische_experimentergebnisse.csv') # Anzahl der Zeilen vor dem Entfernen von Duplikaten initial_row_count = len(df) # Entferne Duplikate df_cleaned = df.drop_duplicates() # Anzahl der Zeilen nach dem Entfernen von Duplikaten final_row_count = len(df_cleaned) # Anzahl der gelöschten Zeilen removed_rows = initial_row_count - final_row_count # Reporte die Anzahl der gelöschten Zeilen print(f'Anzahl der gelöschten Duplikate: {removed_rows}') 

Dieser Code hilft Dir dabei, den Datensatz zu bereinigen, indem Du die Duplikate entfernst und die Anzahl der entfernten Duplikate berichtest.

b)

Im Datensatz fehlen einige Werte in der Spalte 'Messwert'. Verwende die Methode der Imputation (Ersatz durch den Mittelwert der Spalte), um diese fehlenden Werte zu füllen. Zeige vor und nach der Imputation die Anzahl der fehlenden Werte in der Spalte 'Messwert' an. Nutze den Python-Code aus dem vorherigen Teil weiter und füge die folgenden Schritte hinzu:

 # Überprüfe fehlende Werte vor der Imputation print(df['Messwert'].isnull().sum()) # Deine Imputationslogik hier # Überprüfe fehlende Werte nach der Imputation print(df['Messwert'].isnull().sum()) 

Lösung:

Aufgabe: Datenbereinigung mittels Imputation

In Deiner Rolle als Data-Scientist an der TU München erhältst Du einen Datensatz, der chemische Experimentergebnisse enthält. Bevor Du mit der Auswertung beginnen kannst, musst Du den Datensatz aufbereiten und bereinigen. Die Datensätze sind in einem .csv-Format und enthalten Informationen über verschiedene Messungen, wobei einige Datenpunkte fehlen oder falsch sind. Verwende für Deine Bearbeitungen Python und die Skript-basierten Werkzeuge pandas sowie NumPy.

Teilaufgabe

Im Datensatz fehlen einige Werte in der Spalte 'Messwert'. Verwende die Methode der Imputation (Ersatz durch den Mittelwert der Spalte), um diese fehlenden Werte zu füllen. Zeige vor und nach der Imputation die Anzahl der fehlenden Werte in der Spalte 'Messwert' an. Nutze den Python-Code aus dem vorherigen Teil weiter und füge die folgenden Schritte hinzu:

 # Überprüfe fehlende Werte vor der Imputation print(df['Messwert'].isnull().sum()) # Deine Imputationslogik hier # Überprüfe fehlende Werte nach der Imputation print(df['Messwert'].isnull().sum()) 

Schritt-für-Schritt-Lösung

  1. Importiere die notwendigen Bibliotheken: Pandas und NumPy (bereits geschehen).
  2. Überprüfe fehlende Werte: Verwende die Methode isnull().sum() um die Anzahl fehlender Werte in der Spalte 'Messwert' zu überprüfen.
  3. Imputation der fehlenden Werte: Ersetze die fehlenden Werte durch den Mittelwert der Spalte 'Messwert' mit der Methode fillna().
  4. Überprüfe fehlende Werte nach der Imputation: Bestätige, dass alle fehlenden Werte gefüllt wurden, indem Du erneut isnull().sum() anwendest.

Hier ist der vollständige Python-Code:

 import pandas as pd import numpy as np df = pd.read_csv('chemische_experimentergebnisse.csv') # Anzahl der Zeilen vor dem Entfernen von Duplikaten initial_row_count = len(df) # Entferne Duplikate df_cleaned = df.drop_duplicates() # Anzahl der Zeilen nach dem Entfernen von Duplikaten final_row_count = len(df_cleaned) # Anzahl der gelöschten Zeilen removed_rows = initial_row_count - final_row_count # Reporte die Anzahl der gelöschten Zeilen print(f'Anzahl der gelöschten Duplikate: {removed_rows}') # Überprüfe fehlende Werte vor der Imputation print('Fehlende Werte vor der Imputation:', df_cleaned['Messwert'].isnull().sum()) # Imputation df_cleaned['Messwert'].fillna(df_cleaned['Messwert'].mean(), inplace=True) # Überprüfe fehlende Werte nach der Imputation print('Fehlende Werte nach der Imputation:', df_cleaned['Messwert'].isnull().sum()) 

Dieser Code hilft Dir dabei, die fehlenden Werte in der Spalte 'Messwert' durch den Mittelwert der Spalte zu ersetzen und die Anzahl der fehlenden Werte vor und nach der Imputation anzuzeigen.

c)

Erstelle ein neues Feature namens 'NormierterMesswert', indem Du die Werte der Spalte 'Messwert' normalisierst. Nutze dafür die Min-Max-Normalisierung: \textit{normierter_wert = (wert - min)/(max - min)}. Implementiere diese Transformation mithilfe von NumPy und füge die Ergebnisse als neue Spalte in das DataFrame ein. Verwende diesen Python-Code als Vorlage:

 min_wert = np.min(df['Messwert']) max_wert = np.max(df['Messwert']) # Deine Normalisierungsschritte hier df['NormierterMesswert'] = ... 

Lösung:

Aufgabe: Erstellung eines neuen Features durch Normalisierung

In Deiner Rolle als Data-Scientist an der TU München erhältst Du einen Datensatz, der chemische Experimentergebnisse enthält. Bevor Du mit der Auswertung beginnen kannst, musst Du den Datensatz aufbereiten und bereinigen. Die Datensätze sind in einem .csv-Format und enthalten Informationen über verschiedene Messungen, wobei einige Datenpunkte fehlen oder falsch sind. Verwende für Deine Bearbeitungen Python und die Skript-basierten Werkzeuge pandas sowie NumPy.

Teilaufgabe

Erstelle ein neues Feature namens 'NormierterMesswert', indem Du die Werte der Spalte 'Messwert' normalisierst. Nutze dafür die Min-Max-Normalisierung: normierter_wert = (wert - min) / (max - min). Implementiere diese Transformation mithilfe von NumPy und füge die Ergebnisse als neue Spalte in das DataFrame ein. Verwende diesen Python-Code als Vorlage:

 min_wert = np.min(df['Messwert']) max_wert = np.max(df['Messwert']) # Deine Normalisierungsschritte hier df['NormierterMesswert'] = ... 

Schritt-für-Schritt-Lösung

  1. Importiere die notwendigen Bibliotheken: Pandas und NumPy (bereits geschehen).
  2. Berechne den Minimalwert und Maximalwert der Spalte 'Messwert': Verwende np.min() und np.max() um diese Werte zu bestimmen.
  3. Berechne die normalisierten Werte: Verwende die Formel zur Min-Max-Normalisierung, um die normalisierten Werte zu berechnen.
  4. Füge die normalisierten Werte als neue Spalte hinzu: Füge das Ergebnis als neue Spalte namens 'NormierterMesswert' zum DataFrame hinzu.

Hier ist der vollständige Python-Code:

 import pandas as pd import numpy as np df = pd.read_csv('chemische_experimentergebnisse.csv') # Anzahl der Zeilen vor dem Entfernen von Duplikaten initial_row_count = len(df) # Entferne Duplikate df_cleaned = df.drop_duplicates() # Anzahl der Zeilen nach dem Entfernen von Duplikaten final_row_count = len(df_cleaned) # Anzahl der gelöschten Zeilen removed_rows = initial_row_count - final_row_count # Reporte die Anzahl der gelöschten Zeilen print(f'Anzahl der gelöschten Duplikate: {removed_rows}') # Überprüfe fehlende Werte vor der Imputation print('Fehlende Werte vor der Imputation:', df_cleaned['Messwert'].isnull().sum()) # Imputation df_cleaned['Messwert'].fillna(df_cleaned['Messwert'].mean(), inplace=True) # Überprüfe fehlende Werte nach der Imputation print('Fehlende Werte nach der Imputation:', df_cleaned['Messwert'].isnull().sum()) # Berechne den Minimalwert und Maximalwert min_wert = np.min(df_cleaned['Messwert']) max_wert = np.max(df_cleaned['Messwert']) # Normalisierung df_cleaned['NormierterMesswert'] = (df_cleaned['Messwert'] - min_wert) / (max_wert - min_wert) # Zeige die ersten paar Zeilen des DataFrames print(df_cleaned.head()) 

Dieser Code hilft Dir dabei, ein neues Feature durch die Normalisierung der Spalte 'Messwert' zu erstellen und die normalisierten Werte im DataFrame als neue Spalte hinzuzufügen.

Aufgabe 3)

Du bist Chemiker an der TU München und hast einen Datensatz mit den Ergebnissen mehrerer Experimente zur Konzentration eines bestimmten Stoffes in verschiedenen Proben. Deine Aufgabe ist es, die Daten explorativ zu analysieren und mögliche Muster und Auffälligkeiten zu identifizieren. Verwende dabei Python und seine Bibliotheken pandas, matplotlib und seaborn. Der Datensatz enthält einige fehlende Werte und Ausreißer, die bereinigt werden müssen.

a)

Lade den Datensatz in Python mit pandas und verschaffe Dir einen ersten Überblick über die Daten. Zeige die ersten fünf Zeilen des Datensatzes an und berechne beschreibende Statistiken wie Mittelwert, Median und Modus für die Konzentrationswerte.

Lösung:

Um den Datensatz in Python zu laden und einen ersten Überblick zu gewinnen, kannst Du die Bibliotheken pandas, matplotlib und seaborn verwenden. Hier ist ein Schritt-für-Schritt-Vorgehen:

  1. Importiere die benötigten Bibliotheken.
  2. Lade den Datensatz mit pandas und zeige die ersten fünf Zeilen an.
  3. Berechne beschreibende Statistiken wie Mittelwert, Median und Modus für die Konzentrationswerte.

Hier ist der zugehörige Python-Code:

 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # Lade den Datensatz df = pd.read_csv('dein_datensatz.csv') # Zeige die ersten fünf Zeilen an print(df.head()) # Berechne beschreibende Statistiken für die Konzentrationswerte mean_concentration = df['Konzentration'].mean() median_concentration = df['Konzentration'].median() mode_concentration = df['Konzentration'].mode()[0] print(f'Mittelwert: {mean_concentration}') print(f'Median: {median_concentration}') print(f'Modus: {mode_concentration}') 

Erklärungen zum Code:

  • pd.read_csv('dein_datensatz.csv'): Lädt den Datensatz aus einer CSV-Datei.
  • df.head(): Zeigt die ersten fünf Zeilen des Datensatzes an.
  • df['Konzentration'].mean(): Berechnet den Mittelwert der Konzentrationswerte.
  • df['Konzentration'].median(): Berechnet den Median der Konzentrationswerte.
  • df['Konzentration'].mode()[0]: Berechnet den Modus der Konzentrationswerte. Da der Modus mehrere Werte haben kann, wird nur der erste Moduswert ausgegeben.

Nachdem Du diesen Code ausgeführt hast, hast Du einen ersten Überblick über Deinen Datensatz und einige grundlegende statistische Kennzahlen der Konzentrationswerte berechnet.

b)

Erstelle ein Histogramm der Konzentrationswerte mittels matplotlib oder seaborn, um die Verteilung der Daten zu visualisieren. Beschreibe die Verteilung und identifiziere mögliche Auffälligkeiten oder Muster.

Lösung:

Um ein Histogramm der Konzentrationswerte zu erstellen und die Verteilung der Daten zu visualisieren, kannst Du die Bibliotheken matplotlib oder seaborn verwenden. Hier ist ein Schritt-für-Schritt-Vorgehen:

  1. Importiere die benötigten Bibliotheken.
  2. Lade den Datensatz mit pandas.
  3. Erstelle ein Histogramm der Konzentrationswerte.
  4. Beschreibe die Verteilung und identifiziere mögliche Auffälligkeiten oder Muster.

Hier ist der zugehörige Python-Code:

 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # Lade den Datensatz df = pd.read_csv('dein_datensatz.csv') # Erstelle ein Histogramm mit seaborn plt.figure(figsize=(10, 6)) # Anpassung der Größe sns.histplot(df['Konzentration'], bins=20, kde=True) plt.title('Histogramm der Konzentrationswerte') plt.xlabel('Konzentration') plt.ylabel('Häufigkeit') plt.show() 

Erklärungen zum Code:

  • plt.figure(figsize=(10, 6)): Erstellt eine neue Figur mit einer angepassten Größe.
  • sns.histplot(df['Konzentration'], bins=20, kde=True): Erstellt ein Histogramm der Konzentrationswerte mit 20 Bins und einer Kernel-Dichte-Schätzung (KDE) zur Glättung der Verteilung.
  • plt.title('Histogramm der Konzentrationswerte'): Fügt einen Titel zum Histogramm hinzu.
  • plt.xlabel('Konzentration'): Beschriftet die x-Achse.
  • plt.ylabel('Häufigkeit'): Beschriftet die y-Achse.
  • plt.show(): Zeigt das Histogramm an.

Nachdem Du diesen Code ausgeführt hast, solltest Du ein Histogramm der Konzentrationswerte erhalten. Nun kannst Du die Verteilung analysieren und mögliche Auffälligkeiten oder Muster beschreiben:

  • Bimodale Verteilung: Wenn das Histogramm zwei Spitzen zeigt, könnte dies darauf hindeuten, dass es zwei unterschiedliche Gruppen von Proben gibt.
  • Schiefe Verteilung: Wenn die Verteilung stark links- oder rechtsschief ist, könnte dies auf Ausreißer hinweisen.
  • Auffällige Lücken: Größere Lücken in der Verteilung könnten auf Messfehler oder fehlende Proben hindeuten.

Beschreibe die beobachteten Muster oder Auffälligkeiten in Deinem Datensatz basierend auf dem Histogramm.

c)

Im Datensatz gibt es einige fehlende Werte. Beschreibe zwei Methoden zum Umgang mit fehlenden Werten, und implementiere eine davon. Bereinige den Datensatz entsprechend und zeige die Auswirkungen auf die beschreibenden Statistiken (Mittelwert, Median, Modus).

Lösung:

Wenn Du mit fehlenden Werten in einem Datensatz konfrontiert wirst, gibt es mehrere Methoden, diese zu behandeln. Zwei gängige Methoden sind:

  • Löschen von fehlenden Werten: Bei dieser Methode werden alle Zeilen oder Spalten, die fehlende Werte enthalten, vollständig entfernt. Dies ist einfach zu implementieren, kann aber dazu führen, dass wertvolle Daten verloren gehen, insbesondere wenn viele fehlende Werte vorhanden sind.
  • Ersetzung von fehlenden Werten: Hierbei werden fehlende Werte durch andere Werte ersetzt, wie z.B. den Mittelwert, Median oder Modus der entsprechenden Spalte. Diese Methode behält die Struktur und Größe des Datensatzes bei, kann aber die Verteilung der Daten beeinflussen.

Hier ist ein Schritt-für-Schritt-Vorgehen zur Implementierung der Methode der Ersetzung von fehlenden Werten durch den Median:

  1. Importiere die benötigten Bibliotheken.
  2. Lade den Datensatz mit pandas.
  3. Finde die fehlenden Werte und ersetze sie durch den Median der entsprechenden Spalte.
  4. Berechne die beschreibenden Statistiken vor und nach der Bereinigung.

Hier ist der zugehörige Python-Code:

 import pandas as pd import numpy as np # Lade den Datensatz df = pd.read_csv('dein_datensatz.csv') # Beschreibende Statistiken vor der Bereinigung mean_before = df['Konzentration'].mean() median_before = df['Konzentration'].median() mode_before = df['Konzentration'].mode()[0] print('Beschreibende Statistiken vor der Bereinigung:') print(f'Mittelwert: {mean_before}') print(f'Median: {median_before}') print(f'Modus: {mode_before}') # Ersetzen der fehlenden Werte durch den Median median_value = df['Konzentration'].median() df['Konzentration'].fillna(median_value, inplace=True) # Beschreibende Statistiken nach der Bereinigung mean_after = df['Konzentration'].mean() median_after = df['Konzentration'].median() mode_after = df['Konzentration'].mode()[0] print('Beschreibende Statistiken nach der Bereinigung:') print(f'Mittelwert: {mean_after}') print(f'Median: {median_after}') print(f'Modus: {mode_after}') 

Erklärungen zum Code:

  • median_value = df['Konzentration'].median(): Berechnet den Median der Konzentrationswerte.
  • df['Konzentration'].fillna(median_value, inplace=True): Ersetzt alle fehlenden Werte in der Konzentrationsspalte durch den berechneten Medianwert.
  • Berechne die beschreibenden Statistiken vor und nach der Bereinigung: Zeigt die Auswirkungen der Bereinigung auf die beschreibenden Statistiken.

Nachdem Du diesen Code ausgeführt hast, solltest Du die bereinigten beschreibenden Statistiken erhalten und die Auswirkungen der Behandlung fehlender Werte analysieren können.

d)

Es sind auch einige Ausreißer in den Konzentrationswerten vorhanden. Beschreibe eine Methode zur Identifikation und Entfernung von Ausreißern. Implementiere diese Methode und zeige die Konzentrationswerte vor und nach der Entfernung der Ausreißer in einem Boxplot.

Lösung:

Um Ausreißer in den Konzentrationswerten zu identifizieren und zu entfernen, kannst Du die Interquartilsabstand-Methode (IQR-Methode) verwenden. Der IQR hilft Dir, Grenzen für akzeptable Werte zu definieren und somit Ausreißer zu identifizieren.

Methode zur Identifikation und Entfernung von Ausreißern mit der IQR-Methode:

  1. Berechne den ersten Quartil (Q1) und den dritten Quartil (Q3).
  2. Berechne den IQR (Interquartilsabstand) als Differenz zwischen Q3 und Q1: \text{IQR} = Q3 - Q1
  3. Bestimme die unteren und oberen Grenzen für akzeptable Werte:
    • Untere Grenze: Q1 - 1.5 \times IQR
    • Obere Grenze: Q3 + 1.5 \times IQR
  4. Entferne alle Werte, die außerhalb dieser Grenzen liegen.

Hier ist der zugehörige Python-Code:

 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # Lade den Datensatz df = pd.read_csv('dein_datensatz.csv') # Berechne die Quartile und den IQR Q1 = df['Konzentration'].quantile(0.25) Q3 = df['Konzentration'].quantile(0.75) IQR = Q3 - Q1 lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR # Identifiziere und entferne die Ausreißer df_cleaned = df[(df['Konzentration'] >= lower_bound) & (df['Konzentration'] <= upper_bound)] # Boxplot der Konzentrationswerte vor und nach der Entfernung der Ausreißer plt.figure(figsize=(12, 6)) plt.subplot(1, 2, 1) sns.boxplot(y=df['Konzentration']) plt.title('Vor der Entfernung der Ausreißer') plt.subplot(1, 2, 2) sns.boxplot(y=df_cleaned['Konzentration']) plt.title('Nach der Entfernung der Ausreißer') plt.tight_layout() plt.show() 

Erklärungen zum Code:

  • Q1 = df['Konzentration'].quantile(0.25): Berechnet das erste Quartil.
  • Q3 = df['Konzentration'].quantile(0.75): Berechnet das dritte Quartil.
  • IQR = Q3 - Q1: Berechnet den Interquartilsabstand.
  • lower_bound = Q1 - 1.5 * IQR: Berechnet die untere Grenze für akzeptable Werte.
  • upper_bound = Q3 + 1.5 * IQR: Berechnet die obere Grenze für akzeptable Werte.
  • df_cleaned = df[(df['Konzentration'] >= lower_bound) & (df['Konzentration'] <= upper_bound)]: Entfernt alle Ausreißer außerhalb der definierten Grenzen.
  • sns.boxplot(y=df['Konzentration']): Erstellt einen Boxplot der ursprünglichen Konzentrationswerte.
  • sns.boxplot(y=df_cleaned['Konzentration']): Erstellt einen Boxplot der bereinigten Konzentrationswerte.

Nachdem Du diesen Code ausgeführt hast, wirst Du zwei Boxplots erhalten: einen vor und einen nach der Entfernung der Ausreißer. Dies ermöglicht Dir, die Auswirkungen der Ausreißerbereinigung auf die Konzentrationswerte visuell nachzuvollziehen.

Aufgabe 4)

Du sollst ein Programm in Python schreiben, das eine Liste von chemischen Elementen und deren Atomgewichte verarbeitet. Das Programm sollte die grundlegenden Datenstrukturen und Kontrollstrukturen nutzen, um die Informationen ordentlich zu organisieren und Operationen auf diesen Daten durchzuführen. Implementiere ein Programm, das folgende Aufgabenstellungen erfüllt:

a)

a) Definiere eine Liste von Dictionaries, wobei jedes Dictionary ein chemisches Element und sein Atomgewicht enthält. Beispiele:

elements = [ {'name': 'Wasserstoff', 'weight': 1.008}, {'name': 'Helium', 'weight': 4.0026}, {'name': 'Lithium', 'weight': 6.94}]

Erstelle eine Funktion print_elements, die diese Liste durchläuft und die Elemente und deren Atomgewichte in einer geordneten Ausgabe im Format Name: Atomgewicht ausgibt.

Lösung:

Um diese Aufgabe zu lösen, befolgen wir folgende Schritte:

  • Definiere eine Liste von Dictionaries, die die chemische Elemente und deren Atomgewichte enthält.
  • Erstelle eine Funktion print_elements, welche die Liste durchläuft und die Elemente und deren Atomgewichte ausgibt.

Hier ist der Python-Code, der diese Anforderungen erfüllt:

# Schritt 1: Definiere die Liste von Dictionaries# Die Liste mit chemischen Elementen und ihren Atomgewichtenelements = [    {'name': 'Wasserstoff', 'weight': 1.008},    {'name': 'Helium', 'weight': 4.0026},    {'name': 'Lithium', 'weight': 6.94}]# Schritt 2: Erstelle die Funktion print_elementsdef print_elements(elements):    for element in elements:        # Weise die Werte 'name' und 'weight' jedem Element zu        name = element['name']        weight = element['weight']        # Ausgabe im Format 'Name: Atomgewicht'        print(f'{name}: {weight}')# Funktion print_elements aufrufenprint_elements(elements)

Die Ausgabe wird wie folgt aussehen:

  • Wasserstoff: 1.008
  • Helium: 4.0026
  • Lithium: 6.94

b)

b) Schreibe eine Funktion find_element, welche den Namen eines chemischen Elements als Eingabe akzeptiert und das Atomgewicht dieses Elements zurückgibt. Falls das Element nicht existiert, soll die Funktion eine geeignete Fehlermeldung ausgeben.

Beispiel:

def find_element(name): # Implementiere die Funktion hier 

Lösung:

Um diese Aufgabe zu lösen, müssen wir die Funktion find_element implementieren, die den Namen eines chemischen Elements als Eingabe akzeptiert und das Atomgewicht dieses Elements zurückgibt. Falls das Element nicht existiert, soll die Funktion eine geeignete Fehlermeldung ausgeben.

Wir verwenden eine Liste von Dictionaries ähnlich wie in der ersten Aufgabe. Hier ist der Python-Code, der diese Anforderungen erfüllt:

# Die Liste mit chemischen Elementen und ihren Atomgewichtenelements = [    {'name': 'Wasserstoff', 'weight': 1.008},    {'name': 'Helium', 'weight': 4.0026},    {'name': 'Lithium', 'weight': 6.94}]# Funktion zur Suche eines Elementsdef find_element(name):    for element in elements:        if element['name'].lower() == name.lower():            return element['weight']    return f'Fehler: Element {name} nicht gefunden.'# Beispiele für die Verwendung der Funktionprint(find_element('Helium'))  # sollte 4.0026 zurückgebenprint(find_element('Neon'))    # sollte 'Fehler: Element Neon nicht gefunden.' zurückgeben

In diesem Code haben wir:

  • Die Liste elements definiert
  • Die Funktion find_element erstellt, die jedes Element durchläuft und dessen Namen mit der Eingabe vergleicht
  • Die Lowercase-Conversion angewendet, um Groß-/Kleinschreibung zu ignorieren
  • Das passende Atomgewicht zurückgegeben, wenn das Element gefunden wurde, oder eine Fehlermeldung, falls das Element nicht existiert

Hier sind einige Beispielausgaben:

  • find_element('Helium'): 4.0026
  • find_element('Neon'): Fehler: Element Neon nicht gefunden.

c)

c) Ergänze das Programm um eine Berechnung der Summe und des Durchschnitts der Atomgewichte aller Elemente in der Liste. Implementiere eine Funktion calculate_average_weight, die dazu die entsprechenden mathematischen Operationen durchführt. Gib dabei auch die Anzahl der Elemente in der Liste aus. Die Ausgabe sollte im Format Summe: xyz, Durchschnitt: abc, Anzahl: n erfolgen.

Beispiel:

def calculate_average_weight(): # Implementiere die Funktion hier 

Lösung:

Um diese Aufgabe zu lösen, müssen wir eine Funktion calculate_average_weight implementieren, welche die Summe und den Durchschnitt der Atomgewichte berechnet und zusätzlich die Anzahl der Elemente in der Liste ausgibt.

Hier ist der Python-Code, der diese Anforderungen erfüllt:

# Die Liste mit chemischen Elementen und ihren Atomgewichtenelements = [    {'name': 'Wasserstoff', 'weight': 1.008},    {'name': 'Helium', 'weight': 4.0026},    {'name': 'Lithium', 'weight': 6.94}]# Funktion zur Berechnung der Summe und des Durchschnitts der Atomgewichtedef calculate_average_weight(elements):    total_weight = 0    for element in elements:        total_weight += element['weight']    number_of_elements = len(elements)    if number_of_elements == 0:        average_weight = 0    else:        average_weight = total_weight / number_of_elements    print(f'Summe: {total_weight}, Durchschnitt: {average_weight}, Anzahl: {number_of_elements}')# Funktion calculate_average_weight aufrufencalculate_average_weight(elements)

In diesem Code haben wir:

  • Die Liste elements definiert
  • Die Funktion calculate_average_weight erstellt, die die Summe der Atomgewichte berechnet
  • Die Anzahl der Elemente in der Liste berechnet und auf null geprüft, um eine Division durch null zu vermeiden
  • Den Durchschnitt der Atomgewichte berechnet
  • Die Ergebnisse in dem geforderten Format ausgegeben
Hier ist die zu erwartende Ausgabe für unsere Beispieldaten:
  • Summe: 11.9506, Durchschnitt: 3.9835333333333337, Anzahl: 3
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden