diff --git a/src/T18_MergingEx.py b/src/T18_MergingEx.py index 4f728e0..a9228c7 100644 --- a/src/T18_MergingEx.py +++ b/src/T18_MergingEx.py @@ -41,8 +41,18 @@ print(positionen) # Aufgabe 1: Bestellungen mit Kundennamen +# - Nur bestellungen von existierenden Kunden +order_customer = pd.merge(bestellungen, kunden, on="kunden_id", how="inner") +print(order_customer) + # Aufgabe 2: Vollständige Bestellübersicht (jede bestellung mit kunde und mit position mergen) -# Aufgabe 3: Kunden ohne Bestellungen finden [isna()] +step1 = pd.merge(bestellungen, kunden, on="kunden_id", how="left") +result = pd.merge(step1, positionen, on="bestell_id", how="left") +print(result) +# Aufgabe 3: Kunden ohne Bestellungen finden [.isna()] +kunden_ohne_best = pd.merge(kunden, bestellungen, on="kunden_id", how="left") +print(kunden_ohne_best) +print(kunden_ohne_best[kunden_ohne_best["bestell_id"].isna()][["kunden_id", "name"]]) diff --git a/src/T19_geopandas.py b/src/T19_geopandas.py new file mode 100644 index 0000000..ae24391 --- /dev/null +++ b/src/T19_geopandas.py @@ -0,0 +1,62 @@ +# pip/conda install geopandas + +import geopandas as gpd +import matplotlib.pyplot as plt + + +world = gpd.read_file("../data/110m_cultural.zip", layer="ne_110m_admin_0_countries") + +print(list(world.columns)) + +print(world.iloc[0, -1]) +print(world.iloc[0]["NAME"]) + +print() +print(world.crs) + +# EPSG:4326 (latitude/longitude) + +# epsg:3587 Mercator + +w2 = world.to_crs("epsg:3587") +print(w2.iloc[0, -1]) + +print(world[["NAME", "CONTINENT", "POP_EST", "GDP_MD", "geometry"]].head()) + +# wie groß ist jedes Land? +world_proj_cylinder = world.to_crs("epsg:3587") # zylinder +world_proj_cylinder["area_sq_km"] = world_proj_cylinder.geometry.area / 1_000_000 +print(world_proj_cylinder[["NAME", "area_sq_km"]].head(10)) + + +cities = gpd.read_file("../data/110m_cultural.zip", + layer="ne_110m_populated_places") + +print(cities[["NAME", "geometry"]].head()) +print(len(cities)) + +fig, ax = plt.subplots() +world.plot(column="CONTINENT", legend=True, ax=ax) +cities.plot(ax=ax, color="red") +plt.show() + +# Nachbar von Land X suchen +def find_neighbouring_countries(df, country_name): + target = df[df["NAME"] == country_name] + + if len(target) == 0: + print(f"{country_name} not found") + return [] + + # sjoin + neighbours = [] + for idx, country in df.iterrows(): + if country["NAME"] == country_name: + continue + if target.geometry.iloc[0].touches(country.geometry): + neighbours.append(country["NAME"]) + + return neighbours + +res = find_neighbouring_countries(world, "Spain") +print(res) \ No newline at end of file