Исследовательский анализ данных наборов данных Kaggle.
Вступление:
Исследовательский анализ данных или EDA относится к процессу получения дополнительных сведений о данных и подготовки их к моделированию. Откровенно говоря, EDA и разработка функций - это искусство, в котором вы можете поиграть с данными и попытаться извлечь из них понимание, прежде чем приступить к процессу прогнозирования. Большинство людей понимают, что машинное обучение - это только модели и алгоритмы. Но для того, чтобы эти модели работали хорошо и с высокой точностью, необходим EDA. EDA предоставляет много важной информации, которую очень легко пропустить, информации, которая помогает в долгосрочном анализе.
Контекст:
Нет жестких правил выполнения EDA. Каждый, кто имеет дело с данными, должен найти свой собственный способ выполнения EDA и соответственно понимать данные. В этой статье я объясню свой пошаговый подход к выполнению EDA для набора данных Home price от Kaggle. Основные необходимые шаги:
- Импорт набора данных.
- Получение базовой информации.
- Анализируя различные характеристики и разделяя их на числовые и категориальные.
- Работа с недостающими значениями.
- Работа с коррелированными функциями.
В конце концов, я буду внедрять современный подход к EDA, используя библиотеку Sweetviz, которая, как мне кажется, может помочь нам сэкономить много времени и усилий.
Вместо этого я не буду показывать код в статье, здесь я дал ссылку на весь код. Пожалуйста, прочтите это, чтобы не отставать от объяснения.
Загрузка набора данных:
Как упоминалось выше, я буду использовать набор данных о ценах на жилье от Kaggle, ссылка на который дана здесь.
Мы будем загружать поезд и тестовый набор данных в фреймворк Pandas отдельно.
Предварительный анализ:
Фрейм данных, содержащий данные поезда и тестирования, хотел бы. Мы постараемся получить базовое представление обо всех данных.
Подробное описание функций дается вместе с набором данных. Краткая информация получена.
<class 'pandas.core.frame.DataFrame'> Int64Index: 1460 entries, 1 to 1460 Data columns (total 80 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 MSSubClass 1460 non-null int64 1 MSZoning 1460 non-null object 2 LotFrontage 1201 non-null float64 3 LotArea 1460 non-null int64 4 Street 1460 non-null object 5 Alley 91 non-null object 6 LotShape 1460 non-null object 7 LandContour 1460 non-null object 8 Utilities 1460 non-null object 9 LotConfig 1460 non-null object 10 LandSlope 1460 non-null object 11 Neighborhood 1460 non-null object 12 Condition1 1460 non-null object 13 Condition2 1460 non-null object 14 BldgType 1460 non-null object 15 HouseStyle 1460 non-null object 16 OverallQual 1460 non-null int64 17 OverallCond 1460 non-null int64 18 YearBuilt 1460 non-null int64 19 YearRemodAdd 1460 non-null int64 20 RoofStyle 1460 non-null object 21 RoofMatl 1460 non-null object 22 Exterior1st 1460 non-null object 23 Exterior2nd 1460 non-null object 24 MasVnrType 1452 non-null object 25 MasVnrArea 1452 non-null float64 26 ExterQual 1460 non-null object 27 ExterCond 1460 non-null object 28 Foundation 1460 non-null object 29 BsmtQual 1423 non-null object 30 BsmtCond 1423 non-null object 31 BsmtExposure 1422 non-null object 32 BsmtFinType1 1423 non-null object 33 BsmtFinSF1 1460 non-null int64 34 BsmtFinType2 1422 non-null object 35 BsmtFinSF2 1460 non-null int64 36 BsmtUnfSF 1460 non-null int64 37 TotalBsmtSF 1460 non-null int64 38 Heating 1460 non-null object 39 HeatingQC 1460 non-null object 40 CentralAir 1460 non-null object 41 Electrical 1459 non-null object 42 1stFlrSF 1460 non-null int64 43 2ndFlrSF 1460 non-null int64 44 LowQualFinSF 1460 non-null int64 45 GrLivArea 1460 non-null int64 46 BsmtFullBath 1460 non-null int64 47 BsmtHalfBath 1460 non-null int64 48 FullBath 1460 non-null int64 49 HalfBath 1460 non-null int64 50 BedroomAbvGr 1460 non-null int64 51 KitchenAbvGr 1460 non-null int64 52 KitchenQual 1460 non-null object 53 TotRmsAbvGrd 1460 non-null int64 54 Functional 1460 non-null object 55 Fireplaces 1460 non-null int64 56 FireplaceQu 770 non-null object 57 GarageType 1379 non-null object 58 GarageYrBlt 1379 non-null float64 59 GarageFinish 1379 non-null object 60 GarageCars 1460 non-null int64 61 GarageArea 1460 non-null int64 62 GarageQual 1379 non-null object 63 GarageCond 1379 non-null object 64 PavedDrive 1460 non-null object 65 WoodDeckSF 1460 non-null int64 66 OpenPorchSF 1460 non-null int64 67 EnclosedPorch 1460 non-null int64 68 3SsnPorch 1460 non-null int64 69 ScreenPorch 1460 non-null int64 70 PoolArea 1460 non-null int64 71 PoolQC 7 non-null object 72 Fence 281 non-null object 73 MiscFeature 54 non-null object 74 MiscVal 1460 non-null int64 75 MoSold 1460 non-null int64 76 YrSold 1460 non-null int64 77 SaleType 1460 non-null object 78 SaleCondition 1460 non-null object 79 SalePrice 1460 non-null int64 dtypes: float64(3), int64(34), object(43) memory usage: 923.9+ KB <class 'pandas.core.frame.DataFrame'> Int64Index: 1459 entries, 1461 to 2919 Data columns (total 79 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 MSSubClass 1459 non-null int64 1 MSZoning 1455 non-null object 2 LotFrontage 1232 non-null float64 3 LotArea 1459 non-null int64 4 Street 1459 non-null object 5 Alley 107 non-null object 6 LotShape 1459 non-null object 7 LandContour 1459 non-null object 8 Utilities 1457 non-null object 9 LotConfig 1459 non-null object 10 LandSlope 1459 non-null object 11 Neighborhood 1459 non-null object 12 Condition1 1459 non-null object 13 Condition2 1459 non-null object 14 BldgType 1459 non-null object 15 HouseStyle 1459 non-null object 16 OverallQual 1459 non-null int64 17 OverallCond 1459 non-null int64 18 YearBuilt 1459 non-null int64 19 YearRemodAdd 1459 non-null int64 20 RoofStyle 1459 non-null object 21 RoofMatl 1459 non-null object 22 Exterior1st 1458 non-null object 23 Exterior2nd 1458 non-null object 24 MasVnrType 1443 non-null object 25 MasVnrArea 1444 non-null float64 26 ExterQual 1459 non-null object 27 ExterCond 1459 non-null object 28 Foundation 1459 non-null object 29 BsmtQual 1415 non-null object 30 BsmtCond 1414 non-null object 31 BsmtExposure 1415 non-null object 32 BsmtFinType1 1417 non-null object 33 BsmtFinSF1 1458 non-null float64 34 BsmtFinType2 1417 non-null object 35 BsmtFinSF2 1458 non-null float64 36 BsmtUnfSF 1458 non-null float64 37 TotalBsmtSF 1458 non-null float64 38 Heating 1459 non-null object 39 HeatingQC 1459 non-null object 40 CentralAir 1459 non-null object 41 Electrical 1459 non-null object 42 1stFlrSF 1459 non-null int64 43 2ndFlrSF 1459 non-null int64 44 LowQualFinSF 1459 non-null int64 45 GrLivArea 1459 non-null int64 46 BsmtFullBath 1457 non-null float64 47 BsmtHalfBath 1457 non-null float64 48 FullBath 1459 non-null int64 49 HalfBath 1459 non-null int64 50 BedroomAbvGr 1459 non-null int64 51 KitchenAbvGr 1459 non-null int64 52 KitchenQual 1458 non-null object 53 TotRmsAbvGrd 1459 non-null int64 54 Functional 1457 non-null object 55 Fireplaces 1459 non-null int64 56 FireplaceQu 729 non-null object 57 GarageType 1383 non-null object 58 GarageYrBlt 1381 non-null float64 59 GarageFinish 1381 non-null object 60 GarageCars 1458 non-null float64 61 GarageArea 1458 non-null float64 62 GarageQual 1381 non-null object 63 GarageCond 1381 non-null object 64 PavedDrive 1459 non-null object 65 WoodDeckSF 1459 non-null int64 66 OpenPorchSF 1459 non-null int64 67 EnclosedPorch 1459 non-null int64 68 3SsnPorch 1459 non-null int64 69 ScreenPorch 1459 non-null int64 70 PoolArea 1459 non-null int64 71 PoolQC 3 non-null object 72 Fence 290 non-null object 73 MiscFeature 51 non-null object 74 MiscVal 1459 non-null int64 75 MoSold 1459 non-null int64 76 YrSold 1459 non-null int64 77 SaleType 1458 non-null object 78 SaleCondition 1459 non-null object dtypes: float64(11), int64(25), object(43) memory usage: 911.9+ KB (1460, 80) (1459, 79)
Мы видим, что набор данных поезда состоит всего из 80 функций, включая целевую переменную SalePrice и 1460 обучающих примеров. Набор данных теста или прогноза состоит из 79 функций (SalePrice должен быть спрогнозирован) и 1459 точек данных.
Проверка отсутствующих значений:
Любой набор данных будет содержать определенные пропущенные значения в своих характеристиках, будь то числовые характеристики или категориальные характеристики. Это происходит из-за многих причин, таких как недоступность данных, неправильный ввод данных и т. Д. Нам необходимо проверить отсутствующие значения в нашем наборе данных поезда. Следующая визуализация может помочь нам в этом.
Мы видим, что для функций PoolQC и некоторых других отсутствует около 90% данных. Мы разберемся с ними позже.
Визуализация данных:
Типы функций:
В основном есть два типа столбцов: числовые и категориальные. Давайте разделим наши функции в train_df на каждую из них.
Числовые особенности:
Index(['MSSubClass', 'LotFrontage', 'LotArea', 'OverallQual', 'OverallCond', 'YearBuilt', 'YearRemodAdd', 'MasVnrArea', 'BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', '1stFlrSF', '2ndFlrSF', 'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath', 'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'TotRmsAbvGrd', 'Fireplaces', 'GarageYrBlt', 'GarageCars', 'GarageArea', 'WoodDeckSF', 'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea', 'MiscVal', 'MoSold', 'YrSold'], dtype='object')
К категориальным признакам относятся:
Index(['MSZoning', 'Street', 'Alley', 'LotShape', 'LandContour', 'Utilities', 'LotConfig', 'LandSlope', 'Neighborhood', 'Condition1', 'Condition2', 'BldgType', 'HouseStyle', 'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'MasVnrType', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'Heating', 'HeatingQC', 'CentralAir', 'Electrical', 'KitchenQual', 'Functional', 'FireplaceQu', 'GarageType', 'GarageFinish', 'GarageQual', 'GarageCond', 'PavedDrive', 'PoolQC', 'Fence', 'MiscFeature', 'SaleType', 'SaleCondition'], dtype='object')
Распространение функций:
Давайте посмотрим, как распределяются данные в числовых функциях. График распределения дает нам график одномерного распределения каждой переменной, как показано ниже. Эти графики также помогают нам узнать об асимметрии характеристик и выбросов в них, если таковые имеются.
Одномерный анализ:
Мы не можем определить выбросы только на графиках распределения. Коробчатые диаграммы помогают нам больше узнать об отклонениях в функциях. Точки за пределами синего поля обозначают точки данных, которые представляют собой выбросы.
Двумерный анализ:
Мы также можем нанести на график функции вместе с целевой переменной для проведения двумерного анализа. Диаграмма рассеяния поможет.
Все эти графики можно использовать для обнаружения выбросов и лучшего понимания распределения функций и их взаимосвязи с целевой переменной.
Обработка данных:
Удаление выбросов:
Внимательно наблюдая за приведенными выше графиками, можно сделать вывод, что следующие особенности имеют выбросы:
- LotFrontage
- LotArea
- MasVnrArea
- BsmtFinSF1
- BsmtFinSF2
- TotalBsmtSF
- 1stFlrSF
- LowQualFinSF
- GrLivArea
- WoodDeckSF
- Закрытый
- 3СснПорч
- ScreenPorch
- PoolArea
- Miscval
Давайте подробнее рассмотрим эти особенности, построив графики их регрессии.
Теперь мы можем подтвердить, что у функций есть выбросы. Следующим шагом будет их удаление. Мы можем получить ограничения, чтобы удалить их (из соответствующих функций) из коробчатых диаграмм и графиков регрессии.
Удаление не участвующих функций:
В наборе данных могут быть функции, которые не будут сильно влиять на целевую переменную. Нам нужно удалить их, чтобы повысить точность. Несколько функций, имеющих высокую корреляцию друг с другом, могут вызвать чрезмерную подгонку. Давайте выясним сильно коррелированные признаки (корреляция ›0,8). Это можно сделать с помощью тепловой карты, содержащей значения корреляции функций.
Из графика мы видим, что следующие особенности сильно коррелируют друг с другом:
- 1stFlrSF и TotalBsmtSF
- TotRmsAbvGrd и GrdLivArea
- GarageYrBlt и год постройки
- ГаражПлощадь и ГаражАвтомобили
Достаточно удалить любую функцию в каждом из этих четырех наборов. Мы можем решить, какой из них удалить, изучив его вклад в целевую переменную SalePrice. Это можно сделать, проверив его корреляцию с SalePrice.
SalePrice 1.000000 OverallQual 0.801493 GrLivArea 0.718996 GarageCars 0.647613 TotalBsmtSF 0.644541 GarageArea 0.634446 1stFlrSF 0.622300 FullBath 0.562614 YearBuilt 0.552223 YearRemodAdd 0.528484 TotRmsAbvGrd 0.524650 GarageYrBlt 0.508125 MasVnrArea 0.493222 Fireplaces 0.464076 BsmtFinSF1 0.392553 LotFrontage 0.360988 LotArea 0.332449 WoodDeckSF 0.329587 OpenPorchSF 0.322831 2ndFlrSF 0.296424 HalfBath 0.289755 BsmtUnfSF 0.230026 BsmtFullBath 0.220147 BedroomAbvGr 0.161515 ScreenPorch 0.069728 MoSold 0.051067 3SsnPorch 0.038210 BsmtHalfBath -0.014339 YrSold -0.023857 BsmtFinSF2 -0.038292 MiscVal -0.048533 LowQualFinSF -0.064357 OverallCond -0.081193 MSSubClass -0.085814 EnclosedPorch -0.134095 KitchenAbvGr -0.139927 PoolArea NaN Name: SalePrice, dtype: float64
Мы будем отбрасывать функции (среди пар, показанных выше), имеющие меньшую корреляцию с целевой переменной.
Мы проверили уже визуализированное количество пропущенных значений в функциях ранее. Нам нужно удалить функции, у которых отсутствующие значения превышают 90%.
PoolQC 1.000000 MiscFeature 0.966387 Alley 0.936975 Fence 0.809524 FireplaceQu 0.479692 dtype: float64
Как мы видим, функции PoolQC, MiscFeature, Alley имеют более 90% пропущенных значений. Поэтому мы должны отказаться от этих функций.
Мы могли бы построить диаграммы рассеяния еще раз, чтобы увидеть, есть ли еще какие-нибудь бесполезные функции.
Как мы видим, функция PoolArea в значительной степени не важна, поскольку она сообщает о площади пула для всех обучающих примеров как об нуле, поэтому мы также можем отказаться от нее.
Заполнение числовых пропущенных значений:
Теперь нам нужно разобраться с числовыми признаками, у которых отсутствуют значения.
LotFrontage 0.175070 MasVnrArea 0.005602 SalePrice 0.000000 YrSold 0.000000 LotArea 0.000000 dtype: float64
Мы видим, что у функций LotFrontage и MasVnrArea отсутствуют функции. Мы можем заменить их на их среднее значение, используя встроенные функции репутации из sklearn.
После замены мы можем еще раз проверить отсутствие каких-либо значений в числовых функциях:
SalePrice 0.0 YrSold 0.0 LotFrontage 0.0 LotArea 0.0 OverallQual 0.0 OverallCond 0.0 YearBuilt 0.0 YearRemodAdd 0.0 MasVnrArea 0.0 BsmtFinSF1 0.0 BsmtFinSF2 0.0 BsmtUnfSF 0.0 TotalBsmtSF 0.0 2ndFlrSF 0.0 LowQualFinSF 0.0 GrLivArea 0.0 BsmtFullBath 0.0 BsmtHalfBath 0.0 FullBath 0.0 HalfBath 0.0 BedroomAbvGr 0.0 KitchenAbvGr 0.0 Fireplaces 0.0 GarageCars 0.0 WoodDeckSF 0.0 OpenPorchSF 0.0 EnclosedPorch 0.0 3SsnPorch 0.0 ScreenPorch 0.0 MiscVal 0.0 MoSold 0.0 MSSubClass 0.0 dtype: float64
Как мы видим, мы обработали все недостающие значения числовых функций в обучающих данных. Проверка данных тестирования
LotFrontage 0.155586 MasVnrArea 0.010281 BsmtFullBath 0.001371 BsmtHalfBath 0.001371 GarageCars 0.000685 BsmtFinSF1 0.000685 BsmtFinSF2 0.000685 BsmtUnfSF 0.000685 TotalBsmtSF 0.000685 LowQualFinSF 0.000000 LotArea 0.000000 OverallQual 0.000000 OverallCond 0.000000 YearBuilt 0.000000 YearRemodAdd 0.000000 2ndFlrSF 0.000000 YrSold 0.000000 GrLivArea 0.000000 MoSold 0.000000 FullBath 0.000000 HalfBath 0.000000 BedroomAbvGr 0.000000 KitchenAbvGr 0.000000 Fireplaces 0.000000 WoodDeckSF 0.000000 OpenPorchSF 0.000000 EnclosedPorch 0.000000 3SsnPorch 0.000000 ScreenPorch 0.000000 MiscVal 0.000000 MSSubClass 0.000000 dtype: float64
Около девяти функций отсутствуют значения. Мы можем использовать тот же метод, что и в обучающем наборе, чтобы заменить их соответствующими средними значениями.
Повторная проверка на отсутствие недостающих значений после замены:
YrSold 0.0 GrLivArea 0.0 LotFrontage 0.0 LotArea 0.0 OverallQual 0.0 OverallCond 0.0 YearBuilt 0.0 YearRemodAdd 0.0 MasVnrArea 0.0 BsmtFinSF1 0.0 BsmtFinSF2 0.0 BsmtUnfSF 0.0 TotalBsmtSF 0.0 2ndFlrSF 0.0 LowQualFinSF 0.0 BsmtFullBath 0.0 MoSold 0.0 BsmtHalfBath 0.0 FullBath 0.0 HalfBath 0.0 BedroomAbvGr 0.0 KitchenAbvGr 0.0 Fireplaces 0.0 GarageCars 0.0 WoodDeckSF 0.0 OpenPorchSF 0.0 EnclosedPorch 0.0 3SsnPorch 0.0 ScreenPorch 0.0 MiscVal 0.0 MSSubClass 0.0 dtype: float64
Итак, мы закончили работу со всеми недостающими значениями числовых функций как в обучающем, так и в тестовом наборе данных.
Заполнение категориальных пропущенных значений:
Давайте теперь посмотрим на распределение категориальных признаков.
Мы видим, что некоторые функции полностью искажены. Мы можем проверить это, проверив частоту появления верхней категории функций.
Utilities 1427 Street 1423 Condition2 1415 RoofMatl 1407 Heating 1397 LandSlope 1356 CentralAir 1333 Functional 1329 PavedDrive 1309 Electrical 1302 GarageCond 1295 LandContour 1289 GarageQual 1282 BsmtCond 1279 ExterCond 1256 SaleType 1240 Condition1 1238 BsmtFinType2 1233 BldgType 1190 SaleCondition 1174 RoofStyle 1126 MSZoning 1121 LotConfig 1035 BsmtExposure 940 LotShape 916 ExterQual 893 MasVnrType 849 GarageType 846 KitchenQual 726 HeatingQC 721 HouseStyle 713 BsmtQual 638 Foundation 634 GarageFinish 599 Exterior1st 508 Exterior2nd 497 BsmtFinType1 426 FireplaceQu 366 Neighborhood 221 Fence 153 Name: freq, dtype: object
Как показано выше, функции «Utilities», «Street», «Condition2», «RoofMatl», «Heating» сильно искажены (поскольку они имеют одну запись примерно 1400 раз из 1428 примеров). Лучше убрать эти функции.
Теперь мы собираемся заполнить недостающие значения в категориальных переменных. Мы будем заполнять новую категорию «Нет» для отсутствующих значений в категориальных характеристиках.
Повторная проверка отсутствующих значений в наборе данных поезда после замены.
SaleCondition 0.0 SaleType 0.0 Foundation 0.0 ExterCond 0.0 ExterQual 0.0 MasVnrType 0.0 Exterior2nd 0.0 Exterior1st 0.0 RoofStyle 0.0 HouseStyle 0.0 BldgType 0.0 Condition1 0.0 Neighborhood 0.0 LandSlope 0.0 LotConfig 0.0 LandContour 0.0 LotShape 0.0 BsmtQual 0.0 BsmtCond 0.0 BsmtExposure 0.0 FireplaceQu 0.0 Fence 0.0 PavedDrive 0.0 GarageCond 0.0 GarageQual 0.0 GarageFinish 0.0 GarageType 0.0 Functional 0.0 BsmtFinType1 0.0 KitchenQual 0.0 Electrical 0.0 CentralAir 0.0 HeatingQC 0.0 Heating 0.0 BsmtFinType2 0.0 MSZoning 0.0 dtype: float64
Теперь проверяем категориальные характеристики тестового набора данных на предмет пропущенных значений.
Fence 0.801234 FireplaceQu 0.500343 GarageCond 0.053461 GarageQual 0.053461 GarageFinish 0.053461 GarageType 0.052090 BsmtCond 0.030843 BsmtQual 0.030158 BsmtExposure 0.030158 BsmtFinType2 0.028787 BsmtFinType1 0.028787 MasVnrType 0.010966 MSZoning 0.002742 Functional 0.001371 Exterior2nd 0.000685 KitchenQual 0.000685 SaleType 0.000685 Exterior1st 0.000685 HouseStyle 0.000000 LotShape 0.000000 LandContour 0.000000 LotConfig 0.000000 LandSlope 0.000000 Neighborhood 0.000000 Condition1 0.000000 BldgType 0.000000 HeatingQC 0.000000 RoofStyle 0.000000 Heating 0.000000 PavedDrive 0.000000 ExterQual 0.000000 ExterCond 0.000000 Foundation 0.000000 Electrical 0.000000 CentralAir 0.000000 SaleCondition 0.000000 dtype: float64
Мы снова заменим все отсутствующие значения новой категорией «Нет», как это сделано в наборе обучающих данных.
Теперь снова проверяем отсутствующие значения в test_df после замены.
SaleCondition 0.0 SaleType 0.0 Foundation 0.0 ExterCond 0.0 ExterQual 0.0 MasVnrType 0.0 Exterior2nd 0.0 Exterior1st 0.0 RoofStyle 0.0 HouseStyle 0.0 BldgType 0.0 Condition1 0.0 Neighborhood 0.0 LandSlope 0.0 LotConfig 0.0 LandContour 0.0 LotShape 0.0 BsmtQual 0.0 BsmtCond 0.0 BsmtExposure 0.0 FireplaceQu 0.0 Fence 0.0 PavedDrive 0.0 GarageCond 0.0 GarageQual 0.0 GarageFinish 0.0 GarageType 0.0 Functional 0.0 BsmtFinType1 0.0 KitchenQual 0.0 Electrical 0.0 CentralAir 0.0 HeatingQC 0.0 Heating 0.0 BsmtFinType2 0.0 MSZoning 0.0 dtype: float64
Мы заменили все отсутствующие значения во всех функциях в наборе данных для поезда и тестирования. На этом наш EDA и очистка данных завершены.
Использование библиотеки Sweetviz для EDA:
Как мы видели в приведенных выше разделах, выполнение EDA - утомительная задача, так как требуется много времени и усилий для визуализации данных, выполнения различных типов анализа и заключения о данных. Всю эту работу можно упростить, используя новую чрезвычайно полезную библиотеку под названием Sweetviz. Он берет фрейм данных Pandas и создает автономный отчет HTML. И все это можно сделать всего в 2 строчки кода!
Вот ссылка на HTML-файл, содержащий отчет как по поезду, так и по набору тестовых данных. Мы можем получить все типы визуализаций, такие как графики распределения и графики корреляции. Нам также предоставляются числовые данные, такие как количество пропущенных значений, часто встречающиеся записи, перекос, эксцесс и т. Д. Эта библиотека является лучшей версией профилирования Pandas и гораздо более крутой визуализацией.
Заключение:
В этой статье мы увидели различные этапы процесса EDA. Мы увидели, как визуализировать данные на различных графиках для выполнения различных типов анализа. Мы узнали, как обнаруживать выбросы с помощью этих графиков и как их удалять. Мы справились с отсутствующими значениями, используя методы, подходящие для данного типа объекта. Затем мы увидели, как всю часть анализа можно выполнить в несколько строк кода с помощью Sweetviz.
Выводы:
Общедоступные блокноты, представленные создателями на соревнованиях Kaggle, содержат много информации о решении различных типов проблем, возникающих во время EDA. Если у вас есть время, я бы порекомендовал просмотреть несколько блокнотов и разложить методы, чтобы реализовать их в вашем собственном блокноте. Я много узнал об EDA и моделировании набора данных о ценах на жилье из общедоступных блокнотов в Kaggle.
Эта статья в TDS направила меня на использование Sweetviz для EDA. Слава Франсуа Бертрану и другим участникам! Несмотря на то, что визуализации и выводы говорят сами за себя, подробности см. В статье.