edit corelation.py and add hr_data_cleaned.csv

master
TheOriginalGraLargeShrimpakaReaper 2024-10-18 09:59:08 +02:00
parent 692099b36d
commit 5e2c6e7187
7 changed files with 454 additions and 268 deletions

View File

@ -2,109 +2,7 @@ import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from datetime import datetime
import os
# Manuelle Zuordnung der Monatsnamen von Deutsch auf Englisch
# month_translation = {
# 'Jan': 'Jan', 'Feb': 'Feb', 'Mär': 'Mar', 'Apr': 'Apr', 'Mai': 'May', 'Jun': 'Jun',
# 'Jul': 'Jul', 'Aug': 'Aug', 'Sep': 'Sep', 'Okt': 'Oct', 'Nov': 'Nov', 'Dez': 'Dec', 'Mrz': 'Mar'
# }
# Funktion, um 'Okt 10-16' in eine Kalenderwoche zu konvertieren und das Startdatum zurückzugeben
# def convert_to_week_number_and_start_date(date_range_str):
# # Splitte den Datumsbereich in Monat und Tage
# start_part, end_part = date_range_str.split(" - ")
# start_month_str, start_day = start_part.split(" ")
# start_day = int(start_day) # Nimm den Starttag
#
# # Konvertiere den deutschen Monatsnamen in den englischen
# if start_month_str in month_translation:
# start_month_str = month_translation[start_month_str]
#
# # Erstelle das Datum basierend auf dem Starttag und dem aktuellen Jahr
# current_year = datetime.now().year
# date_str = f"{start_month_str} {start_day} {current_year}"
#
# try:
# start_date = datetime.strptime(date_str, "%b %d %Y") # Konvertiere in ein Datum
# except ValueError:
# raise ValueError(f"Ungültiges Datum: {date_str}")
#
# week_number = start_date.isocalendar()[1] # Kalenderwoche ermitteln
#
# return week_number, start_date.strftime('%Y-%m-%d') # Gib KW und das Startdatum zurück
# Funktion, um 'Okt 10-16' oder 'Okt 10 - 16' in eine Kalenderwoche zu konvertieren und das Startdatum zurückzugeben
# def convert_to_week_number_and_start_date(date_range_str):
# # Entferne zusätzliche Leerzeichen um den Bindestrich herum
# date_range_str = date_range_str.replace(" - ", "-")
#
# # Splitte den Datumsbereich in Start- und Endbereich
# start_part, end_part = date_range_str.split("-")
# start_month_str, start_day = start_part.split(" ")
# start_day = int(start_day.strip()) # Nimm den Starttag und entferne etwaige Leerzeichen
#
# # Konvertiere den deutschen Monatsnamen in den englischen
# if start_month_str in month_translation:
# start_month_str = month_translation[start_month_str]
#
# # Erstelle das Datum basierend auf dem Starttag und dem aktuellen Jahr
# current_year = datetime.now().year
# date_str = f"{start_month_str} {start_day} {current_year}"
#
# try:
# start_date = datetime.strptime(date_str, "%b %d %Y") # Konvertiere in ein Datum
# except ValueError:
# raise ValueError(f"Ungültiges Datum: {date_str}")
#
# week_number = start_date.isocalendar()[1] # Kalenderwoche ermitteln
#
# return week_number, start_date.strftime('%Y-%m-%d') # Gib KW und das Startdatum zurück
# Funktion, um Datumsbereiche wie 'Mrz 29-Apr 4' oder 'Okt 10-16' in die Kalenderwoche zu konvertieren
# und das Startdatum zurückzugeben
# Funktion, um Datumsbereiche wie 'Mrz 29-Apr 4' oder 'Okt 10-16' in die Kalenderwoche zu konvertieren
# und das Startdatum zurückzugeben
# def convert_to_week_number_and_start_date(date_range_str):
# # Entferne zusätzliche Leerzeichen um den Bindestrich herum
# date_range_str = date_range_str.replace(" - ", "-")
#
# # Splitte den Datumsbereich in Start- und Endteil
# start_part, end_part = date_range_str.split("-")
#
# # Verarbeite den Startteil
# start_month_str, start_day = start_part.split(" ")
# start_day = int(start_day.strip()) # Nimm den Starttag und entferne etwaige Leerzeichen
#
# # Wenn der Endteil einen Monat enthält, verarbeite ihn ebenfalls
# if " " in end_part:
# end_month_str, end_day = end_part.split(" ")
# end_day = int(end_day.strip()) # Nimm den Endtag
# else:
# # Wenn der Endteil keinen Monat enthält, verwenden wir denselben Monat wie im Startteil
# end_month_str = start_month_str
# end_day = int(end_part.strip())
#
# # Konvertiere den deutschen Monatsnamen in den englischen für beide Monate
# if start_month_str in month_translation:
# start_month_str = month_translation[start_month_str]
# if end_month_str in month_translation:
# end_month_str = month_translation[end_month_str]
#
# # Erstelle das Datum basierend auf dem Starttag und dem aktuellen Jahr
# current_year = datetime.now().year
# start_date_str = f"{start_month_str} {start_day} {current_year}"
#
# try:
# # Konvertiere in ein Datum
# start_date = datetime.strptime(start_date_str, "%b %d %Y")
# except ValueError:
# raise ValueError(f"Ungültiges Startdatum: {start_date_str}")
#
# # Berechne die Kalenderwoche basierend auf dem Startdatum
# week_number = start_date.isocalendar()[1]
#
# return week_number, start_date.strftime('%Y-%m-%d') # Gib KW und das Startdatum zurück
# Manuelle Zuordnung der Monatsnamen von Deutsch auf Englisch
month_translation = {
'Jan': 'Jan', 'Feb': 'Feb', 'Mär': 'Mar', 'Mrz': 'Mar', 'Apr': 'Apr', 'Mai': 'May', 'Jun': 'Jun',
@ -112,8 +10,8 @@ month_translation = {
}
# Funktion, um Datumsbereiche wie 'Mrz 29-Apr 4', 'Dez 29, 2023-Jan 4, 2024', 'Dez 22-28 2023' oder 'Dez 28' in Kalenderwoche und Startdatum zu konvertieren
def convert_to_week_number_and_start_date(date_range_str):
# Funktion, um Datumsbereiche wie 'Mrz 29-Apr 4', 'Dez 22-28 2023' oder 'Dez 28' in Kalenderwoche und Jahr zu konvertieren
def convert_to_week_and_year(date_range_str):
# Entferne zusätzliche Leerzeichen um den Bindestrich herum und entferne Kommas
date_range_str = date_range_str.replace(" - ", "-").replace(",", "")
@ -131,10 +29,11 @@ def convert_to_week_number_and_start_date(date_range_str):
# Konvertiere das Datum
start_date = datetime.strptime(f"{month_str} {day} {year_str}", "%b %d %Y")
# Berechne die Kalenderwoche
# Berechne die Kalenderwoche und das Jahr
week_number = start_date.isocalendar()[1]
year = start_date.year
return week_number, start_date.strftime('%Y-%m-%d')
return f"W{week_number}-{year}"
# Prüfen, ob das Jahr am Ende steht (z.B. 'Dez 22-28 2023')
if date_range_str[-4:].isdigit():
@ -177,79 +76,58 @@ def convert_to_week_number_and_start_date(date_range_str):
except ValueError:
raise ValueError(f"Ungültiges Startdatum: {start_month_str} {start_day} {year_str}")
try:
# Konvertiere das Enddatum in ein Datum
end_date = datetime.strptime(f"{end_month_str} {end_day} {year_str}", "%b %d %Y")
except ValueError:
raise ValueError(f"Ungültiges Enddatum: {end_month_str} {end_day} {year_str}")
# Berechne die Kalenderwoche basierend auf dem Startdatum
# Berechne die Kalenderwoche und das Jahr basierend auf dem Startdatum
week_number = start_date.isocalendar()[1]
year = start_date.year
return week_number, start_date.strftime('%Y-%m-%d') # Gib KW und das Startdatum zurück
return f"W{week_number}-{year}" # Gib Kalenderwoche und Jahr im Format W-YYYY zurück
# Funktion zum Bereinigen und Zwischenspeichern der Daten
def clean_and_save_data(hr_data, sleep_data, output_dir='sandbox'):
# Entferne 'bpm' und konvertiere die Werte in numerische Daten
hr_data['In Ruhe'] = hr_data['In Ruhe'].str.replace(' bpm', '').astype(float)
hr_data['Hoch'] = hr_data['Hoch'].str.replace(' bpm', '').astype(float)
# Datei Pfade
hr_data_path = '/home/gra/PycharmProjects/cds_introduction_data_science_assignment/data/raw/hr_gramic.csv'
sleep_data_path = '/home/gra/PycharmProjects/cds_introduction_data_science_assignment/data/raw/sleep_gramic.csv'
hr_clean_path = '/home/gra/PycharmProjects/cds_introduction_data_science_assignment/data/sandbox/hr_data_clean.csv'
sleep_clean_path = '/home/gra/PycharmProjects/cds_introduction_data_science_assignment/data/sandbox/sleep_data_clean.csv'
combined_data_path = '/home/gra/PycharmProjects/cds_introduction_data_science_assignment/data/sandbox/combined_data.csv'
# Konvertiere die Spalte 'Datum' in Kalenderwoche (KW) und Startdatum
hr_data[['week', 'start_date']] = hr_data['Datum'].apply(
lambda x: pd.Series(convert_to_week_number_and_start_date(x)))
# Schritt 1: Lade die HR-Daten (mit Semikolon separiert) und entferne 'bpm'
hr_data = pd.read_csv(hr_data_path, sep=';')
# Berechne den Durchschnitt der Herzfrequenzdaten (In Ruhe und Hoch)
hr_data['avg_hr'] = hr_data[['In Ruhe', 'Hoch']].mean(axis=1)
# Entferne 'bpm' und konvertiere die Werte in numerische Daten
hr_data['In Ruhe'] = hr_data['In Ruhe'].str.replace(' bpm', '').astype(float)
hr_data['Hoch'] = hr_data['Hoch'].str.replace(' bpm', '').astype(float)
# Konvertiere auch das 'Datum' der Schlafdaten in Kalenderwoche (KW) und Startdatum
sleep_data[['week', 'start_date']] = sleep_data['Datum'].apply(
lambda x: pd.Series(convert_to_week_number_and_start_date(x)))
# Konvertiere die Spalte 'Datum' in Kalenderwoche (KW und Jahr)
hr_data['Woche'] = hr_data['Datum'].apply(convert_to_week_and_year)
# Speichere die bereinigten Daten in 'sandbox'
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# Berechne den Durchschnitt der Herzfrequenzdaten (In Ruhe und Hoch)
hr_data['avg_hr'] = hr_data[['In Ruhe', 'Hoch']].mean(axis=1)
hr_data_clean_path = os.path.join(output_dir, 'hr_data_clean.csv')
sleep_data_clean_path = os.path.join(output_dir, 'sleep_data_clean.csv')
# Speichere nur die Spalten 'Woche' und 'avg_hr' in einer neuen CSV-Datei
hr_data_clean = hr_data[['Woche', 'avg_hr']]
hr_data_clean.to_csv(hr_clean_path, index=False)
hr_data.to_csv(hr_data_clean_path, sep=';', index=False)
sleep_data.to_csv(sleep_data_clean_path, sep=',', index=False)
# Schritt 2: Lade die Schlafdaten (mit Komma separiert)
sleep_data = pd.read_csv(sleep_data_path, sep=',')
print(f"HR-Daten wurden bereinigt und in {hr_data_clean_path} gespeichert.")
print(f"Schlafdaten wurden bereinigt und in {sleep_data_clean_path} gespeichert.")
# Konvertiere die Spalte 'Datum' in Kalenderwoche (KW und Jahr)
sleep_data['Woche'] = sleep_data['Datum'].apply(convert_to_week_and_year)
return hr_data, sleep_data
# Speichere nur die Spalten 'Woche' und 'Durchschnittliche Dauer' in einer neuen CSV-Datei
sleep_data_clean = sleep_data[['Woche', 'Durchschnittliche Dauer']]
sleep_data_clean.to_csv(sleep_clean_path, index=False)
# Schritt 3: Kombiniere die HR- und Schlafdaten basierend auf der 'Woche'
combined_data = pd.merge(hr_data_clean, sleep_data_clean, on='Woche', how='inner')
# Schritt 1: Lade die HR- und Schlafdaten
hr_data = pd.read_csv('/home/gra/PycharmProjects/cds_introduction_data_science_assignment/data/raw/hr_gramic.csv',
sep=';')
sleep_data = pd.read_csv('/home/gra/PycharmProjects/cds_introduction_data_science_assignment/data/raw/sleep_gramic.csv',
sep=',')
# Speichere das kombinierte Dataset in einer neuen CSV-Datei
combined_data.to_csv(combined_data_path, index=False)
# Bereinige und speichere die Daten
hr_data, sleep_data = clean_and_save_data(hr_data, sleep_data)
# Schritt 2: Sortiere beide Datensätze nach 'week' und 'start_date'
hr_data = hr_data.sort_values(by=['week', 'start_date'])
sleep_data = sleep_data.sort_values(by=['week', 'start_date'])
# Schritt 3: Kombiniere die beiden Datensätze anhand der 'week' und 'start_date' Spalten mit einem äußeren Join
combined_data = pd.merge(hr_data, sleep_data, on=['week', 'start_date'], how='outer')
# Zeige die kombinierten Daten
print("\nKombinierte Daten:")
print(combined_data)
# Schritt 4: Entferne alle Zeilen mit fehlenden Daten
combined_data = combined_data.dropna()
# Schritt 5: Berechne die Korrelation zwischen 'avg_hr' und 'Durchschnittliche Dauer'
# Schritt 4: Berechne die Korrelation zwischen avg_hr und der Schlafdauer
correlation = combined_data['avg_hr'].corr(combined_data['Durchschnittliche Dauer'])
print(f"\nDie Korrelation zwischen der durchschnittlichen Herzfrequenz und der Schlafdauer ist: {correlation}")
print(f"Die Korrelation zwischen der durchschnittlichen Herzfrequenz und der Schlafdauer ist: {correlation}")
# Schritt 6: Visualisiere den Zusammenhang zwischen Herzfrequenz und Schlafdauer
# Schritt 5: Visualisiere den Zusammenhang zwischen Herzfrequenz und Schlafdauer
plt.figure(figsize=(10, 6))
plt.scatter(combined_data['avg_hr'], combined_data['Durchschnittliche Dauer'], color='blue', label='Datenpunkte')
plt.title('Zusammenhang zwischen Herzfrequenz (Durchschnitt) und Schlafdauer')

266
code/corelation_old4.py Normal file
View File

@ -0,0 +1,266 @@
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from datetime import datetime
import os
# Manuelle Zuordnung der Monatsnamen von Deutsch auf Englisch
# month_translation = {
# 'Jan': 'Jan', 'Feb': 'Feb', 'Mär': 'Mar', 'Apr': 'Apr', 'Mai': 'May', 'Jun': 'Jun',
# 'Jul': 'Jul', 'Aug': 'Aug', 'Sep': 'Sep', 'Okt': 'Oct', 'Nov': 'Nov', 'Dez': 'Dec', 'Mrz': 'Mar'
# }
# Funktion, um 'Okt 10-16' in eine Kalenderwoche zu konvertieren und das Startdatum zurückzugeben
# def convert_to_week_number_and_start_date(date_range_str):
# # Splitte den Datumsbereich in Monat und Tage
# start_part, end_part = date_range_str.split(" - ")
# start_month_str, start_day = start_part.split(" ")
# start_day = int(start_day) # Nimm den Starttag
#
# # Konvertiere den deutschen Monatsnamen in den englischen
# if start_month_str in month_translation:
# start_month_str = month_translation[start_month_str]
#
# # Erstelle das Datum basierend auf dem Starttag und dem aktuellen Jahr
# current_year = datetime.now().year
# date_str = f"{start_month_str} {start_day} {current_year}"
#
# try:
# start_date = datetime.strptime(date_str, "%b %d %Y") # Konvertiere in ein Datum
# except ValueError:
# raise ValueError(f"Ungültiges Datum: {date_str}")
#
# week_number = start_date.isocalendar()[1] # Kalenderwoche ermitteln
#
# return week_number, start_date.strftime('%Y-%m-%d') # Gib KW und das Startdatum zurück
# Funktion, um 'Okt 10-16' oder 'Okt 10 - 16' in eine Kalenderwoche zu konvertieren und das Startdatum zurückzugeben
# def convert_to_week_number_and_start_date(date_range_str):
# # Entferne zusätzliche Leerzeichen um den Bindestrich herum
# date_range_str = date_range_str.replace(" - ", "-")
#
# # Splitte den Datumsbereich in Start- und Endbereich
# start_part, end_part = date_range_str.split("-")
# start_month_str, start_day = start_part.split(" ")
# start_day = int(start_day.strip()) # Nimm den Starttag und entferne etwaige Leerzeichen
#
# # Konvertiere den deutschen Monatsnamen in den englischen
# if start_month_str in month_translation:
# start_month_str = month_translation[start_month_str]
#
# # Erstelle das Datum basierend auf dem Starttag und dem aktuellen Jahr
# current_year = datetime.now().year
# date_str = f"{start_month_str} {start_day} {current_year}"
#
# try:
# start_date = datetime.strptime(date_str, "%b %d %Y") # Konvertiere in ein Datum
# except ValueError:
# raise ValueError(f"Ungültiges Datum: {date_str}")
#
# week_number = start_date.isocalendar()[1] # Kalenderwoche ermitteln
#
# return week_number, start_date.strftime('%Y-%m-%d') # Gib KW und das Startdatum zurück
# Funktion, um Datumsbereiche wie 'Mrz 29-Apr 4' oder 'Okt 10-16' in die Kalenderwoche zu konvertieren
# und das Startdatum zurückzugeben
# Funktion, um Datumsbereiche wie 'Mrz 29-Apr 4' oder 'Okt 10-16' in die Kalenderwoche zu konvertieren
# und das Startdatum zurückzugeben
# def convert_to_week_number_and_start_date(date_range_str):
# # Entferne zusätzliche Leerzeichen um den Bindestrich herum
# date_range_str = date_range_str.replace(" - ", "-")
#
# # Splitte den Datumsbereich in Start- und Endteil
# start_part, end_part = date_range_str.split("-")
#
# # Verarbeite den Startteil
# start_month_str, start_day = start_part.split(" ")
# start_day = int(start_day.strip()) # Nimm den Starttag und entferne etwaige Leerzeichen
#
# # Wenn der Endteil einen Monat enthält, verarbeite ihn ebenfalls
# if " " in end_part:
# end_month_str, end_day = end_part.split(" ")
# end_day = int(end_day.strip()) # Nimm den Endtag
# else:
# # Wenn der Endteil keinen Monat enthält, verwenden wir denselben Monat wie im Startteil
# end_month_str = start_month_str
# end_day = int(end_part.strip())
#
# # Konvertiere den deutschen Monatsnamen in den englischen für beide Monate
# if start_month_str in month_translation:
# start_month_str = month_translation[start_month_str]
# if end_month_str in month_translation:
# end_month_str = month_translation[end_month_str]
#
# # Erstelle das Datum basierend auf dem Starttag und dem aktuellen Jahr
# current_year = datetime.now().year
# start_date_str = f"{start_month_str} {start_day} {current_year}"
#
# try:
# # Konvertiere in ein Datum
# start_date = datetime.strptime(start_date_str, "%b %d %Y")
# except ValueError:
# raise ValueError(f"Ungültiges Startdatum: {start_date_str}")
#
# # Berechne die Kalenderwoche basierend auf dem Startdatum
# week_number = start_date.isocalendar()[1]
#
# return week_number, start_date.strftime('%Y-%m-%d') # Gib KW und das Startdatum zurück
# Manuelle Zuordnung der Monatsnamen von Deutsch auf Englisch
month_translation = {
'Jan': 'Jan', 'Feb': 'Feb', 'Mär': 'Mar', 'Mrz': 'Mar', 'Apr': 'Apr', 'Mai': 'May', 'Jun': 'Jun',
'Jul': 'Jul', 'Aug': 'Aug', 'Sep': 'Sep', 'Okt': 'Oct', 'Nov': 'Nov', 'Dez': 'Dec'
}
# Funktion, um Datumsbereiche wie 'Mrz 29-Apr 4', 'Dez 29, 2023-Jan 4, 2024', 'Dez 22-28 2023' oder 'Dez 28' in Kalenderwoche und Startdatum zu konvertieren
def convert_to_week_number_and_start_date(date_range_str):
# Entferne zusätzliche Leerzeichen um den Bindestrich herum und entferne Kommas
date_range_str = date_range_str.replace(" - ", "-").replace(",", "")
# Prüfen, ob das Format nur einen Tag und Monat enthält (z.B. 'Dez 28')
if "-" not in date_range_str and len(date_range_str.split(" ")) == 2:
# Nur ein Datum (Monat und Tag)
month_str, day_str = date_range_str.split(" ")
day = int(day_str.strip())
year_str = str(datetime.now().year) # Verwende das aktuelle Jahr
# Konvertiere den deutschen Monatsnamen in den englischen
if month_str in month_translation:
month_str = month_translation[month_str]
# Konvertiere das Datum
start_date = datetime.strptime(f"{month_str} {day} {year_str}", "%b %d %Y")
# Berechne die Kalenderwoche
week_number = start_date.isocalendar()[1]
return week_number, start_date.strftime('%Y-%m-%d')
# Prüfen, ob das Jahr am Ende steht (z.B. 'Dez 22-28 2023')
if date_range_str[-4:].isdigit():
# Jahr am Ende des Datums
year_str = date_range_str[-4:]
date_range_str = date_range_str[:-5] # Entferne das Jahr aus der Datumsangabe
else:
# Kein Jahr am Ende -> nutze das aktuelle Jahr
year_str = str(datetime.now().year)
# Splitte den Datumsbereich in Start- und Endteil
start_part, end_part = date_range_str.split("-")
# Verarbeite den Startteil
start_parts = start_part.split(" ")
start_month_str = start_parts[0]
start_day = int(start_parts[1].strip()) # Nimm den Starttag und entferne etwaige Leerzeichen
# Verarbeite den Endteil
end_parts = end_part.split(" ")
# Verarbeite das Enddatum, basierend darauf, ob der Endteil das Jahr enthält
if len(end_parts) == 2: # Fall: 'Apr 4'
end_month_str = end_parts[0]
end_day = int(end_parts[1].strip())
else:
# Fall: kein Monat -> nur Tag (z.B. '28' im Format 'Dez 22-28 2023')
end_month_str = start_month_str
end_day = int(end_parts[0].strip())
# Konvertiere den deutschen Monatsnamen in den englischen für beide Monate
if start_month_str in month_translation:
start_month_str = month_translation[start_month_str]
if end_month_str in month_translation:
end_month_str = month_translation[end_month_str]
try:
# Konvertiere das Startdatum in ein Datum
start_date = datetime.strptime(f"{start_month_str} {start_day} {year_str}", "%b %d %Y")
except ValueError:
raise ValueError(f"Ungültiges Startdatum: {start_month_str} {start_day} {year_str}")
try:
# Konvertiere das Enddatum in ein Datum
end_date = datetime.strptime(f"{end_month_str} {end_day} {year_str}", "%b %d %Y")
except ValueError:
raise ValueError(f"Ungültiges Enddatum: {end_month_str} {end_day} {year_str}")
# Berechne die Kalenderwoche basierend auf dem Startdatum
week_number = start_date.isocalendar()[1]
return week_number, start_date.strftime('%Y-%m-%d') # Gib KW und das Startdatum zurück
# Funktion zum Bereinigen und Zwischenspeichern der Daten
def clean_and_save_data(hr_data, sleep_data, output_dir='sandbox'):
# Entferne 'bpm' und konvertiere die Werte in numerische Daten
hr_data['In Ruhe'] = hr_data['In Ruhe'].str.replace(' bpm', '').astype(float)
hr_data['Hoch'] = hr_data['Hoch'].str.replace(' bpm', '').astype(float)
# Konvertiere die Spalte 'Datum' in Kalenderwoche (KW) und Startdatum
hr_data[['week', 'start_date']] = hr_data['Datum'].apply(
lambda x: pd.Series(convert_to_week_number_and_start_date(x)))
# Berechne den Durchschnitt der Herzfrequenzdaten (In Ruhe und Hoch)
hr_data['avg_hr'] = hr_data[['In Ruhe', 'Hoch']].mean(axis=1)
# Konvertiere auch das 'Datum' der Schlafdaten in Kalenderwoche (KW) und Startdatum
sleep_data[['week', 'start_date']] = sleep_data['Datum'].apply(
lambda x: pd.Series(convert_to_week_number_and_start_date(x)))
# Speichere die bereinigten Daten in 'sandbox'
if not os.path.exists(output_dir):
os.makedirs(output_dir)
hr_data_clean_path = os.path.join(output_dir, 'hr_data_clean.csv')
sleep_data_clean_path = os.path.join(output_dir, 'sleep_data_clean.csv')
hr_data.to_csv(hr_data_clean_path, sep=';', index=False)
sleep_data.to_csv(sleep_data_clean_path, sep=',', index=False)
print(f"HR-Daten wurden bereinigt und in {hr_data_clean_path} gespeichert.")
print(f"Schlafdaten wurden bereinigt und in {sleep_data_clean_path} gespeichert.")
return hr_data, sleep_data
# Schritt 1: Lade die HR- und Schlafdaten
hr_data = pd.read_csv('/home/gra/PycharmProjects/cds_introduction_data_science_assignment/data/raw/hr_gramic.csv',
sep=';')
sleep_data = pd.read_csv('/home/gra/PycharmProjects/cds_introduction_data_science_assignment/data/raw/sleep_gramic.csv',
sep=',')
# Bereinige und speichere die Daten
hr_data, sleep_data = clean_and_save_data(hr_data, sleep_data)
# Schritt 2: Sortiere beide Datensätze nach 'week' und 'start_date'
hr_data = hr_data.sort_values(by=['week', 'start_date'])
sleep_data = sleep_data.sort_values(by=['week', 'start_date'])
# Schritt 3: Kombiniere die beiden Datensätze anhand der 'week' und 'start_date' Spalten mit einem äußeren Join
combined_data = pd.merge(hr_data, sleep_data, on=['week', 'start_date'], how='outer')
# Zeige die kombinierten Daten
print("\nKombinierte Daten:")
print(combined_data)
# Schritt 4: Entferne alle Zeilen mit fehlenden Daten
combined_data = combined_data.dropna()
# Schritt 5: Berechne die Korrelation zwischen 'avg_hr' und 'Durchschnittliche Dauer'
correlation = combined_data['avg_hr'].corr(combined_data['Durchschnittliche Dauer'])
print(f"\nDie Korrelation zwischen der durchschnittlichen Herzfrequenz und der Schlafdauer ist: {correlation}")
# Schritt 6: Visualisiere den Zusammenhang zwischen Herzfrequenz und Schlafdauer
plt.figure(figsize=(10, 6))
plt.scatter(combined_data['avg_hr'], combined_data['Durchschnittliche Dauer'], color='blue', label='Datenpunkte')
plt.title('Zusammenhang zwischen Herzfrequenz (Durchschnitt) und Schlafdauer')
plt.xlabel('Durchschnittliche Herzfrequenz (bpm)')
plt.ylabel('Schlafdauer (Stunden)')
plt.grid(True)
# Linie zur Visualisierung des Trends hinzufügen
m, b = np.polyfit(combined_data['avg_hr'], combined_data['Durchschnittliche Dauer'], 1)
plt.plot(combined_data['avg_hr'], m * combined_data['avg_hr'] + b, color='red',
label=f'Trendlinie (Kor = {correlation:.2f})')
plt.legend()
plt.show()

View File

@ -1,53 +0,0 @@
Datum;In Ruhe;Hoch;week;start_date;avg_hr
Okt 4-10;67.0;130.0;40;2024-10-04;98.5
Sep 27 - Okt 3;67.0;143.0;39;2024-09-27;105.0
Sep 20-26;66.0;149.0;38;2024-09-20;107.5
Sep 13-19;66.0;144.0;37;2024-09-13;105.0
Sep 6-12;62.0;132.0;36;2024-09-06;97.0
Aug 30 - Sep 5;64.0;141.0;35;2024-08-30;102.5
Aug 23-29;67.0;150.0;34;2024-08-23;108.5
Aug 16-22;63.0;143.0;33;2024-08-16;103.0
Aug 9-15;69.0;141.0;32;2024-08-09;105.0
Aug 2-8;67.0;140.0;31;2024-08-02;103.5
Jul 26 - Aug 1;67.0;147.0;30;2024-07-26;107.0
Jul 19-25;69.0;136.0;29;2024-07-19;102.5
Jul 12-18;66.0;151.0;28;2024-07-12;108.5
Jul 5-11;67.0;146.0;27;2024-07-05;106.5
Jun 28 - Jul 4;66.0;157.0;26;2024-06-28;111.5
Jun 21-27;64.0;141.0;25;2024-06-21;102.5
Jun 14-20;70.0;145.0;24;2024-06-14;107.5
Jun 7-13;69.0;134.0;23;2024-06-07;101.5
Mai 31 - Jun 6;70.0;139.0;22;2024-05-31;104.5
Mai 24-30;72.0;142.0;21;2024-05-24;107.0
Mai 17-23;72.0;135.0;20;2024-05-17;103.5
Mai 10-16;71.0;147.0;19;2024-05-10;109.0
Mai 3-9;73.0;142.0;18;2024-05-03;107.5
Apr 26 - Mai 2;69.0;151.0;17;2024-04-26;110.0
Apr 19-25;61.0;135.0;16;2024-04-19;98.0
Apr 12-18;58.0;140.0;15;2024-04-12;99.0
Apr 5-11;64.0;131.0;14;2024-04-05;97.5
Mrz 29 - Apr 4;63.0;139.0;13;2024-03-29;101.0
Mrz 22-28;65.0;135.0;12;2024-03-22;100.0
Mrz 15-21;66.0;137.0;11;2024-03-15;101.5
Mrz 8-14;62.0;136.0;10;2024-03-08;99.0
Mrz 1-7;70.0;134.0;9;2024-03-01;102.0
Feb 23-29;68.0;144.0;8;2024-02-23;106.0
Feb 16-22;71.0;132.0;7;2024-02-16;101.5
Feb 9-15;65.0;143.0;6;2024-02-09;104.0
Feb 2-8;66.0;133.0;5;2024-02-02;99.5
Jan 26 - Feb 1;59.0;142.0;4;2024-01-26;100.5
Jan 19-25;62.0;136.0;3;2024-01-19;99.0
Jan 12-18;60.0;134.0;2;2024-01-12;97.0
Jan 5-11;56.0;139.0;1;2024-01-05;97.5
Dez 29, 2023 - Jan 4, 2024;59.0;128.0;52;2024-12-29;93.5
Dez 22-28, 2023;52.0;124.0;51;2023-12-22;88.0
Dez 15-21, 2023;57.0;133.0;50;2023-12-15;95.0
Dez 8-14, 2023;65.0;133.0;49;2023-12-08;99.0
Dez 1-7, 2023;69.0;134.0;48;2023-12-01;101.5
Nov 24-30, 2023;68.0;139.0;47;2023-11-24;103.5
Nov 17-23, 2023;68.0;143.0;46;2023-11-17;105.5
Nov 10-16, 2023;64.0;144.0;45;2023-11-10;104.0
Nov 3-9, 2023;63.0;140.0;44;2023-11-03;101.5
Okt 27 - Nov 2, 2023;57.0;133.0;43;2023-10-27;95.0
Okt 20-26, 2023;55.0;138.0;42;2023-10-20;96.5
Okt 13-19, 2023;50.0;121.0;41;2023-10-13;85.5
1 Datum In Ruhe Hoch week start_date avg_hr
2 Okt 4-10 67.0 130.0 40 2024-10-04 98.5
3 Sep 27 - Okt 3 67.0 143.0 39 2024-09-27 105.0
4 Sep 20-26 66.0 149.0 38 2024-09-20 107.5
5 Sep 13-19 66.0 144.0 37 2024-09-13 105.0
6 Sep 6-12 62.0 132.0 36 2024-09-06 97.0
7 Aug 30 - Sep 5 64.0 141.0 35 2024-08-30 102.5
8 Aug 23-29 67.0 150.0 34 2024-08-23 108.5
9 Aug 16-22 63.0 143.0 33 2024-08-16 103.0
10 Aug 9-15 69.0 141.0 32 2024-08-09 105.0
11 Aug 2-8 67.0 140.0 31 2024-08-02 103.5
12 Jul 26 - Aug 1 67.0 147.0 30 2024-07-26 107.0
13 Jul 19-25 69.0 136.0 29 2024-07-19 102.5
14 Jul 12-18 66.0 151.0 28 2024-07-12 108.5
15 Jul 5-11 67.0 146.0 27 2024-07-05 106.5
16 Jun 28 - Jul 4 66.0 157.0 26 2024-06-28 111.5
17 Jun 21-27 64.0 141.0 25 2024-06-21 102.5
18 Jun 14-20 70.0 145.0 24 2024-06-14 107.5
19 Jun 7-13 69.0 134.0 23 2024-06-07 101.5
20 Mai 31 - Jun 6 70.0 139.0 22 2024-05-31 104.5
21 Mai 24-30 72.0 142.0 21 2024-05-24 107.0
22 Mai 17-23 72.0 135.0 20 2024-05-17 103.5
23 Mai 10-16 71.0 147.0 19 2024-05-10 109.0
24 Mai 3-9 73.0 142.0 18 2024-05-03 107.5
25 Apr 26 - Mai 2 69.0 151.0 17 2024-04-26 110.0
26 Apr 19-25 61.0 135.0 16 2024-04-19 98.0
27 Apr 12-18 58.0 140.0 15 2024-04-12 99.0
28 Apr 5-11 64.0 131.0 14 2024-04-05 97.5
29 Mrz 29 - Apr 4 63.0 139.0 13 2024-03-29 101.0
30 Mrz 22-28 65.0 135.0 12 2024-03-22 100.0
31 Mrz 15-21 66.0 137.0 11 2024-03-15 101.5
32 Mrz 8-14 62.0 136.0 10 2024-03-08 99.0
33 Mrz 1-7 70.0 134.0 9 2024-03-01 102.0
34 Feb 23-29 68.0 144.0 8 2024-02-23 106.0
35 Feb 16-22 71.0 132.0 7 2024-02-16 101.5
36 Feb 9-15 65.0 143.0 6 2024-02-09 104.0
37 Feb 2-8 66.0 133.0 5 2024-02-02 99.5
38 Jan 26 - Feb 1 59.0 142.0 4 2024-01-26 100.5
39 Jan 19-25 62.0 136.0 3 2024-01-19 99.0
40 Jan 12-18 60.0 134.0 2 2024-01-12 97.0
41 Jan 5-11 56.0 139.0 1 2024-01-05 97.5
42 Dez 29, 2023 - Jan 4, 2024 59.0 128.0 52 2024-12-29 93.5
43 Dez 22-28, 2023 52.0 124.0 51 2023-12-22 88.0
44 Dez 15-21, 2023 57.0 133.0 50 2023-12-15 95.0
45 Dez 8-14, 2023 65.0 133.0 49 2023-12-08 99.0
46 Dez 1-7, 2023 69.0 134.0 48 2023-12-01 101.5
47 Nov 24-30, 2023 68.0 139.0 47 2023-11-24 103.5
48 Nov 17-23, 2023 68.0 143.0 46 2023-11-17 105.5
49 Nov 10-16, 2023 64.0 144.0 45 2023-11-10 104.0
50 Nov 3-9, 2023 63.0 140.0 44 2023-11-03 101.5
51 Okt 27 - Nov 2, 2023 57.0 133.0 43 2023-10-27 95.0
52 Okt 20-26, 2023 55.0 138.0 42 2023-10-20 96.5
53 Okt 13-19, 2023 50.0 121.0 41 2023-10-13 85.5

View File

@ -1,53 +0,0 @@
Datum,Ø Score,Ø Qualität,Durchschnittliche Dauer,Ø Schlafenszeit,Ø Aufstehzeit,week,start_date
Okt 10-16,46,Schlecht,6h 11min,1:28,7:50,41,2024-10-10
Okt 3-9,56,Schlecht,6h 34min,0:33,7:22,40,2024-10-03
Sep 26 - Okt 2,52,Schlecht,6h 23min,0:00,6:37,39,2024-09-26
Sep 19-25,59,Schlecht,6h 41min,0:27,7:16,38,2024-09-19
Sep 12-18,59,Schlecht,6h 18min,0:48,7:12,37,2024-09-12
Sep 5-11,55,Schlecht,6h 19min,0:56,7:22,36,2024-09-05
Aug 29 - Sep 4,66,Ausreichend,7h 1min,0:21,7:31,35,2024-08-29
Aug 22-28,57,Schlecht,6h 17min,0:35,6:59,34,2024-08-22
Aug 15-21,72,Ausreichend,6h 36min,0:38,7:25,33,2024-08-15
Aug 8-14,56,Schlecht,5h 45min,0:16,6:06,32,2024-08-08
Aug 1-7,64,Ausreichend,7h 4min,0:39,8:10,31,2024-08-01
Jul 25-31,61,Ausreichend,6h 52min,0:40,7:56,30,2024-07-25
Jul 18-24,54,Schlecht,6h 26min,2:16,9:19,29,2024-07-18
Jul 11-17,74,Ausreichend,7h 10min,0:06,7:26,28,2024-07-11
Jul 4-10,58,Schlecht,7h 35min,0:45,9:05,27,2024-07-04
Jun 27 - Jul 3,60,Ausreichend,6h 8min,1:22,7:42,26,2024-06-27
Jun 20-26,69,Ausreichend,6h 30min,0:19,6:58,25,2024-06-20
Jun 13-19,59,Schlecht,6h 1min,0:25,6:33,24,2024-06-13
Jun 6-12,60,Ausreichend,6h 22min,0:02,6:30,23,2024-06-06
Mai 30 - Jun 5,60,Ausreichend,6h 33min,0:34,7:15,22,2024-05-30
Mai 23-29,51,Schlecht,6h 47min,0:56,7:54,21,2024-05-23
Mai 16-22,50,Schlecht,5h 51min,1:13,7:08,20,2024-05-16
Mai 9-15,55,Schlecht,6h 21min,0:58,7:23,19,2024-05-09
Mai 2-8,40,Schlecht,5h 36min,0:39,6:19,18,2024-05-02
Apr 25 - Mai 1,55,Schlecht,6h 2min,1:18,7:26,17,2024-04-25
Apr 18-24,56,Schlecht,6h 28min,3:11,9:55,16,2024-04-18
Apr 11-17,56,Schlecht,6h 17min,1:23,7:51,15,2024-04-11
Apr 4-10,62,Ausreichend,6h 18min,0:39,7:10,14,2024-04-04
Mrz 28 - Apr 3,68,Ausreichend,6h 50min,1:45,8:51,13,2024-03-28
Mrz 21-27,60,Ausreichend,6h 9min,0:56,7:13,12,2024-03-21
Mrz 14-20,54,Schlecht,6h 11min,1:03,7:24,11,2024-03-14
Mrz 7-13,54,Schlecht,6h 22min,0:49,7:17,10,2024-03-07
Feb 29 - Mrz 6,50,Schlecht,6h 4min,0:56,7:09,9,2024-02-29
Feb 22-28,61,Ausreichend,7h 11min,0:08,7:25,8,2024-02-22
Feb 15-21,44,Schlecht,6h 58min,0:19,7:51,7,2024-02-15
Feb 8-14,50,Schlecht,8h 17min,0:09,8:47,6,2024-02-08
Feb 1-7,43,Schlecht,6h 12min,1:06,7:25,5,2024-02-01
Jan 25-31,57,Schlecht,7h 21min,1:17,8:40,4,2024-01-25
Jan 18-24,51,Schlecht,6h 25min,0:56,7:26,3,2024-01-18
Jan 11-17,50,Schlecht,6h 27min,1:36,8:12,2,2024-01-11
Jan 4-10,59,Schlecht,6h 44min,1:26,8:24,1,2024-01-04
Dez 28, 2023 - Jan 3, 2024,54,Schlecht,7h 2min,52,2024-12-28
Dez 21-27, 2023,55,Schlecht,7h 16min,0:38,51,2024-12-21
Dez 14-20, 2023,56,Schlecht,7h 17min,0:31,50,2024-12-14
Dez 7-13, 2023,44,Schlecht,7h 53min,23:46,49,2024-12-07
Nov 30 - Dez 6, 2023,48,Schlecht,6h 51min,0:33,48,2024-11-30
Nov 23-29, 2023,48,Schlecht,7h 11min,0:21,47,2024-11-23
Nov 16-22, 2023,53,Schlecht,7h 7min,0:23,46,2024-11-16
Nov 9-15, 2023,47,Schlecht,7h 5min,0:19,45,2024-11-09
Nov 2-8, 2023,50,Schlecht,6h 2min,0:00,44,2024-11-02
Okt 26 - Nov 1, 2023,59,Schlecht,6h 39min,0:14,43,2024-10-26
Okt 19-25, 2023,48,Schlecht,6h 17min,0:46,42,2024-10-19
1 Datum Ø Score Ø Qualität Durchschnittliche Dauer Ø Schlafenszeit Ø Aufstehzeit week start_date
2 Okt 10-16 46 Schlecht 6h 11min 1:28 7:50 41 2024-10-10
3 Okt 3-9 56 Schlecht 6h 34min 0:33 7:22 40 2024-10-03
4 Sep 26 - Okt 2 52 Schlecht 6h 23min 0:00 6:37 39 2024-09-26
5 Sep 19-25 59 Schlecht 6h 41min 0:27 7:16 38 2024-09-19
6 Sep 12-18 59 Schlecht 6h 18min 0:48 7:12 37 2024-09-12
7 Sep 5-11 55 Schlecht 6h 19min 0:56 7:22 36 2024-09-05
8 Aug 29 - Sep 4 66 Ausreichend 7h 1min 0:21 7:31 35 2024-08-29
9 Aug 22-28 57 Schlecht 6h 17min 0:35 6:59 34 2024-08-22
10 Aug 15-21 72 Ausreichend 6h 36min 0:38 7:25 33 2024-08-15
11 Aug 8-14 56 Schlecht 5h 45min 0:16 6:06 32 2024-08-08
12 Aug 1-7 64 Ausreichend 7h 4min 0:39 8:10 31 2024-08-01
13 Jul 25-31 61 Ausreichend 6h 52min 0:40 7:56 30 2024-07-25
14 Jul 18-24 54 Schlecht 6h 26min 2:16 9:19 29 2024-07-18
15 Jul 11-17 74 Ausreichend 7h 10min 0:06 7:26 28 2024-07-11
16 Jul 4-10 58 Schlecht 7h 35min 0:45 9:05 27 2024-07-04
17 Jun 27 - Jul 3 60 Ausreichend 6h 8min 1:22 7:42 26 2024-06-27
18 Jun 20-26 69 Ausreichend 6h 30min 0:19 6:58 25 2024-06-20
19 Jun 13-19 59 Schlecht 6h 1min 0:25 6:33 24 2024-06-13
20 Jun 6-12 60 Ausreichend 6h 22min 0:02 6:30 23 2024-06-06
21 Mai 30 - Jun 5 60 Ausreichend 6h 33min 0:34 7:15 22 2024-05-30
22 Mai 23-29 51 Schlecht 6h 47min 0:56 7:54 21 2024-05-23
23 Mai 16-22 50 Schlecht 5h 51min 1:13 7:08 20 2024-05-16
24 Mai 9-15 55 Schlecht 6h 21min 0:58 7:23 19 2024-05-09
25 Mai 2-8 40 Schlecht 5h 36min 0:39 6:19 18 2024-05-02
26 Apr 25 - Mai 1 55 Schlecht 6h 2min 1:18 7:26 17 2024-04-25
27 Apr 18-24 56 Schlecht 6h 28min 3:11 9:55 16 2024-04-18
28 Apr 11-17 56 Schlecht 6h 17min 1:23 7:51 15 2024-04-11
29 Apr 4-10 62 Ausreichend 6h 18min 0:39 7:10 14 2024-04-04
30 Mrz 28 - Apr 3 68 Ausreichend 6h 50min 1:45 8:51 13 2024-03-28
31 Mrz 21-27 60 Ausreichend 6h 9min 0:56 7:13 12 2024-03-21
32 Mrz 14-20 54 Schlecht 6h 11min 1:03 7:24 11 2024-03-14
33 Mrz 7-13 54 Schlecht 6h 22min 0:49 7:17 10 2024-03-07
34 Feb 29 - Mrz 6 50 Schlecht 6h 4min 0:56 7:09 9 2024-02-29
35 Feb 22-28 61 Ausreichend 7h 11min 0:08 7:25 8 2024-02-22
36 Feb 15-21 44 Schlecht 6h 58min 0:19 7:51 7 2024-02-15
37 Feb 8-14 50 Schlecht 8h 17min 0:09 8:47 6 2024-02-08
38 Feb 1-7 43 Schlecht 6h 12min 1:06 7:25 5 2024-02-01
39 Jan 25-31 57 Schlecht 7h 21min 1:17 8:40 4 2024-01-25
40 Jan 18-24 51 Schlecht 6h 25min 0:56 7:26 3 2024-01-18
41 Jan 11-17 50 Schlecht 6h 27min 1:36 8:12 2 2024-01-11
42 Jan 4-10 59 Schlecht 6h 44min 1:26 8:24 1 2024-01-04
43 Dez 28 2023 - Jan 3 2024 54 Schlecht 7h 2min 52 2024-12-28
44 Dez 21-27 2023 55 Schlecht 7h 16min 0:38 51 2024-12-21
45 Dez 14-20 2023 56 Schlecht 7h 17min 0:31 50 2024-12-14
46 Dez 7-13 2023 44 Schlecht 7h 53min 23:46 49 2024-12-07
47 Nov 30 - Dez 6 2023 48 Schlecht 6h 51min 0:33 48 2024-11-30
48 Nov 23-29 2023 48 Schlecht 7h 11min 0:21 47 2024-11-23
49 Nov 16-22 2023 53 Schlecht 7h 7min 0:23 46 2024-11-16
50 Nov 9-15 2023 47 Schlecht 7h 5min 0:19 45 2024-11-09
51 Nov 2-8 2023 50 Schlecht 6h 2min 0:00 44 2024-11-02
52 Okt 26 - Nov 1 2023 59 Schlecht 6h 39min 0:14 43 2024-10-26
53 Okt 19-25 2023 48 Schlecht 6h 17min 0:46 42 2024-10-19

View File

@ -0,0 +1,42 @@
Woche,avg_hr,Durchschnittliche Dauer
W40-2024,98.5,6h 34min
W39-2024,105.0,6h 23min
W38-2024,107.5,6h 41min
W37-2024,105.0,6h 18min
W36-2024,97.0,6h 19min
W35-2024,102.5,7h 1min
W34-2024,108.5,6h 17min
W33-2024,103.0,6h 36min
W32-2024,105.0,5h 45min
W31-2024,103.5,7h 4min
W30-2024,107.0,6h 52min
W29-2024,102.5,6h 26min
W28-2024,108.5,7h 10min
W27-2024,106.5,7h 35min
W26-2024,111.5,6h 8min
W25-2024,102.5,6h 30min
W24-2024,107.5,6h 1min
W23-2024,101.5,6h 22min
W22-2024,104.5,6h 33min
W21-2024,107.0,6h 47min
W20-2024,103.5,5h 51min
W19-2024,109.0,6h 21min
W18-2024,107.5,5h 36min
W17-2024,110.0,6h 2min
W16-2024,98.0,6h 28min
W15-2024,99.0,6h 17min
W14-2024,97.5,6h 18min
W13-2024,101.0,6h 50min
W12-2024,100.0,6h 9min
W11-2024,101.5,6h 11min
W10-2024,99.0,6h 22min
W9-2024,102.0,6h 4min
W8-2024,106.0,7h 11min
W7-2024,101.5,6h 58min
W6-2024,104.0,8h 17min
W5-2024,99.5,6h 12min
W4-2024,100.5,7h 21min
W3-2024,99.0,6h 25min
W2-2024,97.0,6h 27min
W1-2024,97.5,6h 44min
W52-2024,93.5,54
1 Woche avg_hr Durchschnittliche Dauer
2 W40-2024 98.5 6h 34min
3 W39-2024 105.0 6h 23min
4 W38-2024 107.5 6h 41min
5 W37-2024 105.0 6h 18min
6 W36-2024 97.0 6h 19min
7 W35-2024 102.5 7h 1min
8 W34-2024 108.5 6h 17min
9 W33-2024 103.0 6h 36min
10 W32-2024 105.0 5h 45min
11 W31-2024 103.5 7h 4min
12 W30-2024 107.0 6h 52min
13 W29-2024 102.5 6h 26min
14 W28-2024 108.5 7h 10min
15 W27-2024 106.5 7h 35min
16 W26-2024 111.5 6h 8min
17 W25-2024 102.5 6h 30min
18 W24-2024 107.5 6h 1min
19 W23-2024 101.5 6h 22min
20 W22-2024 104.5 6h 33min
21 W21-2024 107.0 6h 47min
22 W20-2024 103.5 5h 51min
23 W19-2024 109.0 6h 21min
24 W18-2024 107.5 5h 36min
25 W17-2024 110.0 6h 2min
26 W16-2024 98.0 6h 28min
27 W15-2024 99.0 6h 17min
28 W14-2024 97.5 6h 18min
29 W13-2024 101.0 6h 50min
30 W12-2024 100.0 6h 9min
31 W11-2024 101.5 6h 11min
32 W10-2024 99.0 6h 22min
33 W9-2024 102.0 6h 4min
34 W8-2024 106.0 7h 11min
35 W7-2024 101.5 6h 58min
36 W6-2024 104.0 8h 17min
37 W5-2024 99.5 6h 12min
38 W4-2024 100.5 7h 21min
39 W3-2024 99.0 6h 25min
40 W2-2024 97.0 6h 27min
41 W1-2024 97.5 6h 44min
42 W52-2024 93.5 54

View File

@ -0,0 +1,53 @@
Woche,avg_hr
W40-2024,98.5
W39-2024,105.0
W38-2024,107.5
W37-2024,105.0
W36-2024,97.0
W35-2024,102.5
W34-2024,108.5
W33-2024,103.0
W32-2024,105.0
W31-2024,103.5
W30-2024,107.0
W29-2024,102.5
W28-2024,108.5
W27-2024,106.5
W26-2024,111.5
W25-2024,102.5
W24-2024,107.5
W23-2024,101.5
W22-2024,104.5
W21-2024,107.0
W20-2024,103.5
W19-2024,109.0
W18-2024,107.5
W17-2024,110.0
W16-2024,98.0
W15-2024,99.0
W14-2024,97.5
W13-2024,101.0
W12-2024,100.0
W11-2024,101.5
W10-2024,99.0
W9-2024,102.0
W8-2024,106.0
W7-2024,101.5
W6-2024,104.0
W5-2024,99.5
W4-2024,100.5
W3-2024,99.0
W2-2024,97.0
W1-2024,97.5
W52-2024,93.5
W51-2023,88.0
W50-2023,95.0
W49-2023,99.0
W48-2023,101.5
W47-2023,103.5
W46-2023,105.5
W45-2023,104.0
W44-2023,101.5
W43-2023,95.0
W42-2023,96.5
W41-2023,85.5
1 Woche avg_hr
2 W40-2024 98.5
3 W39-2024 105.0
4 W38-2024 107.5
5 W37-2024 105.0
6 W36-2024 97.0
7 W35-2024 102.5
8 W34-2024 108.5
9 W33-2024 103.0
10 W32-2024 105.0
11 W31-2024 103.5
12 W30-2024 107.0
13 W29-2024 102.5
14 W28-2024 108.5
15 W27-2024 106.5
16 W26-2024 111.5
17 W25-2024 102.5
18 W24-2024 107.5
19 W23-2024 101.5
20 W22-2024 104.5
21 W21-2024 107.0
22 W20-2024 103.5
23 W19-2024 109.0
24 W18-2024 107.5
25 W17-2024 110.0
26 W16-2024 98.0
27 W15-2024 99.0
28 W14-2024 97.5
29 W13-2024 101.0
30 W12-2024 100.0
31 W11-2024 101.5
32 W10-2024 99.0
33 W9-2024 102.0
34 W8-2024 106.0
35 W7-2024 101.5
36 W6-2024 104.0
37 W5-2024 99.5
38 W4-2024 100.5
39 W3-2024 99.0
40 W2-2024 97.0
41 W1-2024 97.5
42 W52-2024 93.5
43 W51-2023 88.0
44 W50-2023 95.0
45 W49-2023 99.0
46 W48-2023 101.5
47 W47-2023 103.5
48 W46-2023 105.5
49 W45-2023 104.0
50 W44-2023 101.5
51 W43-2023 95.0
52 W42-2023 96.5
53 W41-2023 85.5

View File

@ -0,0 +1,53 @@
Woche,Durchschnittliche Dauer
W41-2024,6h 11min
W40-2024,6h 34min
W39-2024,6h 23min
W38-2024,6h 41min
W37-2024,6h 18min
W36-2024,6h 19min
W35-2024,7h 1min
W34-2024,6h 17min
W33-2024,6h 36min
W32-2024,5h 45min
W31-2024,7h 4min
W30-2024,6h 52min
W29-2024,6h 26min
W28-2024,7h 10min
W27-2024,7h 35min
W26-2024,6h 8min
W25-2024,6h 30min
W24-2024,6h 1min
W23-2024,6h 22min
W22-2024,6h 33min
W21-2024,6h 47min
W20-2024,5h 51min
W19-2024,6h 21min
W18-2024,5h 36min
W17-2024,6h 2min
W16-2024,6h 28min
W15-2024,6h 17min
W14-2024,6h 18min
W13-2024,6h 50min
W12-2024,6h 9min
W11-2024,6h 11min
W10-2024,6h 22min
W9-2024,6h 4min
W8-2024,7h 11min
W7-2024,6h 58min
W6-2024,8h 17min
W5-2024,6h 12min
W4-2024,7h 21min
W3-2024,6h 25min
W2-2024,6h 27min
W1-2024,6h 44min
W52-2024,54
W51-2024,Schlecht
W50-2024,Schlecht
W49-2024,Schlecht
W48-2024,Schlecht
W47-2024,Schlecht
W46-2024,Schlecht
W45-2024,Schlecht
W44-2024,Schlecht
W43-2024,Schlecht
W42-2024,Schlecht
1 Woche Durchschnittliche Dauer
2 W41-2024 6h 11min
3 W40-2024 6h 34min
4 W39-2024 6h 23min
5 W38-2024 6h 41min
6 W37-2024 6h 18min
7 W36-2024 6h 19min
8 W35-2024 7h 1min
9 W34-2024 6h 17min
10 W33-2024 6h 36min
11 W32-2024 5h 45min
12 W31-2024 7h 4min
13 W30-2024 6h 52min
14 W29-2024 6h 26min
15 W28-2024 7h 10min
16 W27-2024 7h 35min
17 W26-2024 6h 8min
18 W25-2024 6h 30min
19 W24-2024 6h 1min
20 W23-2024 6h 22min
21 W22-2024 6h 33min
22 W21-2024 6h 47min
23 W20-2024 5h 51min
24 W19-2024 6h 21min
25 W18-2024 5h 36min
26 W17-2024 6h 2min
27 W16-2024 6h 28min
28 W15-2024 6h 17min
29 W14-2024 6h 18min
30 W13-2024 6h 50min
31 W12-2024 6h 9min
32 W11-2024 6h 11min
33 W10-2024 6h 22min
34 W9-2024 6h 4min
35 W8-2024 7h 11min
36 W7-2024 6h 58min
37 W6-2024 8h 17min
38 W5-2024 6h 12min
39 W4-2024 7h 21min
40 W3-2024 6h 25min
41 W2-2024 6h 27min
42 W1-2024 6h 44min
43 W52-2024 54
44 W51-2024 Schlecht
45 W50-2024 Schlecht
46 W49-2024 Schlecht
47 W48-2024 Schlecht
48 W47-2024 Schlecht
49 W46-2024 Schlecht
50 W45-2024 Schlecht
51 W44-2024 Schlecht
52 W43-2024 Schlecht
53 W42-2024 Schlecht