Мы живем с данными на каждом этапе нашей жизни. И когда мы их обнаруживаем и преобразуем в графические объекты, их становится легче понять. На этом этапе появляется исследовательский анализ данных (EDA), который помогает нам в жизни.

Итак, что такое EDA?

Анализ данных Discovery (EDA) используется специалистами по обработке данных для анализа и исследования наборов данных и обобщения их основных характеристик и часто использует методы визуализации данных.

Это облегчает специалистам по обработке данных обнаружение закономерностей, обнаружение аномалий, проверку гипотез или проверку предположений, помогая определить, как лучше всего манипулировать источниками данных, чтобы получить нужные вам ответы. EDA - важный шаг для меня, чтобы принять правильное решение в нужное время.

Основная цель EDA - помочь понять данные в краткой форме, просмотрев данные до того, как делать какие-либо предположения. Это может помочь найти очевидные ошибки и лучше понять закономерности в данных, выявить выбросы или аномальные события, найти взаимосвязи между переменными.

Специалисты по обработке данных могут использовать исследовательский анализ, чтобы убедиться, что полученные ими результаты действительны и действительны для всех желаемых бизнес-результатов и целей. EDA помогает нам понять, насколько хорошо вопросы, заданные на этапе «Постановка проблемы» до того, как данные были найдены, соответствуют найденным данным. EDA может помочь ответить на вопросы о стандартных отклонениях, категориальных переменных и доверительных интервалах.

Давайте начнем !!!

Набор данных, который я использую здесь, будет хорошо известным набором данных радужной оболочки глаза. Вы можете получить доступ к ссылке Kaggle здесь.

filepath = "iris_data.csv"
data = pd.read_csv(filepath)
data.head()

# Number of rows
print(data.shape[0])
# Column names
print(data.columns.tolist())
# Data types
print(data.dtypes)

Итак, после чтения наших данных мы узнали количество строк данных (мы использовали аргумент .shape), имена столбцов (мы использовали аргумент .columns) и типы данных для каждого столбца.

Давайте рассмотрим названия видов и заметим, что все они начинаются с «Ирис-». Давайте удалим эту часть имени, чтобы имя типа было короче и понятнее.

# The str method maps the following function to each entry as a string
data['species'] = data.species.str.replace('Iris-', '')
# alternatively
# data['species'] = data.species.apply(lambda r: r.replace('Iris-', ''))
data.head()

Давайте выучим числа различных типов (я использовал аргумент .value_counts), добавим среднее значение каждого размера лепестка и чашелистика, медианы и диапазонов в качестве дополнительных. Добавление диапазонов будет немного другим, потому что аргумент .desscribe не дает нам результата max-min, для этого нам нужно создать новую запись.

data.species.value_counts()

stats_df = data.describe()
stats_df.loc['range'] = stats_df.loc['max'] - stats_df.loc['min']
out_fields = ['mean','25%','50%','75%', 'range']
stats_df = stats_df.loc[out_fields]
stats_df.rename({'50%': 'median'}, inplace=True)
stats_df

Давайте вычислим среднее, медианное значение каждого измерения (sepal_length, sepal_width, petal_uzth и petal_width).

data.groupby('species').mean()

data.groupby('species').median()

applying multiple functions at once - 2 methods
data.groupby('species').agg(['mean', 'median'])  
# passing a list of recognized strings
data.groupby('species').agg([np.mean, np.median])  
# passing a list of explicit aggregation functions

Сделайте диаграмму разброса sepal_length против sepal_width с помощью Matplotlib.

import matplotlib.pyplot as plt
%matplotlib inline
ax = plt.axes()
ax.scatter(data.sepal_length, data.sepal_width)
# Label the axes
ax.set(xlabel='Sepal Length (cm)',
       ylabel='Sepal Width (cm)',
       title='Sepal Length vs Width');

Составьте гистограмму любой из четырех функций

# Using Matplotlib's plotting functionality
ax = plt.axes()
ax.hist(data.petal_length, bins=25);
ax.set(xlabel='Petal Length (cm)',
       ylabel='Frequency',
       title='Distribution of Petal Lengths');

# Alternatively using Pandas plotting functionality
ax = data.petal_length.plot.hist(bins=25)
ax.set(xlabel='Petal Length (cm)',
       ylabel='Frequency',
       title='Distribution of Petal Lengths');

# To create four separate plots, use Pandas `.hist` method
axList = data.hist(bins=25)
# Add some x- and y- labels to first column and last row
for ax in axList.flatten():
    if ax.is_last_row():
       ax.set_xlabel('Size (cm)')
    if ax.is_first_col():
       ax.set_ylabel('Frequency')

Используя панд, нарисуйте квадратную диаграмму каждого размера лепестка и чашелистика.

data.boxplot(by='species');

Теперь давайте создадим единую прямоугольную диаграмму, где элементы разделены по оси x, а типы окрашены в разные оттенки.

# First we have to reshape the data so there is
# only a single measurement in each column
plot_data = (data
             .set_index('species')
             .stack()
             .to_frame()
             .reset_index()
             .rename(columns={0:'size', 'level_1':'measurement'})
)
plot_data.head()

Составьте парный график с Сиборном, чтобы проверить корреляцию между каждым из измерений.

sns.set_context('talk')
sns.pairplot(data, hue='species');