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
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.
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