# Import & Anzeige Dataframe

import pandas as pd

# CSV-Datei einlesen
city_name = 'konstanz'
df = pd.read_csv('baumkataster_stadt_' + city_name + '.csv', sep=';')

# Tabelle anzeigen
df




# Hinzufügen neuer Spalte 'ID'
# 'ID'-Spalte hinzufügen
df.insert(0, 'ID', range(1, len(df) + 1))

# Tabelle anzeigen
df





# Berechnung durchschnittlicher Höhen von Laub- / Nadelbaum aller Bäume
#Datensatz welcher ALLE Bäume der verschiedenen Städte enthält importieren: 
# CSV-Datei einlesen
city_name2 = 'TOTAL'
df2 = pd.read_csv('baumkataster_' + city_name2 + '.csv', sep=';')

# Tabelle anzeigen
df2

# Durchschnittswerte der Baumhöhe für Laub- und Nadelbäume berechnen
avg_height_laubbäume = round(df2[df2['Baumtyp'] == 'Laubbaum']['Baumhöhe'].mean(), 2)
avg_height_nadelbäume = round(df2[df2['Baumtyp'] == 'Nadelbaum']['Baumhöhe'].mean(), 2)

print(f'Durchschnittliche Höhe der Laubbäume: {avg_height_laubbäume}')
print(f'Durchschnittliche Höhe der Nadelbäume: {avg_height_nadelbäume}')




# Bestimmung der Klassenzugehörigkeit
# Funktion zur Bestimmung der Klasse
def classify_tree(row):
    if row['Baumart deutsch'] == 'Gehölzfläche':
        if row['Baumtyp'] == 'Laubbaum':
            return 'Busch/Hecke (Laub/Hartlaub)'
        else: 
            return 'Busch/Hecke (Nadel)'
    elif row['Baumart deutsch'] == 'Unbekannt':
        return 'Unbekannt'
    elif row['Baumtyp'] == 'Laubbaum':
        if row['Baumhöhe'] >= avg_height_laubbäume:
            return 'Großer Laubbaum'
        else:
            return 'Kleiner Laubbaum'
    elif row['Baumtyp'] == 'Nadelbaum':
        if row['Baumhöhe'] >= avg_height_nadelbäume:
            return 'Großer Nadelbaum'
        else:
            return 'Kleiner Nadelbaum'
    return 'Unbekannt'

# 'Klasse'-Spalte hinzufügen
df['Klasse'] = df.apply(classify_tree, axis=1)

# Tabelle anzeigen
df




# Export des Baumkatasters
df.to_csv('baumkataster_classified_' + city_name + '.csv', index=False)
