AI-United » Allgemein » Einige einfache und dennoch praktische Datenbereinigungscodes

Einige einfache und dennoch praktische Datenbereinigungscodes

Um die üblichen Szenarien fehlerhafter Daten zu lösen

Einige einfache und dennoch praktische Datenbereinigungscodes

Datenwissenschaftler verstehen die Bedeutung der Datenbereinigung und wissen, dass sie leicht 40-70% des gesamten datenwissenschaftlichen Workflows einnehmen könnte. Unsere Welt ist unvollkommen, dies bezieht sich auch auf die Daten.

Müll rein, Müll raus

Die Aufgabe der Datenwissenschaft besteht darin, die maximale Datenqualität sicherzustellen. Da die realen Daten ziemlich schmutzig sind, sollten die Datenwissenschaftler, die oft auch Datenbereiniger genannt werden, fähig sein, Daten vor jeder Datenanalyse oder Modellerstellung zu bereinigen.

Lange Rede kurzer Sinn: Jeder Datenwissenschaftler sollte danach streben, die Datenbereinigung vor Datenanalyse, Visualisierung und Modellerstellung durchzuführen.

Zugegeben, die Datenbereinigung ist keine leichte Aufgabe und oft ein sehr zeitaufwändiger und mühsamer Prozess, der so wichtig ist, dass er nicht vernachlässigt werden kann.

Um dies zu verstehen, müssen Sie den ganzen Prozess selbst durchlaufen. Dieser Artikel wurde mit dem Zweck geschrieben, den Lesern zu helfen, die Datenbereinigung auf reibungslose Weise durchzuführen.

Die Relevanz dieses Artikels

Da einige Daten ähnliche Muster aufweisen, wenn es zur Datenbereinigung kommt, wurden einige der Datenbereinigungscodes zusammengestellt, die voraussichtlich auch für andere übliche Szenarien verwendet werden könnten – ein kleines Instrumentarium für die Datenbereinigung.

Da die üblichen Szenarien hier verschiedene Arten von Datensätzen umfassen, wird eine größere Aufmerksamkeit darauf gerichtet, die Anwendungsgebiete der Codes zu zeigen und zu erklären, damit Sie sie einfach anschließen und spielen können.

Hoffentlich werden Sie am Ende dieses Artikels die Codes nützlich finden und dadurch die Datenbereinigung schneller und effizienter durchführen können.

Lassen Sie uns anfangen!

Ein kleines Instrumentarium zur Datenbereinigung

Es sollte darauf hingewiesen werden, dass die Codes in den nachfolgenden Codeausschnitten zur Selbsterklärung in Funktionen geschrieben sind. Die Codes können jedoch immer direkt verwendet werden, ohne dass sie mit einer kleinen Änderung der Parameter in Funktionen umgewandelt werden.

1. Löschen mehrerer Spalten

Da öfters nicht alle Spalten in der Analyse nützlich sind, können die ausgewählten Spalten anhand df.drop gelöscht werden.

def drop_multiple_col(col_names_list, df): 
    '''
    AIM    -> Drop multiple columns based on their column names 
    
    INPUT  -> List of column names, df
    
    OUTPUT -> updated df with dropped columns 
    ------
    '''
    df.drop(col_names_list, axis=1, inplace=True)
    return df
2. Änderung von dtypes
def change_dtypes(col_int, col_float, df): 
    '''
    AIM    -> Changing dtypes to save memory
     
    INPUT  -> List of column names (int, float), df
    
    OUTPUT -> updated df with smaller memory  
    ------
    '''
    df[col_int] = df[col_int].astype('int32')
    df[col_float] = df[col_float].astype('float32')

Bei diesem Schritt muss dtypes umgewandelt werden, wenn ein Datensatz größer wird. Auf diese Weise wird Speicherplatz gespart.

3. Umwandlung von kategorialen Variablen in numerische
def convert_cat2num(df):
    # Convert categorical variable to numerical variable
    num_encode = {'col_1' : {'YES':1, 'NO':0},
                  'col_2'  : {'WON':1, 'LOSE':0, 'DRAW':0}}  
    df.replace(num_encode, inplace=True)

Einige Modelle des maschinellen Lernens erfordern, dass Variablen numerisch dargestellt sind. In diesem Fall ist es notwendig, kategoriale Variablen in numerische umzuwandeln. Erst danach können sie in die Modelle eingegeben werden. Im Hinblick auf die Datenvisualisierung macht es Sinn, die kategorialen Variablen beizubehalten, wodurch eine explizitere Interpretation und ein besseres Verständnis erhalten werden können.

4. Überprüfung fehlender Daten
def check_missing_data(df):
    # check for any missing data in the df (display in descending order)
    return df.isnull().sum().sort_values(ascending=False)

Dies ist der schnellste Weg, die Anzahl der fehlenden Daten für jede Spalte zu überprüfen. Dies gibt ein besseres Verständnis dafür, welche Spalten eine höhere Anzahl von fehlenden Daten haben, was den nächsten Schritt der Datenbereinigung und -analyse bestimmt.

5. Entfernung von Zeichenfolgen in Spalten
def remove_col_str(df):
    # remove a portion of string in a dataframe column - col_1
    df['col_1'].replace('\n', '', regex=True, inplace=True)
    
    # remove all the characters after &# (including &#) for column - col_1
    df['col_1'].replace(' &#.*', '', regex=True, inplace=True)

Es könnte etwas Zeit in Anspruch nehmen, bis das neue Zeilenzeichen oder andere seltsame Symbole ins Auge fallen, die sich in Zeichenfolgenspalten zeigen. Um dies leicht zu beheben, wird df[‚col_1‘].replace verwendet, wobei col_1 eine der Spalten im Datenrahmen df ist.

6. Entfernung von Leerzeichen in Spalten
def remove_col_white_space(df,col):
    # remove white space at the beginning of string 
    df[col] = df[col].str.lstrip()

Bei fehlerhaften Daten ist vieles möglich. Es ist nichts Ungewöhnliches daran, dass es einige Leerzeichen am Anfang der Zeichenfolgen gibt. Dieser Ansatz ist zum Entfernen dieser Leerzeichen am Anfang der Zeichenfolgen in einer Spalte sehr nützlich.

7. Verkettung von zwei Spalten mit Zeichenfolgen (mit Bedingung)
def concat_col_str_condition(df):
    # concat 2 columns with strings if the last 3 letters of the first column are 'pil'
    mask = df['col_1'].str.endswith('pil', na=False)
    col_new = df[mask]['col_1'] + df[mask]['col_2']
    col_new.replace('pil', ' ', regex=True, inplace=True)  # replace the 'pil' with emtpy space

Manchmal ist es notwendig, zwei Spalten mit Zeichenfolgen bedingt zu verbinden. Dieser Ansatz zeigt, wie die erste Spalte mit der zweiten verkettet wird, unter der Bedingung, dass die Zeichenfolgen in der ersten Spalte mit bestimmten Buchstaben enden. Wenn es benötigt wird, können die Endbuchstaben nach der Verkettung entfernt werden.  

8. Konvertierung von Zeitstempeln (von Zeichenfolge in Datetime-Format)
def convert_str_datetime(df): 
    '''
    AIM    -> Convert datetime(String) to datetime(format we want)
     
    INPUT  -> df
    
    OUTPUT -> updated df with new datetime format 
    ------
    '''
    df.insert(loc=2, column='timestamp', value=pd.to_datetime(df.transdate, format='%Y-%m-%d %H:%M:%S.%f'))

Bei Bearbeitung von Zeitreihendaten gibt es eine sehr große Wahrscheinlichkeit, auf eine Zeitstempelspalte im Zeichenfolgenformat zu stoßen. In diesem Fall muss das Zeichenfolgenformat in das Datetime-Format konvertiert werden, d.h. ein Format, das nach bestimmten Anforderung festgelegt wird. Dies ermöglicht, eine sinnvolle Analyse und Darstellung unter Verwendung von Daten zu geben.


Fazit

In diesem Artikel wurde gezeigt, dass die Codes von Natur aus relativ einfach implementiert werden können. Hoffentlich können Sie jetzt die Datenbereinigung mithilfe des kleinen Instrumentarium mit mehr Vertrauen durchführen. Darüber hinaus gab es einen genaueren Überblick, wie Datensätze basierend auf unserer Erfahrung typischerweise aussehen.

Sollten Sie Schwierigkeiten bei der Durchführung der Datenbereinigung haben, so können Sie sich an das Team von AI-United.de per Mail oder Q&A wenden.

Quelle

AI-United-Redaktion

Kommentar hinzufügen

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