Ich mache meine ersten Schritte in den Bereichen Datenwissenschaft und maschinelles Lernen. Ich experimentiere mit einem Projekt, bei dem ich keine Ahnung habe, mit welchen Ansätzen ich beginnen könnte, daher würde ich mich über Hinweise freuen:
Ich habe einen Datensatz (zur Erklärung) der Studienabschlüsse. Der Datensatz ist insofern vollständig, als er die gesamte Population enthält. Alle Aufzeichnungen sollten ein Abschlussdatum haben.
Aufgrund eines fehlgeschlagenen Datensatzes fehlt bei älteren Datensätzen jedoch das Abschlussdatum.
Es hat die folgenden Funktionen:
- Für Abschlüsse seit 2014 haben wir ein Abschlussdatum
- Bei Abschlüssen vor 2014 fehlt das Abschlussdatum
- Für alle Schüler haben wir ein Geburtsdatum
- Für viele Studenten wird der Abschluss mit dem Geburtsdatum korreliert. Zum Beispiel kann es oft vorkommen, dass sie 21 Jahre nach ihrer Geburt ihren Abschluss machen. Einige werden jedoch reife Studenten sein, so dass sie viele Jahre nach dem 21. Lebensjahr ihren Abschluss machen können.
- Die Zertifikat-IDs sind mehr oder weniger sequentiell und numerisch. Es ist davon auszugehen, dass nahe beieinander liegende Zertifikats-IDs Studenten darstellen, die ungefähr zur gleichen Zeit ihren Abschluss machen
- Die Metapher ist etwas fehlerhaft; davon ausgehen, dass die Studierenden an jedem Tag ihren Abschluss machen können
Meine Herausforderung besteht darin, einen Ansatz zu entwickeln , der auf der Grundlage des Geburtsdatums ein Abschlussdatum für alle Schüler ableitet.
Der Ansatz, über den ich nachgedacht habe, sieht ungefähr so aus:
- Verwenden Sie für alle Schüler, für die beide Daten verfügbar sind, einen Modus (Graduierungsalter).
- Gruppieren Sie die Schüler gemäß der ID des sequentiellen Zertifikats in Klassen von (sagen wir) 1000
- Finden Sie in jedem Fach den häufigsten Geburtsmonat und das häufigste Geburtsjahr für die Schüler
- Fügen Sie den Modus (Graduierungsalter) zum häufigsten Monat / Jahr für einen bestimmten Fach hinzu und weisen Sie ihn als Abschlussdatum für alle Schüler im Fach zu
Ein Beispiel in Pandas könnte folgendermaßen aussehen:
graduations = [
# Old data with missing graduation dates
{'certificate_id': '090029, 'birth_date': '01/01/1983', 'graduation_date': NaT},
{'certificate_id': '090048, 'birth_date': '04/01/1983', 'graduation_date': NaT},
...
# This is 'normal' students graduating roughly 21 years after
# their birth date
{'certificate_id': '120015, 'birth_date': '01/01/1993', 'graduation_date': 01/03/2014},
{'certificate_id': '120019, 'birth_date': '01/04/1993', 'graduation_date': 04/03/2014},
# However there are many exceptions, mature students or those
# graduating early
{'certificate_id': '120150, 'birth_date': '01/01/1966', 'graduation_date': 05/03/2014},
{'certificate_id': '120155, 'birth_date': '01/04/1996', 'graduation_date': 06/03/2014},
]
df = pd.DataFrame(graduations)
Jede Hilfe wäre willkommen, auch wenn Sie mir sagen können, wie diese Art von Problem heißt, damit ich weiter recherchieren kann, oder wenn Sie mich wissen lassen, dass dies mit diesem Datensatz nicht möglich ist. Ich bin mir momentan nicht mal sicher, was die richtigen Tags sind!
NaN
für NULL
. Siehe: pandas.pydata.org/pandas-docs/stable/missing_data.html . Als ich das jedoch noch einmal las, stellte ich fest, dass ich es technisch hätte tun sollen NaT
(keine Zeit) - ich habe dies bearbeitet.