[PYTHON] Erster Schritt der Datenanalyse (Anzahl der Daten, Tabellenanzeige, fehlende Werte)

Der erste Schritt der Datenanalyse, des Abwartens und der Vorverarbeitung von Daten (diesmal des Abwartens) Daten aus Immobilienpreisen: Advanced Regression Techniques, ein Kaggle-Studienwettbewerb, wird verwendet. Hausdaten Das Thema ist, den Preis von nun an vorherzusagen. House Prices: Advanced Regression Techniques

Überprüfen Sie den Inhalt der Daten

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns

Überprüfen Sie, welche Art von Daten enthalten sind

!ls ../input/house-prices-advanced-regression-techniques

↓↓↓

data_description.txt  sample_submission.csv  test.csv  train.csv

train.csv sind Trainingsdaten test.csv sind die Daten zum Testen Ein Beispiel für sample_submission.csv, in dem Sie aufgefordert werden, eine solche Antwort einzureichen data_description.txt ist eine Beschreibung jeder Spalte

Lesen Sie dann jede CSV-Datei als "pandas.DataFrame" mit "pd.read_csv"

TEST_PATH = "../input/house-prices-advanced-regression-techniques/test.csv"
TRAIN_PATH = "../input/house-prices-advanced-regression-techniques/train.csv"
SUBMISSION_PATH = "../input/house-prices-advanced-regression-techniques/sample_submission.csv"

test_data = pd.read_csv(TEST_PATH)
train_data = pd.read_csv(TRAIN_PATH)
sample_submission = pd.read_csv(SUBMISSION_PATH)

Werfen wir einen Blick auf den Inhalt der Trainingsdaten. Die ersten 5 Elemente in der Tabelle werden unten angezeigt

train_data.head()

↓↓↓


	Id	MSSubClass	MSZoning	LotFrontage	LotArea	Street	Alley	LotShape	...	MiscFeature	MiscVal	MoSold	YrSold	SaleType	SaleCondition	SalePrice
0	1	60	        RL	        65.0	    8450	Pave	NaN  	Reg	        ... NaN	        0	    2	    2008	WD	        Normal	        208500
1	2	20	        RL	        80.0	    9600	Pave	NaN	    Reg	        ... NaN	        0	    5	    2007	WD	        Normal	        181500
2	3	60	        RL	        68.0	    11250	Pave	NaN 	IR1	        ... NaN	        0	    9	    2008	WD	        Normal	        223500
3	4	70	        RL	        60.0	    9550	Pave	NaN 	IR1	        ... NaN	        0	    2	    2006	WD	        Abnorml	        140000
4	5	60	        RL	        84.0	    14260	Pave	NaN 	IR1	        ... NaN	        0	    12	    2008	WD	        Normal	        250000
5 rows × 81 columns

Es scheint 81 Spalten zu geben. voll. Übrigens fehlt der Verkaufspreis in den Testdaten. Das Thema ist, den Verkaufspreis vorwegzunehmen.

Nun, ich habe nur die ersten 5 Fälle überprüft, aber wie viele gibt es insgesamt?

print(len(train_data), len(test_data))
1460 1459

Nun, Sie können sehen, dass die Trainingsdaten aus 1460 Zeilen und 81 Spalten bestehen.

Bestätigung fehlender Werte

Jetzt können Sie die Anzahl der Daten erfassen. Wenn Sie sich die Tabelle oben ansehen, sehen Sie einige fehlende Werte (NaN und Leerzeichen). Überprüfen wir auch, wie viele Werte insgesamt fehlen.

Verwenden Sie "isnull ()", um festzustellen, ob ein Wert fehlt (Rückgabe als Bool-Typ, dh "True False"). Berechnen Sie die Gesamtzahl der fehlenden Werte mit sum () als True = 1`` False = 0. Dies bedeutet, dass nicht fehlende Werte mit "count ()" gezählt werden.


total = train_data.isnull().sum().sort_values(ascending=False)
percent = (train_data.isnull().sum()/train_data.isnull().count()).sort_values(ascending=False)
missing_data = pd.concat([total, percent], axis=1, keys=['Total', 'Percent'])
missing_data.head(20)

↓↓↓


	         Total	Percent
PoolQC	     1453	0.995205
MiscFeature	 1406	0.963014
Alley	     1369	0.937671
Fence	     1179	0.807534
FireplaceQu	 690	0.472603
LotFrontage	 259	0.177397
GarageCond	 81	    0.055479
GarageType	 81	    0.055479
GarageYrBlt	 81	    0.055479
GarageFinish 81 	0.055479
GarageQual	 81 	0.055479
BsmtExposure 38 	0.026027
BsmtFinType2 38 	0.026027
BsmtFinType1 37 	0.025342
BsmtCond	 37 	0.025342
BsmtQual	 37 	0.025342
MasVnrArea	 8  	0.005479
MasVnrType	 8  	0.005479
Electrical	 1  	0.000685
Utilities	 0  	0.000000

Eine mögliche Aktion für fehlende Werte besteht nun darin, die fehlenden Werte mit etwas anderem einzubetten oder die Zeilen oder Spalten zu löschen, die die fehlenden Werte enthalten. Wenn Sie sich beispielsweise die oberste Zeile von "PoolQC" ansehen, beträgt der Prozentsatz der fehlenden Werte 99%. Löschen Sie die Spalte also wie folgt.

train_data = train_data.drop('PoolQC',axis=1)

Wenn Sie den fehlenden Wert wie zuvor überprüfen, um festzustellen, ob er wirklich verschwindet


	         Total	Percent
MiscFeature	 1406	0.963014
Alley	     1369	0.937671
Fence	     1179	0.807534
FireplaceQu	 690	0.472603
LotFrontage	 259	0.177397
GarageCond	 81	    0.055479
GarageType	 81	    0.055479
GarageYrBlt	 81	    0.055479
GarageFinish 81 	0.055479
GarageQual	 81 	0.055479
BsmtExposure 38 	0.026027
BsmtFinType2 38 	0.026027
BsmtFinType1 37 	0.025342
BsmtCond	 37 	0.025342
BsmtQual	 37 	0.025342
MasVnrArea	 8  	0.005479
MasVnrType	 8  	0.005479
Electrical	 1  	0.000685
Utilities	 0  	0.000000

Sicherlich ist die oberste Zeile verschwunden. Schauen wir uns nun nicht nur den Datenrahmen an, sondern auch das Diagramm. (Ich habe dafür matplotlib.pyplot und seaborn importiert.)

Es ist lange her, also nächstes Mal!

Recommended Posts

Erster Schritt der Datenanalyse (Anzahl der Daten, Tabellenanzeige, fehlende Werte)
Erste Satellitendatenanalyse von Tellus
Empfehlung zur Datenanalyse mit MessagePack
Zeitreihenanalyse 3 Vorverarbeitung von Zeitreihendaten
Datenverarbeitung 2 Analyse verschiedener Datenformate
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
Datenanalyse in Python Zusammenfassung der Quellen, die Anfänger zuerst betrachten sollten
Eine Einführung in die Datenanalyse mit Python - Um die Anzahl der Videoansichten zu erhöhen -
Der erste Schritt zur Protokollanalyse (Formatieren und Einfügen von Protokolldaten in Pandas)