Datenbereinigung mit PyJanitor
Bild vom Autor | DALLE-3 & Canva

Haben Sie schon einmal mit unübersichtlichen Datensätzen zu tun gehabt? Sie sind eine der größten Hürden in jedem Information-Science-Projekt. Diese Datensätze können Inkonsistenzen, fehlende Werte oder Unregelmäßigkeiten enthalten, die die Analyse erschweren. Die Datenbereinigung ist der wesentliche erste Schritt, der die Grundlage für genaue und zuverlässige Erkenntnisse legt, aber sie ist langwierig und zeitaufwändig.

Keine Angst! Ich möchte Ihnen Pyjanitor vorstellen, eine fantastische Python-Bibliothek, die Ihnen den Tag retten kann. Es ist ein praktisches Python-Paket, das eine einfache Lösung für diese Herausforderungen bei der Datenbereinigung bietet. In diesem Artikel werde ich die Bedeutung von Pyjanitor sowie seine Funktionen und praktische Anwendung erläutern.

Am Ende dieses Artikels haben Sie ein klares Verständnis davon, wie Pyjanitor die Datenbereinigung und ihre Anwendung in alltäglichen datenbezogenen Aufgaben vereinfacht.

Was ist Pyjanitor?

Pyjanitor ist ein erweitertes R-Paket von Python, das auf Pandas aufbaut und Datenbereinigungs- und Vorverarbeitungsaufgaben vereinfacht. Es erweitert seine Funktionalität, indem es eine Vielzahl nützlicher Funktionen bietet, die den Prozess der Bereinigung, Transformation und Vorbereitung von Datensätzen verfeinern. Betrachten Sie es als Improve Ihres Datenbereinigungs-Toolkits. Möchten Sie mehr über Pyjanitor erfahren? Ich auch. Lassen Sie uns beginnen.

Erste Schritte

Als Erstes müssen Sie Pyjanitor installieren. Öffnen Sie Ihr Terminal oder Ihre Eingabeaufforderung und führen Sie den folgenden Befehl aus:

Der nächste Schritt besteht darin, Pyjanitor und Pandas in Ihr Python-Skript zu importieren. Dies kann folgendermaßen erfolgen:

import janitor
import pandas as pd

Jetzt können Sie Pyjanitor für Ihre Datenbereinigungsaufgaben verwenden. Im Folgenden werde ich einige der nützlichsten Funktionen von Pyjanitor erläutern:

1. Spaltennamen bereinigen

Heben Sie die Hand, wenn Sie jemals über inkonsistente Spaltennamen frustriert waren. Ja, ich auch. Mit Pyjanitors clean_names() Mit dieser Funktion können Sie Ihre Spaltennamen schnell standardisieren und sie mit nur einem einfachen Aufruf einheitlich und konsistent machen. Diese leistungsstarke Funktion ersetzt Leerzeichen durch Unterstriche, konvertiert alle Zeichen in Kleinbuchstaben, entfernt führende und nachfolgende Leerzeichen und ersetzt sogar Punkte durch Unterstriche. Lassen Sie uns dies anhand eines einfachen Beispiels verstehen.

#Create a knowledge body with inconsistent column names
student_df = pd.DataFrame({
    'Pupil.ID': (1, 2, 3),
    'Pupil Identify': ('Sara', 'Hanna', 'Mathew'),
    'Pupil Gender': ('Feminine', 'Feminine', 'Male'),
    'Course*': ('Algebra', 'Information Science', 'Geometry'),
    'Grade': ('A', 'B', 'C')
})

#Clear the column names
clean_df = student_df.clean_names()
print(clean_df)

Ausgabe:

   student_id    student_name    student_gender        course    grade
0           1            Sara            Feminine       Algebra        A
1           2           Hanna            Feminine  Information Science        B
2           3          Mathew              Male      Geometry        C

2. Spalten umbenennen

Manchmal verbessert das Umbenennen von Spalten nicht nur unser Verständnis der Daten, sondern auch deren Lesbarkeit und Konsistenz. Dank der rename_column() Funktion wird diese Aufgabe mühelos. Ein einfaches Beispiel, das die Benutzerfreundlichkeit dieser Funktion zeigt, ist wie folgt:

student_df = pd.DataFrame({
    'stu_id': (1, 2),
    'stu_name': ('Ryan', 'James'),
})
# Renaming the columns
student_df = student_df.rename_column('stu_id', 'Student_ID')
student_df =student_df.rename_column('stu_name', 'Student_Name')
print(student_df.columns)

Ausgabe:

Index(('Student_ID', 'Student_Name'), dtype="object")

3. Umgang mit fehlenden Werten

Fehlende Werte sind ein echtes Downside bei der Arbeit mit Datensätzen. Glücklicherweise fill_missing() ist praktisch, um diese Probleme zu beheben. Lassen Sie uns anhand eines praktischen Beispiels untersuchen, wie fehlende Werte mit Pyjanitor behandelt werden. Zuerst erstellen wir einen Dummy-Datenrahmen und füllen ihn mit einigen fehlenden Werten.

# Create a knowledge body with lacking values
employee_df = pd.DataFrame({
    'employee_id': (1, 2, 3, 4, 5),
    'title': ('Ryan', 'James', 'Alicia'),
    'division': ('HR', None, 'Engineering'),
    'wage': (60000, 55000, None)
})

Sehen wir uns nun an, wie Pyjanitor beim Ausfüllen dieser fehlenden Werte helfen kann:

# Substitute lacking 'division' with 'Unknown'
# Substitute the lacking 'wage' with the imply of salaries
employee_df = employee_df.fill_missing({
    'division': 'Unknown',
    'wage': employee_df('wage').imply(),
})
print(employee_df)

Ausgabe:

   employee_id     title   division   wage
0            1     Ryan           HR  60000.0
1            2    James      Unknown  55000.0
2            3   Alicia  Engineering  57500.0

In diesem Beispiel die Abteilung des Mitarbeiters ‚James‘ wird ersetzt durch ‚Unbekannt‘und das Gehalt von ‚Alicia‘ wird ersetzt durch den Durchschnitt von „Ryan“ – Die wunderbare Welt des Wahnsinns Und ‚James‘ Gehälter. Sie können verschiedene Strategien zum Umgang mit fehlenden Werten verwenden, z. B. Vorwärtsdurchlauf, Rückwärtsdurchlauf oder Auffüllen mit einem bestimmten Wert.

4. Zeilen filtern und Spalten auswählen

Das Filtern von Zeilen und Spalten ist eine wichtige Aufgabe bei der Datenanalyse. Pyjanitor vereinfacht diesen Prozess, indem es Funktionen bereitstellt, mit denen Sie Spalten auswählen und Zeilen basierend auf bestimmten Bedingungen filtern können. Angenommen, Sie haben einen Datenrahmen mit Studentendatensätzen und möchten Studenten (Zeilen) herausfiltern, deren Noten unter 60 liegen. Sehen wir uns an, wie Pyjanitor uns dabei hilft.

# Create a knowledge body with scholar information
students_df = pd.DataFrame({
    'student_id': (1, 2, 3, 4, 5),
    'title': ('John', 'Julia', 'Ali', 'Sara', 'Sam'),
    'topic': ('Maths', 'Common Science', 'English', 'Historical past''),
    'marks': (85, 58, 92, 45, 75),
    'grade': ('A', 'C', 'A+', 'D', 'B')
})

# Filter rows the place marks are lower than 60
filtered_students_df = students_df.question('marks >= 60')
print(filtered_students_df)

Ausgabe:

   student_id    title  topic  marks grade
0           1    John     Math     85     A
2           3   Lucas  English     92    A+
4           5  Sophia     Math     75     B

Nehmen wir nun an, Sie möchten auch nur bestimmte Spalten ausgeben, z. B. nur den Namen und die ID, und nicht die gesamten Daten. Pyjanitor kann Ihnen dabei auch wie folgt helfen:

# Choose particular columns
selected_columns_df = filtered_students_df.loc(:,('student_id', 'title'))

Ausgabe:

   student_id    title  
0           1    John    
2           3   Lucas 
4           5  Sophia 

5. Verkettungsmethoden

Mit der Methodenverkettungsfunktion von Pyjanitor können Sie mehrere Vorgänge in einer einzigen Zeile ausführen. Diese Funktion ist eine der besten Funktionen. Betrachten wir zur Veranschaulichung einen Datenrahmen, der Daten über Autos enthält:

# Create a knowledge body with pattern automobile information
cars_df =pd.DataFrame ({
    'Automobile ID': (101, None, 103, 104, 105),
    'Automobile Mannequin': ('Toyota', 'Honda', 'BMW', 'Mercedes', 'Tesla'),
    'Value ($)': (25000, 30000, None, 40000, 45000),
    'Yr': (2018, 2019, 2017, 2020, None)
})
print("Vehicles Information Earlier than Making use of Technique Chaining:")
print(cars_df)

Ausgabe:

Vehicles Information Earlier than Making use of Technique Chaining:
   Automobile ID Automobile Mannequin  Value ($)    Yr
0   101.0    Toyota    25000.0  2018.0
1     NaN     Honda    30000.0  2019.0
2   103.0       BMW        NaN  2017.0
3   104.0  Mercedes    40000.0  2020.0
4   105.0     Tesla    45000.0     NaN

Jetzt sehen wir, dass der Datenrahmen fehlende Werte und inkonsistente Spaltennamen enthält. Wir können dies lösen, indem wir Operationen sequenziell ausführen, wie zum Beispiel clean_names(), rename_column()Und, dropna()usw. in mehreren Zeilen. Alternativ können wir diese Methoden miteinander verketten – additionally mehrere Operationen in einer einzigen Zeile ausführen – für einen flüssigeren Workflow und saubereren Code.

# Chain strategies to scrub column names, drop rows with lacking values, choose particular columns, and rename columns
cleaned_cars_df = (
  cars_df
  .clean_names()  # Clear column names
  .dropna()  # Drop rows with lacking values
  .select_columns(('car_id', 'car_model', 'worth')) #Choose columns
  .rename_column('worth', 'price_usd')  # Rename column
)

print("Vehicles Information After Making use of Technique Chaining:")
print(cleaned_cars_df)

Ausgabe:

Vehicles Information After Making use of Technique Chaining:
   car_id car_model  price_usd 
0   101.0    Toyota  25000 
3   104.0  Mercedes  40000  

In dieser Pipeline wurden die folgenden Vorgänge ausgeführt:

  • clean_names() Funktion bereinigt die Spaltennamen.
  • dropna() Funktion löscht die Zeilen mit fehlenden Werten.
  • select_columns() Die Funktion wählt die spezifischen Spalten „car_id“, „car_model“ und „worth“ aus.
  • rename_column() Die Funktion benennt die Spalte „Preis“ in „Preis_USD“ um.

Einpacken

Zusammenfassend erweist sich Pyjanitor als magische Bibliothek für jeden, der mit Daten arbeitet. Es bietet viel mehr Funktionen als in diesem Artikel besprochen, wie z. B. das Kodieren kategorialer Variablen, das Abrufen von Merkmalen und Beschriftungen, das Identifizieren doppelter Zeilen und vieles mehr. Alle diese erweiterten Funktionen und Methoden können in seinem Dokumentation. Je tiefer Sie in die Funktionen eintauchen, desto mehr werden Sie von der leistungsstarken Funktionalität überrascht sein. Und schließlich: Viel Spaß beim Bearbeiten Ihrer Daten mit Pyjanitor.

Kanwal Mehreen Kanwal ist Ingenieurin für maschinelles Lernen und technische Autorin mit einer großen Leidenschaft für Datenwissenschaft und die Schnittstelle zwischen KI und Medizin. Sie ist Mitautorin des E-Books „Maximizing Productiveness with ChatGPT“. Als Google Era Scholar 2022 für APAC setzt sie sich für Vielfalt und akademische Exzellenz ein. Sie ist außerdem als Teradata Variety 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.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert