Daten aus der realen Welt sind selten perfekt – sie sind oft chaotisch, inkonsistent und voller Überraschungen. In diesem Beitrag erfahren Sie, wie Sie in Python eine Datenbereinigung für einen Datensatz aus dem Museum of Fashionable Artwork (MoMA) durchführen. Der Datensatz, der Hunderte von Kunstwerken katalogisiert, enthält häufige Datenprobleme wie fehlende Werte, inkonsistente Formate und schwierige Datumsbereiche.

Über den MoMA-Datensatz

Kunst ist ein chaotisches Geschäft. Im Laufe der Jahrhunderte haben Künstler alles geschaffen, von einfachen Gemälden bis hin zu komplexen Skulpturen, und Kunsthistoriker haben dabei alles katalogisiert, was ihnen möglich warfare. Das Museum of Fashionable Artwork, kurz MoMA, ist eines der einflussreichsten Museen der Welt und hat seinen Kunstkatalog öffentlich zugänglich gemacht. Sie können den Datensatz herunterladen unter GitHub und begleiten Sie uns bei der Reinigung und Vorbereitung für die Analyse.

Das Museum hat jedoch einen Haftungsausschluss herausgegeben, dass der Datensatz noch in Arbeit ist – vielleicht ein sich weiterentwickelndes Kunstwerk für sich. Wie bei vielen realen Datensätzen bedeutet dies, dass sie Qualitätsprobleme enthalten, die behoben werden müssen. Wir verwenden Python, um diese Eigenheiten zu untersuchen, Muster zu identifizieren und den Datensatz in ein saubereres Format für tiefere Einblicke umzuwandeln.

Warum Datenbereinigung in Python durchführen?

Python hat sich dank seiner Benutzerfreundlichkeit und leistungsstarken Bibliotheken zu einem der beliebtesten Instruments für die Arbeit mit Daten entwickelt. Organisationen aller Branchen verlassen sich auf Python, von der Verarbeitung von Finanzberichten bis hin zur Analyse wissenschaftlicher Forschung. Wenn es um die Datenbereinigung geht, bietet die Pandas-Bibliothek von Python effiziente Instruments für den Umgang mit unordentlichen Datensätzen, wie wir sie vom MoMA verwenden.

Gleich werden wir Pandas verwenden, um den Datensatz schnell zu laden, seine Struktur zu untersuchen und häufige Probleme zu beheben. Wenn Sie neu bei Python sind oder die Grundlagen auffrischen möchten, schauen Sie sich unsere an Einführung in die Python-Programmierung Kurs, der eine solide Grundlage für den Einstieg bietet.

Mit Pandas die Daten erkunden

Bevor wir mit der Bereinigung beginnen, werfen wir einen genaueren Blick auf den MoMA-Datensatz, um seine Struktur zu verstehen und mögliche Probleme zu identifizieren. Wir verwenden Pandas, eine beliebte Python-Bibliothek zum Arbeiten mit Daten, um die ersten 100 Zeilen in einen DataFrame zu laden. Dadurch können wir den Datensatz erkunden und eine Vorschau auf das erhalten, womit wir arbeiten.


import pandas
artworks_100 = pandas.read_csv("MOMA_Artworks.csv")
artworks_100.head(10)
Titel Künstler KünstlerBio Datum Medium Abmessungen CreditLine MoMANummer Einstufung Abteilung Datum des Erwerbs Vom Kurator genehmigt Objekt-ID URL
0 Projekt Ferdinandsbrücke, Wien, Österreich, El… Otto Wagner (Österreichisch, 1841–1918) 1896 Tusche und ausgeschnittene und geklebte bemalte Seiten auf Papier 19 1/8 x 66 1/2″ (48,6 x 168,9 cm) Bruchteil und versprochenes Geschenk von Jo Carole und … 885.1996 A&D-Architekturzeichnung Architektur & Design 09.04.1996 Y 2 https://www.moma.org/assortment/works/2
1 Stadt der Musik, Nationwide Superior Conservatory … Christian de Portzamparc (Französisch, geb. 1944) 1987 Farbe und Buntstift auf dem Druck 16 x 11 3/4″ (40,6 x 29,8 cm) Geschenk des Architekten zu Ehren von Lily Auchinc… 1.1995 A&D-Architekturzeichnung Architektur & Design 17.01.1995 Y 3 https://www.moma.org/assortment/works/3
2 Villa in der Nähe von Wien Projekt, außerhalb von Wien, Österreich… Emil Hoppe (Österreichisch, 1876–1957) 1903 Graphit, Stift, Farbstift, Tinte und Gouache … 13 1/2 x 12 1/2″ (34,3 x 31,8 cm) Geschenk von Jo Carole und Ronald S. Lauder 1.1997 A&D-Architekturzeichnung Architektur & Design 15.01.1997 Y 4 https://www.moma.org/assortment/works/4
3 Das Manhattan Transcripts Mission, New York, N… Bernard Tschumi (Franzose und Schweizer, geboren 1944 in der Schweiz) 1980 Fotografische Reproduktion mit farbigem Synthetikmaterial. 20 x 20″ (50,8 x 50,8 cm) Kauf und teilweise Schenkung des Architekten in … 2.1995 A&D-Architekturzeichnung Architektur & Design 17.01.1995 Y 5 https://www.moma.org/assortment/works/5
4 Villa, Projekt, außerhalb von Wien, Österreich, Außen… Emil Hoppe (Österreichisch, 1876–1957) 1903 Graphit, Farbstift, Tinte und Gouache auf Tr… 15 1/8 x 7 1/2″ (38,4 x 19,1 cm) Geschenk von Jo Carole und Ronald S. Lauder 2.1997 A&D-Architekturzeichnung Architektur & Design 15.01.1997 Y 6 https://www.moma.org/assortment/works/6
5 Das Manhattan Transcripts Mission, New York, N… Bernard Tschumi (Franzose und Schweizer, geboren 1944 in der Schweiz) 1976-77 Foto aus Gelatinesilber 14 x 18 Zoll (35,6 x 45,7 cm) Kauf und teilweise Schenkung des Architekten in … 3.1995.1 A&D-Architekturzeichnung Architektur & Design 17.01.1995 Y 7 https://www.moma.org/assortment/works/7
6 Das Manhattan Transcripts Mission, New York, N… Bernard Tschumi (Franzose und Schweizer, geboren 1944 in der Schweiz) 1976-77 Fotografien aus Gelatinesilber Jeweils: 14 x 18″ (35,6 x 45,7 cm) Kauf und teilweise Schenkung des Architekten in … 3.1995.1-24 A&D-Architekturzeichnung Architektur & Design 17.01.1995 Y 8 https://www.moma.org/assortment/works/8
7 Das Manhattan Transcripts Mission, New York, N… Bernard Tschumi (Franzose und Schweizer, geboren 1944 in der Schweiz) 1976-77 Foto aus Gelatinesilber 14 x 18 Zoll (35,6 x 45,7 cm) Kauf und teilweise Schenkung des Architekten in … 3.1995.10 A&D-Architekturzeichnung Architektur & Design 17.01.1995 Y 9 https://www.moma.org/assortment/works/9
8 Das Manhattan Transcripts Mission, New York, N… Bernard Tschumi (Franzose und Schweizer, geboren 1944 in der Schweiz) 1976-77 Foto aus Gelatinesilber 14 x 18 Zoll (35,6 x 45,7 cm) Kauf und teilweise Schenkung des Architekten in … 3.1995.11 A&D-Architekturzeichnung Architektur & Design 17.01.1995 Y 10 https://www.moma.org/assortment/works/10
9 Das Manhattan Transcripts Mission, New York, N… Bernard Tschumi (Franzose und Schweizer, geboren 1944 in der Schweiz) 1976-77 Foto aus Gelatinesilber 14 x 18 Zoll (35,6 x 45,7 cm) Kauf und teilweise Schenkung des Architekten in … 3.1995.12 A&D-Architekturzeichnung Architektur & Design 17.01.1995 Y 11 https://www.moma.org/assortment/works/11

Der .head() Die Methode zeigt die ersten paar Zeilen des Datensatzes an und hilft uns, etwaige Unregelmäßigkeiten sofort zu erkennen. Auf den ersten Blick enthält der Datensatz wertvolle Metadaten wie Titel, Künstler, Jahr und Medium jedes Kunstwerks. Allerdings können wir bereits einige Unregelmäßigkeiten feststellen Date Spalte, wie Jahresbereiche und nicht standardmäßige Einträge wie Unknown. Wir werden uns mit diesen Problemen befassen, während wir den Reinigungsprozess durchlaufen.

Arbeiten mit Daten in Pandas

Datumsangaben sind ein wichtiger Bestandteil vieler Datensätze, insbesondere bei der Analyse von Tendencies oder Mustern im Zeitverlauf. Im MoMA-Datensatz ist die Date Die Spalte enthält eine Mischung aus Formaten, z. B. Jahresbereiche (1976-77) und nicht standardmäßige Einträge (Unknown). Diese Inkonsistenzen erschweren die effektive Nutzung der Daten, sei es für die grafische Darstellung oder die Filterung nach Jahren.

Schauen wir uns zunächst die einzigartigen Werte im genauer an Date Spalte mit der .value_counts() Verfahren. Dies verschafft uns einen Überblick über die Daten und hilft uns, Muster oder Unregelmäßigkeiten zu erkennen, die behoben werden müssen.


# Verify the distribution of values within the 'Date' column
artworks_100('Date').value_counts()

Folgendes finden wir:


1976-77    25
1980-81    15
1979       12
Unknown     7
1980        5
1917        5
1978        5
1923        4
1935        3
1987        2
1903        2
1970        1
1896        1
1975        1
1984        1
1918        1
1986        1
n.d.        1
1906        1
1905        1
1930        1
1974        1
1936        1
1968        1
1900        1
c. 1917     1
dtype: int64

Diese Ausgabe hebt vier Schlüsselmuster in den Daten hervor:

  • Muster 1: Jahresbereiche wie 1976-77
  • Muster 2: Ungefähre Daten wie c. 1917
  • Muster 3: Fehlende Werte mit der Bezeichnung Unknown
  • Muster 4: Fehlende Werte mit der Bezeichnung n.d.

Bereinigen der Daten

Nachdem wir nun Unregelmäßigkeiten festgestellt haben Date Lassen Sie uns in der Spalte skizzieren, wie wir die Datenbereinigung in Python durchführen, um diese Probleme zu beheben. Jedes der vier Muster erfordert einen etwas anderen Ansatz:

  • Muster 1: Jahresbereiche ersetzen (z. B. 1976-77) mit dem ersten Jahr im Bereich.
  • Muster 2: Ungefähre Daten standardisieren (z. B. c. 1917) durch Entfernen der c. Präfix.
  • Muster 3: Fehlende Werte mit der Bezeichnung belassen Unknown unverändert.
  • Muster 4: Fehlende Werte mit der Bezeichnung konvertieren n.d. Zu Unknown für Konsistenz.

Durch die Anwendung dieser Transformationen stellen wir sicher, dass alle Werte in der Date In der Spalte sind entweder standardisierte Jahresangaben enthalten oder eindeutig als fehlende Informationen gekennzeichnet. Dadurch lässt sich der Datensatz einfacher analysieren und visualisieren.

Als Nächstes schreiben wir etwas Python-Code, um diese Änderungen Schritt für Schritt umzusetzen.

Muster 1: Jahresbereiche

Jahresbereiche wie 1976-77 erschweren die Analyse oder Visualisierung der Daten. Der Einfachheit halber ersetzen wir diese Bereiche durch das erste Jahr im Bereich. Zum Beispiel, 1976-77 wird werden 1976.

Dies können wir erreichen, indem wir den Wert am Bindestrich teilen (-) und nur den ersten Teil beibehalten. So geht’s:


def clean_split_dates(row):
    # Convert the present 'Date' worth to a string
    initial_date = str(row('Date'))
    # Break up the string on the hyphen
    split_date = initial_date.cut up('-')
    # Return the primary half if a hyphen is discovered; in any other case, return the unique worth
    return split_date(0) if len(split_date) > 1 else initial_date

# Apply the perform row by row to the 'Date' column
artworks_100('Date') = artworks_100.apply(clean_split_dates, axis=1)

# Verify the up to date distribution of values within the 'Date' column
artworks_100('Date').value_counts()

Nach Anwendung dieser Transformation wurden alle Jahresbereiche durch einzelne Jahre ersetzt, wodurch die Date Spalte konsistenter:


1976       25
1980       20
1979       12
Unknown     7
1917        5
1978        5
1923        4
1935        3
1987        2
1903        2
c. 1917     1
1918        1
1975        1
1968        1
n.d.        1
1905        1
1896        1
1984        1
1930        1
1970        1
1974        1
1986        1
1936        1
1900        1
1906        1
dtype: int64

Als nächstes werden wir darauf eingehen Muster 2 durch Standardisierung ungefährer Daten.

Muster 2: Ungefähre Daten

Im Datensatz werden einige Daten mithilfe des Präfixes als ungefähr gekennzeichnet c. (z.B, c. 1917). Um diese Einträge zu standardisieren, entfernen wir die c. Präfix, während das Jahr intakt bleibt. Zum Beispiel, c. 1917 wird werden 1917.

So können wir diese Einträge bereinigen:


def clean_approx_dates(row):
    # Convert the present 'Date' worth to a string
    initial_date = str(row('Date'))
    # Take away the 'c.' prefix if it exists
    if initial_date.startswith('c. '):
        return initial_date(3:)  # Return the string ranging from the 4th character
    return initial_date

# Apply the perform row by row to the 'Date' column
artworks_100('Date') = artworks_100.apply(clean_approx_dates, axis=1)

# Verify the up to date distribution of values within the 'Date' column
artworks_100('Date').value_counts()

Nach diesem Schritt wurden die ungefähren Daten bereinigt, so dass standardisierte Jahre übrig blieben. Hier ist eine aktualisierte Verteilung der Date Spalte:


1976       25
1980       20
1979       12
Unknown     7
1917        6
1978        5
1923        4
1935        3
1987        2
1903        2
1918        1
1975        1
1968        1
n.d.        1
1905        1
1896        1
1984        1
1930        1
1970        1
1974        1
1986        1
1936        1
1900        1
1906        1
dtype: int64

Nach diesem Schritt wurden die ungefähren Daten bereinigt, so dass standardisierte Jahre übrig blieben. Wir überspringen Muster 3 (Unknown), da wir diese Einträge unverändert lassen. Gehen wir stattdessen direkt zu Muster 4wobei wir andere fehlende Werte mit der Bezeichnung standardisieren n.d..

Muster 4: Fehlende Werte (n.d.)

Zusätzlich zu den Einträgen mit der Bezeichnung Unknownder Datensatz verwendet n.d. um fehlende Datumsinformationen anzuzeigen. Um die Daten konsistenter zu machen, ersetzen wir alle Instanzen von n.d. mit Unknown. Dadurch wird sichergestellt, dass fehlende Werte im gesamten Datensatz einheitlich dargestellt werden.

So können wir damit umgehen:


def clean_missing_dates(row):
    # Change 'n.d.' with 'Unknown' if discovered within the 'Date' column
    return 'Unknown' if row('Date') == 'n.d.' else row('Date')

# Apply the perform row by row to the 'Date' column
artworks_100('Date') = artworks_100.apply(clean_missing_dates, axis=1)

# Verify the up to date distribution of values within the 'Date' column
artworks_100('Date').value_counts()

1976       25
1980       20
1979       12
Unknown     8
1917        6
1978        5
1923        4
1935        3
1987        2
1903        2
1918        1
1975        1
1968        1
1905        1
1896        1
1984        1
1930        1
1970        1
1974        1
1986        1
1936        1
1900        1
1906        1
dtype: int64

Mit n.d. Einträge vereinheitlicht, alle fehlenden Werte werden nun mit gekennzeichnet Unknown. Diese Konsistenz erleichtert die Analyse oder Filterung der Daten bei fehlenden Daten.

Zu diesem Zeitpunkt haben wir alle Muster erfolgreich angegangen Date Spalte. Der Datensatz ist jetzt viel sauberer und bereit für die weitere Analyse.

Nächste Schritte

Wir haben einige wichtige Datenbereinigungstechniken in Python beim Bereinigen behandelt Date Spalte im MoMA-Datensatz, aber bei der Datenbereinigung müssen häufig eine Reihe von Problemen über mehrere Spalten hinweg behoben werden. Wenn Sie noch weiter gehen möchten, ist unser Exemplarische Vorgehensweise für das Datenbereinigungsprojekt Kurs ist ein toller nächster Schritt. In diesem sechsteiligen Kurs lernen Sie nicht nur, wie Sie Daten mit Python und Pandas bereinigen und transformieren, sondern umfassen auch zwei geführte Projekte, die sich perfekt für den Aufbau eines Portfolios eignen.

Während Sie diese Projekte durcharbeiten, sammeln Sie praktische Erfahrungen, die Sie potenziellen Arbeitgebern präsentieren können. Tipps, wie Sie Ihre Projekte wirkungsvoll präsentieren, finden Sie in unserem Leitfaden Erstellen eines Information-Science-Portfolios das fällt auf.

Von admin

Schreibe einen Kommentar

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