Bei der Datenanalyse wie dem maschinellen Lernen ist die Datenvorverarbeitung unverzichtbar, und insbesondere in der Praxis sind alle Daten unerwartet. Python hat jedoch das stärkste Modul namens Pandas, und es gibt fast nichts, was bei der Datenverarbeitung strukturierter Daten nicht möglich ist. Unter Pandas wird DataFrame, das Tabellendaten verarbeitet, extrem häufig verwendet, und DataFrame wird hier erläutert. Der aktuelle Code ist auf github aufgeführt. Bitte beziehen Sie sich darauf. https://github.com/andever-flatfish/pandas-tips/blob/master/notebook/pandas-tips.ipynb
Führen Sie zunächst jeden Tipp mit dem folgenden DataFrame aus.
import pandas as pd
df = pd.DataFrame([['tokyo', 'male', 21, 165, 63],
['osaka', 'male', 28, 170, 71],
['fukuoka', 'female', 32, 175, 58],
['tokyo', 'male', 21, 165, 63],
['osaka', 'female', 28, 175, 70],
['fukuoka', 'male', 32, 155, 58],
['tokyo', 'female', 21, 165, 63],
['osaka', 'male', 28, 172, 67],
['fukuoka', 'male', 42, 155, 48]],
columns=['area', 'gender', 'age', 'height', 'weight'])
Da Python eine dynamisch typisierte Sprache ist, müssen Sie sich der Typen grundsätzlich nicht bewusst sein. Es kommt jedoch häufig vor, dass ein unerwarteter Fehler auftritt. Zum Beispiel haben die Daten, von denen ich dachte, dass sie vom Typ int sind, nur einen Datenraum und sind vom Objekttyp. Überprüfen Sie in diesem Fall den folgenden Datentyp.
df.dtypes
area object
gender object
age int64
height int64
weight int64
dtype: object
Wenn Sie nur eine Spalte sehen möchten, können Sie unten überprüfen.
df['height'].dtype
dtype('int64')
Wenn Sie den Typ int in den Typ float konvertieren möchten, können Sie wie folgt vorgehen. Wenn Sie mit df ['height']. Dtype oben überprüfen, können Sie sehen, dass es konvertiert wurde.
df['height'] = df['height'].astype(float)
Um den Objekttyp in den Typ int oder float zu konvertieren, müssen jedoch die Daten, die zum Objekttyp geworden sind (z. B. Leerzeichen), korrigiert oder entfernt und anschließend mit astype konvertiert werden.
Oft möchten Sie die Spaltennamen in einem DataFrame sehen. Wenn Sie für jede Spalte etwas tun möchten, ist es außerdem praktisch, die Spaltennamen in einer Liste zu speichern.
df_columns = list(df.columns)
print(df_columns)
['area', 'gender', 'age', 'height', 'weight']
Nur Daten, die bestimmte Bedingungen erfüllen, können zeilenweise extrahiert werden. Wenn Sie beispielsweise Daten extrahieren möchten, deren Bereich nur "fukuoka" in df ist, können Sie ihn wie folgt extrahieren.
part_of_df1 = df[df['area']=='fukuoka']
Wenn Sie Daten mit 'Bereich' von'tokyo'or'osaka 'in df extrahieren möchten, können Sie sie auch wie folgt extrahieren.
part_of_df2 = df[df['area'].isin(['tokyo', 'osaka'])]
Wenn Sie nur die Daten einer bestimmten Zeile extrahieren, bleibt der Index der Index des ursprünglichen DataFrame. Weisen Sie den Index daher wie folgt neu zu.
part_of_df1.reset_index(drop=True, inplace=True)
Wenn Sie die Reihenfolge der Spalten im DataFrame ändern möchten, können Sie die Spalten in der Reihenfolge auflisten, in der Sie diese Liste sortieren und aufrufen möchten.
sorted_columns_list1 = ['height', 'weight', 'gender', 'area', 'age']
sorted_df1 = df[sorted_columns_list1]
Neben der Sortierung können auch nur bestimmte Spalten extrahiert werden.
sorted_columns_list2 = ['area', 'gender', 'age']
sorted_df2 = df[sorted_columns_list2]
Verwenden Sie Umbenennen, um die Spaltennamen wie folgt zu ändern:
rename_df = df.rename(columns={'area':'Bereich',
'gender':'Sex',
'age':'Alter',
'height':'Höhe',
'weight':'Körpergewicht'})
Verwenden Sie Anhängen, um verschiedene Daten mit demselben Spaltennamen zu verbinden.
other_df = pd.DataFrame([['hokkaido', 'male', 25, 162, 60],
['hokkaido', 'female', 38, 179, 81]],
columns=['area', 'gender', 'age', 'height', 'weight'])
union_df = df.append(other_df, ignore_index=True)
Um numerische Daten zu bestätigen, können Sie bei der Berechnung der Basisstatistik einen Treffer wie einen Ausreißer erhalten.
df.describe()
Daten können wie folgt leicht gelesen werden. Wenn df verstümmelt ist, geben Sie die Codierung ein.
df = pd.read_csv('data.csv')
Wenn die ursprüngliche CSV-Datei keinen Header enthält, schreiben Sie wie folgt.
df = pd.read_csv('data.csv', header=None)
Sie können wie folgt einfach ausgeben. Wenn es sich nur um einen Seriennummernindex handelt, wird er häufig nicht ausgegeben.
df.to_csv('data.csv', index=False)
Wenn Sie es nicht oft verwenden, aber keinen Header ausgeben möchten, schreiben Sie wie folgt.
df.to_csv('data.csv', header=False, index=False)
Recommended Posts