if Funktion

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Maria92
User
Beiträge: 2
Registriert: Samstag 3. Oktober 2020, 08:50

Hallo zusammen,

vorab ich bin absoluter Anfänger in diesem Thema. Dennoch muss ich in einem Kurs im Studium mit Python eine Analyse eines vorhandenen Datensatz durführen. Dies klappt leider überhaupt nicht und ich bin am verzweifeln, da auch stundenlanges googeln nichts gebracht haben.
Aus diesem Grund hoffe ich, dass mir jemand von euch helfen kann.

Nun zu meiner Aufgabe: Der Datensatz enthält vers. Daten zu vers. Ländern. U.a. die Geburts- und Sterberate.
Meine erste Aufgabe ist es nun nur die Länder aufzulisten bei denen die Geburtsrate höher als die Sterberate ist. Meine Idee war dies über eine if-Funktion zu machen.

Das ist mein Code: :oops:

Birthrate = input(dataDBC2)
print
if Birthrate > Deathrate:

print(Country)

Wenn ich diesen ausführe, wird dieser nicht zu Ende ausgeführt, da das Sternchen immer angezeigt wird. Zudem wird wir mein Datensatz wieder angezeigt. Es löscht zwar eine Zeile heraus, bei dem die Werte nicht angegeben sind, jedoch wird meine Wenn-Funktion ignoriert. Ich habe auch noch andere Varianten ausprobiert, leider nur mit ähnlichem Ergebnis

Ich hoffe das war verständlich und ihr könnt mir Helfen zu erkennen was das Problem ist.

Danke schon mal im voraus
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

dataDBC2, Country und Deathrate sind nicht definiert. Das erste print bringt gar nichts.
Was meinst du mit Sternchen?
Ich sehe keinen Datensatz.
Ich vermute mal, dass Problem soll mit pandas gelöst werden und dort gibt es Methoden um Daten in einem DataFrame zu filtern, ganz ohne if. Einfach mal das Tutorial von pandas durcharbeiten.
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Maria92: Die Beschreibung ist nicht wirklich verständlich und der Code macht keinen Sinn. `input()` ist eine Funktion die den Benutzer nach einer Eingabe fragt, davon steht aber gar nichts in der Beschreibung und `dataDBC2` sieht nicht nach einer Variablen mit *einem* Text aus, der dem Benutzer angezeigt wird, denn das müsste dieses Argument von `input()` sein.

Wenn Du Probleme mit konkretem Code hast, dann zeige bitte diesen konkreten Code. So dass man das Problem nachvollziehen kann. Sonst kann man schlecht helfen, wenn man gar nicht weiss, was Du tatsächlich gemacht hast, selbst wenn die Problembeschreibung verständlicher wäre.

Trotz der Vermutung von Sirius3 bezüglich Pandas würde ich vorher lernen von Python-Grundlagen empfehlen. Also beispielsweise das Tutorial in der Python-Dokumentation. Und dann hat Pandas auch eine ziemlich umfangreiche Dokumentation, inklusive Tutorials für den Einstieg.

``if`` ist übrigens keine Funktion. Das ist ein Schlüsselwort das für bedingte Verzweigungen verwendet wird.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Maria92
User
Beiträge: 2
Registriert: Samstag 3. Oktober 2020, 08:50

Guten Morgen,
danke schon mal für eure Rückmeldung. Ich kopiere euch mal den gesamten Code:

import pandas as pd
import os
import numpy as np
import seaborn as sns
import matplotlib
import matplotlib.pyplot as plt

import os


filename = 'countries2.xlsx'

data_dir = os.sep.join(['..', 'datasets'])
path = os.sep.join([data_dir, filename])

data = pd.read_excel(path)

dataDBC = data[['Birthrate','Deathrate','Country']]
dataDBC2 = pd.DataFrame(dataDBC)
dataDBC2

Birthrate = input(dataDBC2)
print
if Birthrate > Deathrate:

print(Country)

Ich hatte den if-Teil auch nochmal in folgender Form probiert:
var_1 = 'Birthrate'
var_2 = 'Deathrate'

if var_1 > var_2:
print('Country')

Leider ebenfalls ohen Erfolg

Vielleicht fällt euch eine Möglichkeit auf, das Problem irgenwie hinzubekommen.

Vielen Dank im Voraus
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Pfade setzt man mit os.path.join zusammen, und nicht per os.sep.

Code: Alles auswählen

path = os.path.join('..', 'datasets', filename)
dataDBC sollte schon ein DataFrame sein, das nochmal in einen DataFrame umzuwandeln ist hier unsinnig.
Was bezweckst Du mit dem `input`? `Deathrate` ist dann nicht definiert.
Das `print` ist falsch eingerückt, was zu einem IndentationError führen sollte.
var_1 und var_2 sind einfach nur Strings. Der Vergleich hilft also nicht weiter.
Was Du tun solltest, ist ein Tutorial zu Pandas durcharbeiten. Dort wird auch erklärt, wie man auf Daten zugreift und sie filtern kann. Besser kann man Dir im Moment wirklich nicht helfen.
Antworten