DataFrame – chatgpz.de – KI-Tools & Praxiswissen http://chatgpz.de Unabhängige Tests, Anleitungen und Hintergründe zu KI-Tools. Sun, 09 Nov 2025 00:27:38 +0000 de-DE hourly 1 https://wordpress.org/?v=6.4.2 234900186 Vom Datensatz über den DataFrame bis zur Bereitstellung: Ihr erstes Projekt mit Pandas und Scikit-learn http://chatgpz.de/data-analytics/vom-datensatz-ueber-den-dataframe-bis-zur-bereitstellung-ihr-erstes-projekt-mit-pandas-und-scikit-learn/ http://chatgpz.de/data-analytics/vom-datensatz-ueber-den-dataframe-bis-zur-bereitstellung-ihr-erstes-projekt-mit-pandas-und-scikit-learn/#respond Sun, 09 Nov 2025 00:27:38 +0000 https://chatgpz.de/data-analytics/vom-datensatz-ueber-den-dataframe-bis-zur-bereitstellung-ihr-erstes-projekt-mit-pandas-und-scikit-learn/ [ad_1]

Vom Datensatz über den DataFrame bis zur Bereitstellung: Ihr erstes Projekt mit Pandas und Scikit-learnVom Datensatz über den DataFrame bis zur Bereitstellung: Ihr erstes Projekt mit Pandas und Scikit-learn
Bild vom Herausgeber

# Einführung

Ich freue mich darauf, Ihr erstes, überschaubares maschinelles Lernprojekt mit den beliebten Python-Bibliotheken zu starten Pandas Und Scikit-lernenaber Sie wissen nicht, wo Sie anfangen sollen? Suchen Sie nicht weiter.

In diesem Artikel werde ich Sie durch ein sanftes, einsteigerfreundliches Projekt zum maschinellen Lernen führen, in dem wir gemeinsam ein Regressionsmodell erstellen, das das Mitarbeitereinkommen auf der Grundlage sozioökonomischer Merkmale vorhersagt. Unterwegs lernen wir einige wichtige Konzepte und wichtige Methods des maschinellen Lernens kennen.

# Vom Rohdatensatz zum sauberen DataFrame

Zunächst empfiehlt es sich, wie bei jedem Python-basierten Projekt, zunächst die erforderlichen Bibliotheken, Module und Komponenten zu importieren, die wir während des gesamten Prozesses verwenden werden:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
import joblib

Mit den folgenden Anweisungen wird ein öffentlich verfügbarer Datensatz geladen dieses Repository in einen Panda DataFrame Objekt: eine übersichtliche Datenstruktur zum Laden, Analysieren und Verwalten vollständig strukturierter Daten, d. h. Daten im Tabellenformat. Nach dem Laden betrachten wir seine grundlegenden Eigenschaften und Datentypen in seinen Attributen.

url = "https://uncooked.githubusercontent.com/gakudo-ai/open-datasets/important/employees_dataset_with_missing.csv"
df = pd.read_csv(url)
print(df.head())
print(df.data())

Sie werden feststellen, dass der Datensatz 1.000 Einträge oder Instanzen enthält – additionally Daten, die 1.000 Mitarbeiter beschreiben –, aber für die meisten Attribute wie Alter, Einkommen usw. gibt es weniger als 1.000 tatsächliche Werte. Warum? Weil In diesem Datensatz fehlen Werteein häufiges Drawback bei realen Daten, das behoben werden muss.

In unserem Projekt setzen wir uns zum Ziel, das Einkommen eines Mitarbeiters anhand der übrigen Merkmale vorherzusagen. Daher werden wir den Ansatz verfolgen, Zeilen (Mitarbeiter) zu verwerfen, deren Wert für dieses Attribut fehlt. Während es bei Prädiktorattributen manchmal in Ordnung ist, mit fehlenden Werten umzugehen und sie zu schätzen oder zu imputieren, benötigen wir für die Zielvariable vollständig bekannte Bezeichnungen zum Trainieren unseres maschinellen Lernmodells: Der Haken daran ist, dass unser maschinelles Lernmodell lernt, indem es Beispielen mit bekannten Vorhersageausgaben ausgesetzt wird.

Es gibt auch eine spezielle Anweisung, nur nach fehlenden Werten zu suchen:

Additionally, lasst uns unsere reinigen DataFrame um von fehlenden Werten für die Zielvariable Einkommen ausgenommen zu sein. Dieser Code entfernt Einträge mit fehlenden Werten, insbesondere für dieses Attribut.

goal = "earnings"
train_df = df.dropna(subset=(goal))

X = train_df.drop(columns=(goal))
y = train_df(goal)

Wie wäre es additionally mit den fehlenden Werten in den restlichen Attributen? Wir werden uns in Kürze darum kümmern, aber zuerst müssen wir unseren Datensatz in zwei große Teilmengen aufteilen: einen Trainingssatz zum Trainieren des Modells und einen Testsatz zur Bewertung der Leistung unseres Modells nach dem Coaching, bestehend aus Beispielen, die sich von denen unterscheiden, die das Modell während des Trainings gesehen hat. Scikit-learn bietet eine einzelne Anweisung, um diese Aufteilung nach dem Zufallsprinzip durchzuführen:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Der nächste Schritt geht noch einen Schritt weiter, um die Daten in eine großartige Kind für das Coaching eines Modells für maschinelles Lernen umzuwandeln: den Aufbau einer Vorverarbeitungspipeline. Normalerweise sollte diese Vorverarbeitung zwischen numerischen und kategorialen Merkmalen unterscheiden, sodass jeder Merkmalstyp unterschiedlichen Vorverarbeitungsaufgaben entlang der Pipeline unterliegt. Beispielsweise sollen numerische Merkmale typischerweise skaliert werden, während kategoriale Merkmale in numerische Merkmale abgebildet oder kodiert werden können, damit das Modell des maschinellen Lernens sie verarbeiten kann. Zur Veranschaulichung zeigt der folgende Code den gesamten Prozess des Aufbaus einer Vorverarbeitungspipeline. Es umfasst die automatische Identifizierung numerischer und kategorialer Merkmale, sodass jeder Typ korrekt verarbeitet werden kann.

numeric_features = X.select_dtypes(embody=("int64", "float64")).columns
categorical_features = X.select_dtypes(exclude=("int64", "float64")).columns

numeric_transformer = Pipeline((
    ("imputer", SimpleImputer(technique="median"))
))

categorical_transformer = Pipeline((
    ("imputer", SimpleImputer(technique="most_frequent")),
    ("onehot", OneHotEncoder(handle_unknown="ignore"))
))

preprocessor = ColumnTransformer((
    ("num", numeric_transformer, numeric_features),
    ("cat", categorical_transformer, categorical_features)
))

Weitere Informationen zu Datenvorverarbeitungspipelines finden Sie unter dieser Artikel.

Diese Pipeline wurde einmal auf die angewendet DataFrameführt zu einer sauberen, gebrauchsfertigen Model für maschinelles Lernen. Wir werden es jedoch im nächsten Schritt anwenden, indem wir sowohl die Datenvorverarbeitung als auch das Modelltraining für maschinelles Lernen in einer einzigen übergreifenden Pipeline zusammenfassen.

# Vom sauberen DataFrame zum einsatzbereiten Modell

Jetzt definieren wir eine übergreifende Pipeline, die:

  1. Wendet den zuvor definierten Vorverarbeitungsprozess an – gespeichert im preprocessor Variable – sowohl für numerische als auch für kategoriale Attribute.
  2. Trainiert ein Regressionsmodell, nämlich eine zufällige Waldregression, um das Einkommen anhand vorverarbeiteter Trainingsdaten vorherzusagen.
mannequin = Pipeline((
    ("preprocessor", preprocessor),
    ("regressor", RandomForestRegressor(random_state=42))
))

mannequin.match(X_train, y_train)

Wichtig ist, dass die Trainingsphase nur die Trainingsteilmenge erhält, die wir zuvor bei der Aufteilung erstellt haben, nicht den gesamten Datensatz.

Jetzt nehmen wir die andere Teilmenge der Daten, den Testsatz, und bewerten damit die Leistung des Modells an diesen Beispielmitarbeitern. Wir verwenden den mittleren absoluten Fehler (MAE) als unsere Bewertungsmetrik:

preds = mannequin.predict(X_test)
mae = mean_absolute_error(y_test, preds)
print(f"nModel MAE: {mae:.2f}")

Möglicherweise erhalten Sie einen MAE-Wert von etwa 13.000, was akzeptabel, aber nicht brillant ist, wenn man bedenkt, dass die meisten Einkommen im Bereich von 60.000 bis 90.000 liegen. Auf jeden Fall nicht schlecht für ein erstes Modell für maschinelles Lernen!

Abschließend möchte ich Ihnen zeigen, wie Sie Ihr trainiertes Modell für die zukünftige Bereitstellung in einer Datei speichern.

joblib.dump(mannequin, "employee_income_model.joblib")
print("Mannequin saved as employee_income_model.joblib")

Speichern Sie Ihr trainiertes Modell in einem .joblib Die Datei ist für zukünftige Bereitstellungen nützlich, da Sie sie sofort neu laden und wiederverwenden können, ohne sie erneut von Grund auf trainieren zu müssen. Stellen Sie sich das so vor, als würden Sie Ihre gesamte Vorverarbeitungspipeline und das trainierte Modell in einem tragbaren Objekt „einfrieren“. Zu den schnellen Optionen für die zukünftige Verwendung und Bereitstellung gehören das Einbinden in ein einfaches Python-Skript oder -Pocket book oder die Erstellung einer schlanken Net-App, die mit Instruments wie erstellt wurde Streamlit, Gradiooder Flasche.

# Zusammenfassung

In diesem Artikel haben wir ein einführendes Modell für maschinelles Lernen für die Regression zusammengestellt, insbesondere zur Vorhersage des Mitarbeitereinkommens, und die notwendigen Schritte vom Rohdatensatz bis zum sauberen, vorverarbeiteten Datensatz skizziert DataFrameund von DataFrame zum einsatzbereiten Modell.

Iván Palomares Carrascosa ist ein führender Autor, Redner und Berater in den Bereichen KI, maschinelles Lernen, Deep Studying und LLMs. Er schult und leitet andere darin, KI in der realen Welt zu nutzen.

[ad_2]

]]>
http://chatgpz.de/data-analytics/vom-datensatz-ueber-den-dataframe-bis-zur-bereitstellung-ihr-erstes-projekt-mit-pandas-und-scikit-learn/feed/ 0 13822
So konvertieren Sie JSON-Daten mit Pandas in einen DataFrame http://chatgpz.de/data-analytics/so-konvertieren-sie-json-daten-mit-pandas-in-einen-dataframe/ http://chatgpz.de/data-analytics/so-konvertieren-sie-json-daten-mit-pandas-in-einen-dataframe/#respond Tue, 11 Jun 2024 05:52:16 +0000 http://chatgpz.de/data-analytics/so-konvertieren-sie-json-daten-mit-pandas-in-einen-dataframe/ [ad_1]

So konvertieren Sie JSON-Daten mit Pandas in einen DataFrameSo konvertieren Sie JSON-Daten mit Pandas in einen DataFrame
Bild vom Autor | DALLE-3 & Canva

Wenn Sie schon einmal die Gelegenheit hatten, mit Daten zu arbeiten, sind Sie wahrscheinlich schon auf die Notwendigkeit gestoßen, JSON-Dateien (kurz für JavaScript Object Notation) zur weiteren Analyse in einen Pandas DataFrame zu laden. JSON-Dateien speichern Daten in einem Format, das für Menschen klar lesbar und für Laptop einfach zu verstehen ist. Allerdings kann die Navigation in JSON-Dateien manchmal kompliziert sein. Daher laden wir sie in ein strukturierteres Format wie DataFrames – das wie eine Tabelle mit Zeilen und Spalten aufgebaut ist.

Ich zeige Ihnen zwei verschiedene Möglichkeiten, JSON-Daten in einen Pandas DataFrame zu konvertieren. Bevor wir diese Methoden besprechen, betrachten wir diese Dummy-verschachtelte JSON-Datei, die ich in diesem Artikel als Beispiel verwenden werde.

{
"books": (
{
"title": "One Hundred Years of Solitude",
"writer": "Gabriel Garcia Marquez",
"evaluations": (
{
"reviewer": {
"title": "Kanwal Mehreen",
"location": "Islamabad, Pakistan"
},
"score": 4.5,
"feedback": "Magical and fully breathtaking!"
},
{
"reviewer": {
"title": "Isabella Martinez",
"location": "Bogotá, Colombia"
},
"score": 4.7,
"feedback": "A wonderful journey by a world of magic."
}
)
},
{
"title": "Issues Fall Aside",
"writer": "Chinua Achebe",
"evaluations": (
{
"reviewer": {
"title": "Zara Khan",
"location": "Lagos, Nigeria"
},
"score": 4.9,
"feedback": "Issues Fall Aside is one of the best of up to date African literature."
})})}


Die oben genannten JSON-Daten stellen eine Liste von Büchern dar, wobei jedes Buch einen Titel, einen Autor und eine Liste mit Rezensionen hat. Jede Rezension hat wiederum einen Rezensenten (mit Title und Ort) sowie eine Bewertung und Kommentare.

Methode 1: Mit dem json.load() Und pd.DataFrame() Funktionen

Der einfachste und direkteste Ansatz ist die Verwendung des integrierten json.load() Funktion zum Parsen unserer JSON-Daten. Dadurch werden sie in ein Python-Wörterbuch konvertiert, und wir können dann den DataFrame direkt aus der resultierenden Python-Datenstruktur erstellen. Es gibt jedoch ein Drawback: Es kann nur einzelne verschachtelte Daten verarbeiten. Wenn Sie additionally im obigen Fall nur diese Schritte mit diesem Code ausführen:

import json
import pandas as pd

#Load the JSON knowledge

with open('books.json','r') as f:
knowledge = json.load(f)

#Create a DataFrame from the JSON knowledge

df = pd.DataFrame(knowledge('books'))

df

Ihre Ausgabe könnte folgendermaßen aussehen:

Ausgabe:

json.load()-Ausgabejson.load()-Ausgabe

In der Spalte „Bewertungen“ können Sie das gesamte Wörterbuch sehen. Wenn die Ausgabe additionally korrekt angezeigt werden soll, müssen Sie die verschachtelte Struktur manuell bearbeiten. Dies können Sie folgendermaßen tun:

#Create a DataFrame from the nested JSON knowledge

df = pd.DataFrame((
{
'title': ebook('title'),
'writer': ebook('writer'),
'reviewer_name': assessment('reviewer')('title'),
'reviewer_location': assessment('reviewer')('location'),
'score': assessment('score'),
'feedback': assessment('feedback')
}
for ebook in knowledge('books')
for assessment in ebook('evaluations')
))


Aktualisierte Ausgabe:

json.load()-Ausgabejson.load()-Ausgabe

Hier verwenden wir die Listenableitung, um eine flache Liste von Wörterbüchern zu erstellen, wobei jedes Wörterbuch die Buchinformationen und die entsprechende Rezension enthält. Anschließend erstellen wir damit den Pandas DataFrae.

Das Drawback bei diesem Ansatz besteht jedoch darin, dass mehr manueller Aufwand erforderlich ist, um die verschachtelte Struktur der JSON-Daten zu verwalten. Was additionally jetzt? Haben wir eine andere Möglichkeit?

Absolut! Ich meine, komm schon. Angesichts der Tatsache, dass wir im 21. Jahrhundert leben, erscheint es unrealistisch, ein solches Drawback ohne Lösung zu bewältigen. Sehen wir uns den anderen Ansatz an.

Methode 2 (empfohlen): Mit dem json_normalize() Funktion

Der json_normalize() Die Funktion aus der Pandas-Bibliothek ist eine bessere Möglichkeit, verschachtelte JSON-Daten zu verwalten. Sie vereinfacht automatisch die verschachtelte Struktur der JSON-Daten und erstellt aus den resultierenden Daten einen DataFrame. Sehen wir uns den Code an:

import pandas as pd
import json

#Load the JSON knowledge

with open('books.json', 'r') as f:
knowledge = json.load(f)

#Create the DataFrame utilizing json_normalize()

df = pd.json_normalize(
knowledge=knowledge('books'),
meta=('title', 'writer'),
record_path="evaluations",
errors="increase"
)

df


Ausgabe:

json.load()-Ausgabejson.load()-Ausgabe

Der json_normalize() Die Funktion verwendet die folgenden Parameter:

  • Daten: Die Eingabedaten, die eine Liste von Wörterbüchern oder ein einzelnes Wörterbuch sein können. In diesem Fall ist es das aus der JSON-Datei geladene Datenwörterbuch.
  • Datensatzpfad: Der Pfad in den JSON-Daten zu den Datensätzen, die Sie normalisieren möchten. In diesem Fall ist es der Schlüssel „evaluations“.
  • Meta: Zusätzliche Felder, die in die normalisierte Ausgabe des JSON-Dokuments aufgenommen werden sollen. In diesem Fall verwenden wir die Felder „Titel“ und „Autor“. Beachten Sie, dass Spalten in Metadaten normalerweise am Ende erscheinen. So funktioniert diese Funktion. Für die Analyse spielt das keine Rolle, aber aus irgendeinem magischen Grund möchten Sie, dass diese Spalten vorher erscheinen. Tut mir leid, aber Sie müssen das manuell tun.
  • Fehler: Die Fehlerbehandlungsstrategie, die „Ignorieren“, „Erhöhen“ oder „Warnen“ sein kann. Wir haben sie auf „Erhöhen“ eingestellt, sodass bei Fehlern während des Normalisierungsprozesses eine Ausnahme ausgelöst wird.

Einpacken

Beide Methoden haben ihre eigenen Vorteile und Anwendungsfälle, und die Wahl der Methode hängt von der Struktur und Komplexität der JSON-Daten ab. Wenn die JSON-Daten eine sehr verschachtelte Struktur haben, json_normalize() Funktion ist möglicherweise die am besten geeignete Possibility, da sie die verschachtelten Daten automatisch verarbeiten kann. Wenn die JSON-Daten relativ einfach und flach sind, ist die pd.read_json() Funktion ist möglicherweise der einfachste und direkteste Ansatz.

Beim Umgang mit großen JSON-Dateien ist es wichtig, an Speichernutzung und Leistung zu denken, da das Laden der gesamten Datei in den Speicher möglicherweise nicht funktioniert. Daher müssen Sie möglicherweise andere Optionen in Betracht ziehen, wie z. B. das Streamen der Daten, Lazy Loading oder die Verwendung eines speichereffizienteren Codecs wie Parquet.

Kanwal Mehreen Kanwal ist Ingenieurin für maschinelles Lernen und technische Autorin mit einer tiefen Leidenschaft für Datenwissenschaft und die Schnittstelle zwischen KI und Medizin. Sie ist Mitautorin des E-Books „Maximizing Productiveness with ChatGPT“. Als Google Technology Scholar 2022 für APAC setzt sie sich für Vielfalt und akademische Exzellenz ein. Sie ist außerdem als Teradata Range in Tech Scholar, Mitacs Globalink Analysis Scholar und Harvard WeCode Scholar anerkannt. Kanwal ist eine leidenschaftliche Verfechterin des Wandels und hat FEMCodes gegründet, um Frauen in MINT-Fächern zu stärken.

[ad_2]

]]>
http://chatgpz.de/data-analytics/so-konvertieren-sie-json-daten-mit-pandas-in-einen-dataframe/feed/ 0 1330