La première étape de l'analyse des données, de l'attente et du prétraitement des données Données provenant des prix des logements: Advanced Regression Techniques, un concours d'étude Kaggle, est utilisé. Données de la maison Le thème est de prédire le prix à partir de maintenant. House Prices: Advanced Regression Techniques
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Vérifiez quel type de données est inclus
!ls ../input/house-prices-advanced-regression-techniques
↓↓↓
data_description.txt sample_submission.csv test.csv train.csv
train.csv
correspond aux données d'entraînement
test.csv
correspond aux données à tester
Un exemple de sample_submission.csv
vous demandant de soumettre une réponse comme celle-ci
data_description.txt
est une description de chaque colonne
Ensuite, lisez chaque fichier csv comme pandas.DataFrame
avec 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)
Jetons un coup d'œil au contenu des données d'entraînement. Les 5 premiers éléments du tableau sont affichés ci-dessous
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
Il semble y avoir 81 colonnes. plein. À propos, le prix de vente est absent des données de test. Le thème est d'anticiper le prix de vente.
Eh bien, je n'ai vérifié que les 5 premiers cas, mais combien y en a-t-il au total?
print(len(train_data), len(test_data))
1460 1459
Eh bien, vous pouvez voir que les données d'entraînement sont composées de 1460 lignes et 81 colonnes.
Vous pouvez maintenant saisir le nombre de données. En regardant le tableau ci-dessus, certaines valeurs manquantes (NaN et blancs) sont dispersées. Vérifions également le nombre total de valeurs manquantes.
ʻIsnull () détermine s'il y a une valeur manquante (retourne en tant que type booléen, c'est-à-dire
True False), Calculez le nombre total de valeurs manquantes avec
sum () as
True = 1`` False = 0. Cela signifie le processus de comptage des valeurs non manquantes avec
count ()`.
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
Désormais, une action possible pour les valeurs manquantes consiste à incorporer les valeurs manquantes avec quelque chose de différent ou à supprimer les lignes ou les colonnes contenant les valeurs manquantes. Par exemple, si vous regardez la ligne supérieure de PoolQC
, le pourcentage de valeurs manquantes est de 99%, supprimons donc la colonne comme suit.
train_data = train_data.drop('PoolQC',axis=1)
Si vous vérifiez la valeur manquante comme avant pour voir si elle disparaît vraiment
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
Certes, la ligne du haut a disparu. Maintenant, jetons un coup d'œil non seulement à la trame de données, mais également au graphique. (J'ai importé matplotlib.pyplot et seaborn pour cela.)
Ça fait longtemps, donc la prochaine fois!
Recommended Posts