Ein frei kopier- und anpassbares Lehrmittel von eduskript.org

Weltbank-Indikatoren Projekt: Daten mit SQL in Python

Einführung: Ihre Mission

Mit Python und dem Modul sqlite3 kann man sich mit einer SQL-Datenbank verbinden, die als Datei vorliegt. SO kann man komplexe Datenanalysen durchführen, ohne einen separaten Datenbankserver einrichten zu müssen - alles in einer einzigen Python-Anwendung und mit normalem SQL.

Für diesen Auftrag erhalten Sie die ultimative Trivia-Datenbank in SQLite: Über 200 Entwicklungsindikatoren der Weltbank für alle Länder der Welt seit 1960. Diese Datenbank enthält Informationen zu zahlreichen Aspekten der Entwicklung der Menschheit - wie Wirtschaftswachstum, Bildung, Gesundheit, Umwelt und vieles mehr.

Entwickeln Sie ein eigenes Python-Projekt, das diese Datenbank mit SQL nutzt, um interessante Erkenntnisse zu gewinnen und/oder eine interaktive Anwendung zu erstellen. Sie sind sehr frei und dürfen Ihre Anwendung gestalten, wie Sie wollen!

Die Datenbank

Die wichtigste Tabelle der Datenbank heisst indicators. Ein kleiner Auszug dieser Tabelle, damit Sie sich das vorstellen können: Hier habe ich die Daten der Schweiz im Jahr 2020 selektiert. Jedes Land hat für jedes Jahr seit 1960 einen solchen Datensatz mit ganz vielen Spalten für jeden Entwicklungsindikator - über 200 Attribute! Sie finden am Ende dieser Seite eine Erklärung aller Indikatoren der Tabelle "indicators".

Zum Verständnis: Sie könnten diese Reihe über die Schweiz also mit folgendem SQL-Query selektieren:

SELECT *
FROM indicators
WHERE year = 2020
AND country = "che"

Nützliche Hinweise zur Datenbank:

  • Die Daten sind nicht immer vollständig, speziell wenn Sie in der Zeit vor 1990 zurückgehen. WHERE ... NOT NULL is your friend.
  • Nutzen Sie künstliche Intelligenz, um den Beispielcode nachzuvollziehen. z.B. "Wir machen in den Schule ein Projekt mit SQLite in Python und ich verstehe diese Zeilen im Beispielcode nicht":
    conn = sqlite3.connect('world_bank_indicators.db')
    cursor = conn.cursor()
    

Setup

Erklärvideo

Ich erklären Ihnen hier, wie Sie das grundsätzliche Setup machen, damit Sie in Python Daten aus der Datenbank abrufen können. Die Struktur meines Beispielprogramms ist sehr einfach.

  1. Projektordner erstellen: Erstellen Sie einen neuen, leeren Ordner für Ihr Projekt, z.B. worldbank_project
  2. SQLite-Datenbank: Laden Sie die SQLite-Datenbank herunter und speichern Sie die Datei im Projektordner als world_bank_indicators.db
  3. Öffnen Sie den Ordner in Visual Studio Code: Über Datei (File) > Ordner öffnen (Open Folder)
  4. Python-Beispielcode ausführen: Erstellen Sie eine Python-Datei namens example.py und fügen Sie den Beispielcode ein, um sicherzustellen, dass alles funktioniert.
  5. Python-Datei erstellen: Erstellen Sie eine neue Python-Datei, z.B. main.py, in Ihrem Projektordner
Beispiel-Code mit Erklärungen für example.py

Im Beispiel werden für Strings oft sogenannte f-Strings verwendet, die vorne an den Anführungszeichen noch ein f haben, also z.B. f"ein Beispiel". F-Strings sind eine einfache Art, den Wert von Variabeln im String schön zu formatieren. Falls Sie das interessiert, schauen Sie sich die f-Strings-Dokumentation an. (Generell ist die Python-Dokumentation Spitze!)

import sqlite3
import os

# Aktuelles Verzeichnis dahin wechseln, wo das Script ist
os.chdir(os.path.dirname(os.path.abspath(__file__)))

# Ich nutze print anstatt Kommentare, damit Sie in der Ausgabe sehen können, was passiert

print("Wir öffnen die Datenbank, das gibt uns ein Cursor-Objekt, mit dem wir SQL-Abfragen durchführen können")
conn = sqlite3.connect('world_bank_indicators.db')
cursor = conn.cursor()

print("\n---------- EINFACHE ABFRAGE ------------")
print("Jetzt führen wir eine SQL-Abfrage aus, wie Sie es gelernt haben. (\"\"\" ist übrigens ein mehrzeiliger String)")
cursor.execute("""
    SELECT country, year, gdp_per_capita
    FROM indicators
    WHERE year = 2015 AND gdp_per_capita IS NOT NULL
    ORDER BY gdp_per_capita DESC
    LIMIT 3
""")

print("Ergebnisse abrufen und in 'results' speichern")
print()
print("---------- DAS 'ROHE' ERGEBNIS ------------")
results = cursor.fetchall()
print("Wenn wir die rohen Ergebnisse anzeigen, sehen Sie, dass die Reihen des Ergebnisses in einer Liste von unveränderbaren Unterlisten (sogenannten 'Tupeln') geliefert werden:")
print(results)
print()

print("---------- DAS 'FORMATIERTE' ERGEBNIS ------------")
print("Wir können mit einer for-Schleife durch die äussere Liste iterieren und die Inhalte der inneren Tupel mit einem Index adressieren wie bei Listen")
for reihe in results:
    print("----> Aktuelle Reihe:", reihe)
    print("Das Land:", reihe[0])
    print("Das Jahr:", reihe[1])
    print("Das BIP pro Kopf:", reihe[2])
print()

print("Wir können mit der for-Schleife das Tupel jeder Reihe auch direkt auf drei Variabeln verteilen (das nennt man 'destrukturieren' und es ist doch einfach wunderschön)")
for country, year, gdp in results:
    print(f"{country}: ${gdp:,.2f}")

print("\n---------- FEHLERBEHANDLUNG ------------")
print("Oft sind Daten nicht vollständig. Wir sollten prüfen, ob Werte fehlen (NULL in SQL, None in Python):")

def sicherer_zugriff(wert, formatierung=None):
    """Gibt 'Keine Daten' zurück, wenn der Wert None ist, sonst den formatierten Wert"""
    if wert is None:
        return "Keine Daten"
    elif formatierung == "währung":
        return f"${wert:,.2f}"
    elif formatierung == "prozent":
        return f"{wert:.1f}%"
    else:
        return wert

# Beispiel mit potenziell fehlenden Daten
cursor.execute("""
    SELECT country, gdp_per_capita, literacy_total
    FROM indicators
    WHERE year = 2010
    LIMIT 5
""")

print("\nBeispiel für den Umgang mit fehlenden Daten:")
for land, gdp, literacy in cursor.fetchall():
    print(f"Land: {land}, BIP pro Kopf: {sicherer_zugriff(gdp, 'währung')}, Alphabetisierungsrate: {sicherer_zugriff(literacy, 'prozent')}")

print("\n---------- KOMPLEXERE SQL-ABFRAGEN ------------")

print("\nBeispiel 1: Mehrere Bedingungen kombinieren")
cursor.execute("""
    SELECT country, birth_rate, death_rate, birth_rate - death_rate AS natural_growth
    FROM indicators
    WHERE year = 2015
    AND birth_rate IS NOT NULL
    AND death_rate IS NOT NULL
    ORDER BY natural_growth DESC
    LIMIT 5
""")

print("\nLänder mit dem höchsten natürlichen Bevölkerungswachstum (2015):")
for land, geburtenrate, sterberate, wachstum in cursor.fetchall():
    print(f"{land}: Geburtenrate {geburtenrate:.1f}, Sterberate {sterberate:.1f}, Natürliches Wachstum {wachstum:.1f}")

print("\nBeispiel 2: Aggregation und Gruppierung")
print("Aggregatfunktionen wie COUNT, AVG, MAX, MIN oder SUM helfen uns, Daten zusammenzufassen")
print("Hier ein Beispiel für die durchschnittliche BIP-Wachstumsrate der letzten 10 Jahre für verschiedene Länder:")

cursor.execute("""
    SELECT
        country,
        AVG(gdp_growth) AS durchschnitt_wachstum,
        COUNT(gdp_growth) AS anzahl_datenpunkte
    FROM indicators
    WHERE year BETWEEN 2012 AND 2021
      AND gdp_growth IS NOT NULL
    GROUP BY country
    HAVING COUNT(gdp_growth) >= 5  -- Nur Länder mit mindestens 5 Datenpunkten
    ORDER BY durchschnitt_wachstum DESC
    LIMIT 10
""")

print("\nTop 10 Länder nach durchschnittlichem BIP-Wachstum (2012-2021):")
print("| Land | Durchschnittliches Wachstum (%) | Anzahl Datenpunkte |")
print("|------|--------------------------------|-------------------|")
for land, wachstum, anzahl in cursor.fetchall():
    print(f"| {land:<4} | {wachstum:^30} | {anzahl:^19} |")

print("\nWir können auch die Länder mit dem niedrigsten Wachstum anzeigen:")
cursor.execute("""
    SELECT
        country,
        AVG(gdp_growth) AS durchschnitt_wachstum,
        COUNT(gdp_growth) AS anzahl_datenpunkte
    FROM indicators
    WHERE year BETWEEN 2012    AND 2021
      AND gdp_growth IS NOT NULL
    GROUP BY country
    HAVING COUNT(gdp_growth) >= 5
    ORDER BY durchschnitt_wachstum ASC
    LIMIT 5
""")

print("\nLänder mit dem niedrigsten durchschnittlichen BIP-Wachstum (2012-2021):")
for land, wachstum, anzahl in cursor.fetchall():
    print(f"{land}: {wachstum}% (basierend auf {anzahl} Jahren mit Daten)")

print("\n---------- BENUTZERINTERAKTION ------------")
print("Wir können das Programm interaktiv gestalten, indem wir den Benutzer nach Eingaben fragen")
print("Beispiel: Ein Benutzer gibt ein Jahr ein und sieht die Top 3 Länder mit der höchsten Alphabetisierungsrate")

def interaktives_beispiel():
    jahr = input("\nGeben Sie ein Jahr zwischen 1960 und 2022 ein: ")
    if not jahr.isdigit() or int(jahr) < 1960 or int(jahr) > 2022:
        print("Ungültige Eingabe! Bitte geben Sie ein Jahr zwischen 1960 und 2022 ein.")
        return

    # Parametrisierte Abfrage
    cursor.execute("""
        SELECT country, literacy_total
        FROM indicators
        WHERE year = ? AND literacy_total IS NOT NULL
        ORDER BY literacy_total DESC
        LIMIT 3
    """, [jahr])  # Parameter als Liste (oder Tupel) übergeben

    results = cursor.fetchall()

    if not results:
        print(f"Keine Daten für das Jahr {jahr} gefunden!")
        return

    print(f"\nTop 3 Länder mit der höchsten Alphabetisierungsrate im Jahr {jahr}:")
    for i, (land, rate) in enumerate(results, 1):
        print(f"{i}. {land}: {rate:.1f}%")

# Kommentieren Sie die nächste Zeile aus, wenn Sie die interaktive Funktion ausprobieren möchten
interaktives_beispiel()

# Verbindung schliessen
conn.close()

print("\nViel Erfolg bei Ihrem Projekt!")

Projektideen

Hier sind einige Vorschläge als Inspiration.

Interaktive Daten-Präsentation

Erstellen Sie eine textbasierte Präsentation, die den Benutzer durch eine Datenanalyse zu einem bestimmten Thema führt.

  • Beispiel: "Ich habe mich für die Geburtenrate im Nahen Osten interessiert und wollte das genauer untersuchen. Willkommen zu meiner interaktiven Präsentation - drücken Sie Enter, wenn Sie bereit sind."
  • Präsentieren Sie schrittweise Daten, Vergleiche und Schlussfolgerungen.
  • Tipp: Sie können die Funktion input() gebrauchen, um Benutzereingaben zu speichern - oder auch einfach, um Ihr Programm anzuhalten, bis die Benutzer Enter drücken.

Interaktives Trivia-Spiel

Entwickeln Sie eine Konsolenanwendung, die zufällige oder thematisch gruppierte Fragen stellt und die Antworten des Benutzers überprüft.

  • Beispielfragen: "Welches Land hatte im Jahr 2000 am meisten Einwohner?", "In welchem Land hatte der kleinste Teil der Bevölkerung Zugang zu Elektrizität im Jahr 2015?"
  • Fügen Sie eine Funktion hinzu, die dem Benutzer nach der Beantwortung zusätzliche Informationen anzeigt.
  • Sie könnten auch verschiedene Schwierigkeitsgrade und einen Punktestand implementieren.

Erste Schritte und Beispiele im Erklärvideo

Ideen für ambitionierte Programmierer

Sie können dieses Projekt gern nutzen, um sich neue Kenntnisse im Programmieren beizubringen. Diese Ideen werden Ihr Zeitbudget sprengen. Tun Sie das nur, wenn Sie Spass daran haben.

Datenvisualisierung

Erstellen Sie eine Anwendung, die ausgewählte Daten aus der Datenbank visualisiert.

  • Nutzen Sie Turtle für einfache Grafiken oder recherchieren Sie fortgeschrittenere Bibliotheken wie Matplotlib oder Plotly
  • Visualisieren Sie Trends über Zeit, geografische Verteilungen oder Korrelationen zwischen verschiedenen Indikatoren
  • Ermöglichen Sie dem Benutzer, verschiedene Visualisierungsoptionen auszuwählen

Grafische Benutzeroberfläche (GUI)

Für fortgeschrittene Lernende: Entwickeln Sie mit TkInter eine grafische Oberfläche für die Datenbank.

  • Erstellen Sie Suchfunktionen, Filter und Sortieroptionen
  • Zeigen Sie Ergebnisse in Tabellen an
  • Bieten Sie die Möglichkeit, ausgewählte Daten zu exportieren oder zu visualisieren

Webbasierte Anwendung

Entwickeln Sie mit Flask eine Webanwendung.

  • Stellen Sie eine Suchoberfläche bereit
  • Visualisieren Sie Daten im Browser
  • Bieten Sie interaktive Elemente wie Karten oder Diagramme an

Anforderungen und erwartete Projektelemente

Unabhängig von Ihrer gewählten Projektart sollten folgende Elemente enthalten sein:

  1. SQL-Abfragen: Mindestens 5 verschiedene SQL-Abfragen unterschiedlicher Komplexität, 2 davon mit Aggregatfunktionen
  2. Datenverarbeitung: Verarbeitung der abgefragten Daten mit print, if ... else oder Ähnlichem.
  3. Benutzerinteraktion: Eine Methode, mit der Benutzer mit Ihrem Programm interagieren können, z.B. mit input()
  4. Dokumentation: Kommentare im Code und eine README-Datei, die Ihr Projekt und Ihre Verwendung von KI erklärt
  5. Fehlerbehandlung: Denken Sie daran, dass Daten fehlen können, oder Ihre Nutzer auf eine Frage ungültiges Kauderwelsch eingeben könnten.

Bewertung

Die Note wird hauptsächlich durch die Qualität und das Niveau Ihres Produkts bestimmt. Allerdings führen wir ein 5 minütiges Code-Review über Teams durch, bei dem ich Ihnen Fragen zu Ihrem Code stelle - typischerweise zu den kniffligsten Stellen.

1. Bewertung des Produkts

Ihr Projekt wird nach folgenden Kriterien bewertet ( Bewertungsraster):

a. Konzept/Design, Originalität, Readme (40%)

  • Benutzerfreundlichkeit und Gestaltung der Anwendung
  • Originalität der Projektidee
  • Eine Readme-Datei, die mindestens erklärt, was das Programm ist, wie man es ausführt, und wie Sie KI verwendet haben. Die Datei kann als readme.txt, readme.pdf, oder readme.md vorliegen. (Für proprietäre Formate - z.B. Word .docx - gibt es Abzug!)
  • Sie können der Readme jedwede Informationen hinzufügen, die Sie als relevant erachten. Z.B. könnten Sie Notizen machen, was Sie gelernt haben und wie Ihr Code funktioniert.

b. Programm: SQL-Abfragen (30%)

  • Korrektheit und Funktionalität der SQL-Abfragen
  • Sinnvolle Verwendung von Aggregatfunktionen
  • Komplexität und Vielfalt der verwendeten SQL-Abfragen

c. Programm: Python-Code Qualität (30%)

  • Korrekte Syntax und Funktionalität
  • Lesbarkeit, Strukturierung, Organisation des Codes
  • Niveau der Programmierkonzepte
  • Fehlerbehandlung und Programmrobustheit

d. Abzüge

  • Verspätete Abgabe des Projekts (5% Abzug pro angebrochenem Tag Verspätung). Es gilt die Deadline der Teams-Aufgabe!
  • Nichterfüllung der oben genannten Mindestanforderungen
  • Code-Review 👇️

2. Code-Review

  • Ich stelle Ihnen Fragen zu Ihrem abgegebenen Code - oft zu den schwierigsten Konzepten, die Sie verwenden.
  • Sie sollten die Funktion des Codes sowie Ihre Design-Entscheide erklären können.
  • Die Code-Blöcke, die Sie nicht erklären können, werden für die Bewertung ignoriert - entsprechend mindert sich dadurch Ihre Note.
  • Das Code-Review findet nach der Abgabe über Teams oder vor Ort statt.

Ein Beispiel, damit Sie sich die Fragen vorstellen können:

# Beispielcode, den Sie abgegeben hätten
eingabe = input("Deine Antwort: ").strip().lower()
if eingabe == "schweiz":
	print(f"✅ Richtig!")
Frage

"Erklären Sie .strip().lower(), wenn ich z.B. 'Test ' eingebe."

3. Umgang mit KI

Die Verwendung von KI ist ausdrücklich erlaubt und empfohlen. Sie ist ein hervorragendes Werkzeug, um Neues zu lernen. Die optimale Strategie ist, dass Sie so ambitionierten Code schreiben, wie Sie nur können und sich am Rande Ihres Verständnisses bewegen. Der Grundsatz ist: KI ist ein Hilfsmittel, um Ihr Lernen zu fördern.

KI darf dabei nicht zum Ersatz für Ihr eigenes Denken mutieren. Die Delegation der Aufgabe an die KI ist wertlos und natürlich nicht erlaubt. Die Grundregeln folgen den KI-Leitlinien der KSWE:

Keine Deklarationspflicht

Vergleichbar mit Rechtschreibhilfe oder einer Frage an die Nachbarin:

  • Erklären lassen ("Was macht diese Zeile?")
  • Hilfe bei Syntaxfehlern, Tippfehlern, Bugs
  • Inspiration für Projektideen
Deklarationspflicht in der README

Wenn KI wesentlich am Inhalt mitwirkt:

  • KI hat die Projektstruktur oder Architektur entworfen
  • KI hat ganze Codeblöcke (mit-)geschrieben
  • KI hat komplexe SQL-Abfragen formuliert
  • Sie haben Code mehr oder weniger 1:1 aus KI-Output übernommen

Wenn Sie gar nichts zu deklarieren haben, schreiben Sie das bitte explizit in die README-Datei. Ansonsten erwähnen Sie bitte jeweils Sprachmodell, Datum und eine kurze Beschreibung. Ein Beispiel:

KI-Nutzung in diesem Projekt:

  • ChatGPT GPT-5 (15.05.2026): Aufbau der Funktion top_laender_anzeigen() inkl. Formatierung der fetchall()-Ergebnisse als Tabelle. Prompt sinngemäss: «Wie iteriere ich durch SQLite-Resultate in Python und formatiere sie als ausgerichtete Tabelle?»
  • Claude Sonnet 4.5 (16.05.2026): Erklärung von f-Strings und Refactoring der Eingabevalidierung in frage_jahr().

Mögliche Arbeitsschritte

  1. Analyse der Datenbank: Erkunden Sie die Struktur der Datenbank und die verfügbaren Indikatoren, schauen Sie den Beispielcode an
  2. Konzeptentwicklung: Entscheiden Sie, welche Art von Projekt Sie umsetzen möchten
  3. Planung: Skizzieren Sie Ihr Projekt und definieren Sie die benötigten SQL-Abfragen
  4. Implementierung: Programmieren Sie Ihr Projekt
  5. Test und Optimierung: Testen Sie Ihr Projekt und nehmen Sie Verbesserungen vor

Abgabe

Sie geben mir über ein Team-Assignment am Schluss eine ZIP-Datei mit all Ihren Projektdateien ab namens Nachname_Vorname.zip. Im ZIP-Archiv sollten sich befinden:

  • Eine README-Datei mit Erläuterungen zu Ihrem Projekt (Textdatei, Markdown oder PDF)
  • Ihre Python-Datei(en), das Hauptprogramm soll main.py heissen
  • NICHT die SQLite-Datenbank (ausser Sie verändern sie, z.B. durch das Erstellen einer neuen Tabelle)
  • Alle anderen Dateien, die Sie für Ihr Projekt benötigen

Viel Erfolg und Spass bei Ihrem Projekt!

Spalten in der Tabelle "indicators"

Die Datenbank enthält nur eine Tabelle namens indicators. Es folgt eine Tabelle der Spalten mit einer Erklärung, was diese Daten sind.

Ich habe Ihnen als Inspiration einige Indikatoren markiert, die ich interessant finde.

Spalte in der DatenbankErklärung
yearJahr
countryLändercode mit drei Buchstaben nach dieser Kodierliste (ISO 3166 ALPHA-3)
updated_atAktualisierungsdatum
electricity_accessZugang zu Elektrizität (% der Bevölkerung)
adjusted_savingsBereinigte Nettoersparnisse, einschliesslich Schäden durch Partikelemissionen (% des BNE)
adolescent_fertilityJugendliche Fruchtbarkeitsrate (Geburten pro 1'000 Frauen im Alter von 15-19 Jahren)
age_dependencyAltersabhängigkeitsquotient (% der erwerbsfähigen Bevölkerung)
irrigated_landLandwirtschaftlich bewässertes Land (% der gesamten landwirtschaftlichen Fläche)
agricultural_landLandwirtschaftliche Fläche (% der Landfläche)
agriculture_valueWertschöpfung Landwirtschaft, Forstwirtschaft und Fischerei (% des BIP)
air_transportLuftverkehr, registrierte Abflüge von Fluggesellschaften weltweit
alternative_energyAlternative und Atomenergie (% des gesamten Energieverbrauchs)
freshwater_withdrawal_pctJährliche Süsswasserentnahme, gesamt (% der internen Ressourcen)
freshwater_withdrawal_volJährliche Süsswasserentnahme, gesamt (Milliarden Kubikmeter)
income_growth_bottom40Jährliche durchschnittliche Wachstumsrate des Pro-Kopf-Realeinkommens, untere 40% der Bevölkerung (%)
income_growth_totalJährliche durchschnittliche Wachstumsrate des Pro-Kopf-Realeinkommens, Gesamtbevölkerung (%)
arable_land_pctAckerfläche (% der Landfläche)
arable_land_ppAckerfläche (Hektar pro Person)
bank_capital_ratioBankkapital zu Vermögensverhältnis (%)
nonperforming_loansNotleidende Kredite der Banken zu Gesamtkrediten (%)
birth_rateGeburtenrate, roh (pro 1'000 Einwohner)
skilled_birth_attendanceGeburten mit qualifiziertem Gesundheitspersonal (% der Gesamtzahl)
broad_moneyGeldmenge im weiteren Sinne (% des BIP)
business_disclosureUmfang der Offenlegung von Unternehmensinformationen (0=weniger bis 10=mehr)
death_communicableTodesursache durch übertragbare Krankheiten (% der Gesamtzahl)
death_injuryTodesursache durch Verletzungen (% der Gesamtzahl)
death_noncommunicableTodesursache durch nicht übertragbare Krankheiten (% der Gesamtzahl)
govt_debtStaatsverschuldung, gesamt (% des BIP)
cereal_yieldGetreideertrag (kg pro Hektar)
ip_paymentsGebühren für die Nutzung von geistigem Eigentum, Zahlungen (US$)
ip_receiptsGebühren für die Nutzung von geistigem Eigentum, Einnahmen (US$)
primary_outofschool_femaleKinder ausserhalb der Schule, Grundschule, weiblich
primary_outofschool_maleKinder ausserhalb der Schule, Grundschule, männlich
bank_branchesFilialen von Geschäftsbanken (pro 100'000 Erwachsene)
birth_registrationVollständigkeit der Geburtenregistrierung (%)
death_registrationVollständigkeit der Todesregistrierung mit Todesursache (%)
port_trafficContainerhafen-Verkehr (TEU: 20-Fuss-Container-Äquivalent)
contraceptive_useVerhütungsmittelverbreitung (% der verheirateten Frauen 15-49 Jahre)
crop_productionPflanzenproduktionsindex (2014-2016 = 100)
current_accountLeistungsbilanzsaldo (US$)
death_rateSterberate, roh (pro 1'000 Einwohner)
deposit_rateEinlagenzinssatz (%)
credit_info_depthIndex der Tiefe der Kreditinformationen (0=niedrig bis 8=hoch)
diabetes_prevalenceDiabetes-Prävalenz (% der Bevölkerung im Alter von 20-79 Jahren)
domestic_credit_financialInlandskredite des Finanzsektors (% des BIP)
domestic_credit_privateInlandskredite an den Privatsektor (% des BIP)
ease_business_rankRang der Geschäftsfreundlichkeit (1=beste Regulierung)
power_consumptionStromverbrauch (kWh pro Kopf)
female_agri_employmentBeschäftigung in der Landwirtschaft, weiblich (% der weiblichen Beschäftigung)
male_agri_employmentBeschäftigung in der Landwirtschaft, männlich (% der männlichen Beschäftigung)
energy_importsEnergieimporte, netto (% des Energieverbrauchs)
energy_intensityEnergieintensität der Primärenergie (MJ/BIP in 2017 PPP $)
energy_useEnergieverbrauch (kg Öläquivalent pro Kopf)
expense_gdpAusgaben (% des BIP)
exportsExporte von Waren und Dienstleistungen (% des BIP)
external_debt_pctAuslandsverschuldung (% des BNE)
external_debt_totalAuslandsverschuldung, gesamt (US$)
fertility_rateFruchtbarkeitsrate, gesamt (Geburten pro Frau)
fertilizer_useDüngemittelverbrauch (kg pro Hektar Ackerland)
firms_rdUnternehmen, die in F&E investieren (% der Unternehmen)
food_productionNahrungsmittelproduktionsindex (2014-2016 = 100)
fdi_inflowsAusländische Direktinvestitionen, Nettozuflüsse (US$)
forest_area_pctWaldfläche (% der Landfläche)
forest_area_totalWaldfläche (km²)
fossil_fuel_consumptionVerbrauch fossiler Brennstoffe (% des Gesamtverbrauchs)
fuel_exportsKraftstoffexporte (% der Warenexporte)
gdpBIP (US$)
gdp_growthBIP-Wachstum (jährlich %)
gdp_per_capitaBIP pro Kopf (US$)
gdp_per_capita_growthBIP-Wachstum pro Kopf (jährlich %)
gdp_per_capita_pppBIP pro Kopf, KKP (internationale $)
gdp_per_employedBIP pro Beschäftigten (konstant 2021 KKP $)
gdp_per_energyBIP pro Energieeinheit (konstant 2021 KKP $ pro kg Öläquivalent)
gni_per_capitaBNE pro Kopf, Atlas-Methode (US$)
gni_per_capita_pppBNE pro Kopf, KKP (internationale $)
gni_totalBNE, Atlas-Methode (US$)
gni_ppp_totalBNE, KKP (internationale $)
gini_indexGini-Index
edu_expenditure_gdpBildungsausgaben, gesamt (% des BIP)
edu_expenditure_govtBildungsausgaben, gesamt (% der Staatsausgaben)
edu_primary_spendingBildungsausgaben pro Schüler, Grundschule (% des BIP pro Kopf)
edu_secondary_spendingBildungsausgaben pro Schüler, Sekundarschule (% des BIP pro Kopf)
edu_tertiary_spendingBildungsausgaben pro Student, Hochschule (% des BIP pro Kopf)
grantsZuschüsse ohne technische Zusammenarbeit (US$)
capital_formationBruttokapitalbildung (% des BIP)
primary_intake_femaleBruttoaufnahmequote in Grundschule, weiblich (%)
primary_intake_maleBruttoaufnahmequote in Grundschule, männlich (%)
gross_savingsBruttoersparnisse (% des BIP)
hightech_exports_pctHochtechnologie-Exporte (% der Fertigungsexporte)
hightech_exports_valHochtechnologie-Exporte (US$)
hospital_bedsKrankenhausbetten (pro 1'000 Einwohner)
immunization_dptImpfung gegen DPT (% der Kinder 12-23 Monate)
importsImporte von Waren und Dienstleistungen (% des BIP)
tuberculosis_rateTuberkulose-Inzidenz (pro 100'000 Einwohner)
income_highest10Einkommensanteil der obersten 10%
income_lowest10Einkommensanteil der untersten 10%
income_lowest20Einkommensanteil der untersten 20%
industry_valueWertschöpfung Industrie (% des BIP)
inflation_gdpInflation, BIP-Deflator (jährlich %)
inflation_consumerInflation, Verbraucherpreise (jährlich %)
interest_spreadZinsspanne (Kredit- minus Einlagenzinssatz)
energy_investmentInvestitionen in Energie mit privater Beteiligung (US$)
transport_investmentInvestitionen in Transport mit privater Beteiligung (US$)
female_labor_forceArbeitskräfte, weiblich (% der Gesamtarbeitskräfte)
labor_force_totalArbeitskräfte, gesamt
land_areaLandfläche (km²)
low_elevation_landLandfläche unter 5 Meter Höhe (% der gesamten Landfläche)
cereal_landLandfläche unter Getreideproduktion (Hektar)
lending_rateKreditzinssatz (%)
life_expectancy_femaleLebenserwartung bei Geburt, weiblich (Jahre)
life_expectancy_maleLebenserwartung bei Geburt, männlich (Jahre)
life_expectancyLebenserwartung bei Geburt, gesamt (Jahre)
listed_companiesBörsennotierte inländische Unternehmen, gesamt
literacy_femaleAlphabetisierungsrate,