Раскрытие невидимого: визуализация недостающих ценностей в жилищном строительстве Эймса
Цифровая эпоха открыла эпоху, когда принятие решений на основе данных имеет решающее значение в различных областях, ярким примером которых является недвижимость. Обширные наборы данных, такие как наборы данных о недвижимости в Эймсе, представляют собой настоящую сокровищницу для энтузиастов данных. Благодаря тщательному исследованию и анализу таких наборов данных можно выявить закономерности, получить ценную информацию и принять обоснованные решения.
Начиная с этого поставы отправитесь в увлекательное путешествие по запутанным улочкам зданий Эймса, уделяя особое внимание методам анализа данных.
Давайте начнем.
Обзор
Этот пост разделен на три части; они есть:
- Набор данных свойств Эймса
- Загрузка и определение размера набора данных
- Обнаружение и визуализация недостающих значений
Набор данных свойств Эймса
У каждого набора данных есть своя история, и понимание его истории может дать бесценный контекст. Хотя набор данных о жилье Эймса широко известен в академических кругах, набор данных, который мы анализируем сегодня, Ames.csv
, представляет собой более полную коллекцию сведений о недвижимости от Эймса.
Доктор Дин Де Кок, преданный академик, осознал необходимость в новом, надежном наборе данных в сфере недвижимости. Он тщательно составил набор данных Ames Housing Dataset, который с тех пор стал краеугольным камнем для начинающих ученых и исследователей данных. Этот набор данных выделяется своей подробной информацией, охватывающей множество аспектов недвижимости. Он послужил основой для многочисленных упражнений по прогнозному моделированию и предлагает богатую среду для исследовательского анализа данных.
Набор жилищных данных Эймса был задуман как современная альтернатива старому набору жилищных данных Бостона. Охватывая продажи жилья в Эймсе, штат Айова, в период с 2006 по 2010 год, он представляет разнообразный набор переменных, создавая основу для передовых методов регрессии.
Этот временной интервал особенно важен в истории США. В период, предшествовавший 2007-2008 годам, наблюдался резкий рост цен на жилье, вызванный спекулятивным безумием и субстандартной ипотекой. Кульминацией этого стал разрушительный крах пузыря на рынке недвижимости в конце 2007 года, событие, ярко запечатленное в таких повествованиях, как «Большая игра на понижение». Последствия этого коллапса прокатились по всей стране, приведя к Великой рецессии. Цены на жилье резко упали, количество случаев потери права выкупа резко возросло, и многие американцы оказались в затруднительном положении по своим ипотечным кредитам. Набор данных Эймса дает представление об этом неспокойном периоде, фиксируя продажи недвижимости в разгар национальных экономических потрясений.
Начните свой проект с моей книги «Руководство для начинающих по науке о данных». Он предоставляет учебники для самообучения с рабочим кодом.
Загрузка и определение размера набора данных
Для тех, кто решается заняться наукой о данных, наличие в арсенале правильных инструментов имеет первостепенное значение. Если вам нужна помощь в настройке среды Python, это подробное руководство станет отличным ресурсом.
Размеры набора данных. Прежде чем углубляться в сложный анализ, важно ознакомиться с базовой структурой набора данных и типами данных. Этот шаг обеспечивает план для последующего исследования и гарантирует, что вы адаптируете свой анализ в зависимости от характера данных. Имея готовую среду, давайте загрузим и оценим размер набора данных с точки зрения строк (представляющих отдельные свойства) и столбцов (представляющих атрибуты этих свойств).
# Load the Ames dataset
import pandas as pd
Ames = pd.read_csv('Ames.csv')
# Dataset shape
print(Ames.shape)
rows, columns = Ames.shape
print(f"The dataset comprises {rows} properties described across {columns} attributes.")
(2579, 85)
The dataset comprises 2579 properties described across 85 attributes.
Типы данных. Распознавание типа данных каждого атрибута помогает сформировать наш подход к анализу. Числовые атрибуты могут быть суммированы с использованием таких показателей, как среднее или медиана, тогда как режим (наиболее частое значение) подходит для категориальных атрибутов.
# Determine the data type for each feature
data_types = Ames.dtypes
# Tally the total by data type
type_counts = data_types.value_counts()
print(type_counts)
object 44
int64 27
float64 14
dtype: int64
Словарь данных. Словарь данных, часто сопровождающий полные наборы данных, является удобным ресурсом. Он предлагает подробные описания каждой функции, определяя ее значение, возможные значения, а иногда даже логику ее сбора. Для таких наборов данных, как свойства Эймса, которые охватывают широкий спектр функций, словарь данных может быть маяком ясности. Обращаясь к приложенному словарю данных, аналитики, специалисты по данным и даже эксперты в предметной области могут получить более глубокое понимание нюансов каждой функции. Независимо от того, расшифровываете ли вы значение незнакомой функции или понимаете значение определенных значений, словарь данных служит исчерпывающим руководством. Он устраняет разрыв между необработанными данными и практическими знаниями, гарантируя, что анализ и решения являются обоснованными.
# Determine the data type for each feature
data_types = Ames.dtypes
# View a few datatypes from the dataset (first and last 5 features)
print(data_types)
PID int64
GrLivArea int64
SalePrice int64
MSSubClass int64
MSZoning object
...
SaleCondition object
GeoRefNo float64
Prop_Addr object
Latitude float64
Longitude float64
Length: 85, dtype: object
Площадь жилой площади и Цена продажи — это числовые типы данных (int64), а Условие продажи (объект, который в этом примере имеет строковый тип) — категориальный тип данных.
Обнаружение и визуализация пропущенных значений
Реальные наборы данных редко получаются идеально подобранными, что часто ставит аналитиков перед проблемой пропущенных значений. Эти пробелы в данных могут возникнуть по разным причинам, например, из-за ошибок при сборе данных, системных ограничений или отсутствия информации. Устранение пропущенных значений — это не просто техническая необходимость, а критический шаг, который существенно влияет на целостность и надежность последующих анализов.
Понимание закономерностей пропущенных значений имеет важное значение для обоснованного анализа данных. Это понимание определяет выбор соответствующих методов вменения, которые заполняют недостающие данные на основе доступной информации, тем самым влияя на точность и интерпретируемость результатов. Кроме того, оценка шаблонов отсутствующих значений помогает принять решения о выборе функций; функции с большим количеством недостающих данных могут быть исключены, чтобы повысить производительность модели и сосредоточиться на более надежной информации. По сути, понимание закономерностей пропущенных значений обеспечивает надежный и заслуживающий доверия анализ данных, управление стратегиями вменения и оптимизацию включения функций для более точного понимания.
NaN или None?: В pandas функция isnull()
используется для обнаружения пропущенных значений в DataFrame или Series. В частности, он идентифицирует следующие типы или недостающие данные:
np.nan
(не число), часто используется для обозначения отсутствующих числовых данных.None
— встроенный объект Python, обозначающий отсутствие значения или нулевое значение.
И nan
, и NaN
— это просто разные способы ссылки на np.nan
NumPy, а isnull()
будет идентифицировать их как недостающие значения. Вот краткий пример.
# Import NumPy
import numpy as np
# Create a DataFrame with various types of missing values
df = pd.DataFrame({
'A': [1, 2, np.nan, 4, 5],
'B': ['a', 'b', None, 'd', 'e'],
'C': [np.nan, np.nan, np.nan, np.nan, np.nan],
'D': [1, 2, 3, 4, 5]
})
# Use isnull() to identify missing values
missing_data = df.isnull().sum()
print(df)
print()
print(missing_data)
A B C D
0 1.0 a NaN 1
1 2.0 b NaN 2
2 NaN None NaN 3
3 4.0 d NaN 4
4 5.0 e NaN 5
A 1
B 1
C 5
D 0
dtype: int64
Визуализация отсутствующих значений. Для визуализации отсутствующих данных используются такие инструменты, как DataFrames, missingno, matplotlib и < b>морерожденный пригодится. Сортируя объекты по проценту пропущенных значений и помещая их в DataFrame, вы можете легко ранжировать объекты, на которые больше всего влияют отсутствующие данные.
# Calculating the percentage of missing values for each column
missing_data = Ames.isnull().sum()
missing_percentage = (missing_data / len(Ames)) * 100
# Combining the counts and percentages into a DataFrame for better visualization
missing_info = pd.DataFrame({'Missing Values': missing_data, 'Percentage': missing_percentage})
# Sorting the DataFrame by the percentage of missing values in descending order
missing_info = missing_info.sort_values(by='Percentage', ascending=False)
# Display columns with missing values
print(missing_info[missing_info['Missing Values'] > 0])
Missing Values Percentage
PoolQC 2570 99.651028
MiscFeature 2482 96.238852
Alley 2411 93.485847
Fence 2054 79.643273
FireplaceQu 1241 48.119426
LotFrontage 462 17.913920
GarageCond 129 5.001939
GarageQual 129 5.001939
GarageFinish 129 5.001939
GarageYrBlt 129 5.001939
GarageType 127 4.924389
Longitude 97 3.761148
Latitude 97 3.761148
BsmtExposure 71 2.753005
BsmtFinType2 70 2.714230
BsmtFinType1 69 2.675456
BsmtQual 69 2.675456
BsmtCond 69 2.675456
GeoRefNo 20 0.775494
Prop_Addr 20 0.775494
MasVnrArea 14 0.542846
MasVnrType 14 0.542846
BsmtFullBath 2 0.077549
BsmtHalfBath 2 0.077549
GarageArea 1 0.038775
BsmtFinSF1 1 0.038775
Electrical 1 0.038775
TotalBsmtSF 1 0.038775
BsmtUnfSF 1 0.038775
BsmtFinSF2 1 0.038775
GarageCars 1 0.038775
Пакет missingno обеспечивает быстрое графическое представление недостающих данных. Белые линии или пробелы на визуализации обозначают пропущенные значения. Однако он будет вмещать только до 50 помеченных переменных. За пределами этого диапазона метки начинают перекрываться или становятся нечитаемыми, и по умолчанию на больших дисплеях они не отображаются.
import missingno as msno
import matplotlib.pyplot as plt
msno.matrix(Ames, sparkline=False, fontsize=20)
plt.show()
Использование визуального элемента msno.bar()
после извлечения 15 основных функций с наибольшим количеством пропущенных значений позволяет получить четкую иллюстрацию по столбцам.
# Calculating the percentage of missing values for each column
missing_data = Ames.isnull().sum()
missing_percentage = (missing_data / len(Ames)) * 100
# Combining the counts and percentages into a DataFrame for better visualization
missing_info = pd.DataFrame({'Missing Values': missing_data, 'Percentage': missing_percentage})
# Sort the DataFrame columns by the percentage of missing values
sorted_df = Ames[missing_info.sort_values(by='Percentage', ascending=False).index]
# Select the top 15 columns with the most missing values
top_15_missing = sorted_df.iloc[:, :15]
#Visual with missingno
msno.bar(top_15_missing)
plt.show()
На рисунке выше показано, что качество пула, разные функции и тип проходного доступа к объекту — это три функции с наибольшим количеством пропущенных значений.
import seaborn as sns
import matplotlib.pyplot as plt
# Filter to show only the top 15 columns with the most missing values
top_15_missing_info = missing_info.nlargest(15, 'Percentage')
# Create the horizontal bar plot using seaborn
plt.figure(figsize=(12, 8))
sns.barplot(x='Percentage', y=top_15_missing_info.index, data=top_15_missing_info, orient='h')
plt.title('Top 15 Features with Missing Percentages', fontsize=20)
plt.xlabel('Percentage of Missing Values', fontsize=16)
plt.ylabel('Features', fontsize=16)
plt.yticks(fontsize=11)
plt.show()
Горизонтальная гистограмма с использованием seaborn позволяет вам перечислять объекты с наибольшими пропущенными значениями в вертикальном формате, что повышает читаемость и эстетическую ценность.
Обработка пропущенных значений — это больше, чем просто техническое требование; это важный шаг, который может повлиять на качество ваших моделей машинного обучения. Понимание и визуализация этих недостающих ценностей — первые шаги в этом сложном танце.
Дополнительная литература
В этом разделе представлены дополнительные ресурсы по этой теме, если вы хотите углубиться в нее.
Учебники
- Руководство по настройке Анаконды
Документы
- 1. Эймс, Айова: Альтернатива жилищным данным Бостона как проект регрессии на конец семестра, доктор Дин Де Кок.
Ресурсы
- Набор данных о жилье Эймса
- Словарь данных Эймса
Сводка
В этом руководстве вы приступили к исследованию набора данных Ames Properties — комплексной коллекции данных о жилье, адаптированной для приложений в области анализа данных.
В частности, вы узнали:
- О контексте набора данных Эймса, включая пионеров и академическое значение, стоящее за ним.
- Как извлечь измерения набора данных, типы данных и пропущенные значения.
- Как использовать такие пакеты, как
missingno
, Matplotlib и Seaborn, чтобы быстро визуализировать недостающие данные.
У вас есть вопросы? Пожалуйста, задавайте свои вопросы в комментариях ниже, и я постараюсь ответить.