Описова статистика за допомогою Python

pic

Коли ви починаєте аналізувати дані, важливо спершу дослідити свої дані, перш ніж витрачати час на створення складних моделей. Один із простих способів зробити це — обчислити кілька описових статистик для ваших даних. Описовий статистичний аналіз допомагає описати основні характеристики набору даних і отримати коротке резюме про вибірку та вимірювання даних.

Основна статистика

Функція describe автоматично обчислює базову статистику для всіх неперервних змінних. Будь-які значення NaN автоматично пропускаються в цих статистиках. Вона покаже кількість значень цієї змінної, середнє значення, стандартне відхилення (std), мінімальне значення, IQR (міжквартильний діапазон: 25%, 50% і 75%) та максимальне значення.

Наприклад,

df.describe()

За умовчанням функція describe пропускає змінні типу object.
Ми можемо застосувати метод describe до змінних типу object таким чином:

df.describe(include=['object'])

Підрахунок унікальних значень

Метод value_counts повертає об'єкт типу Series, що містить підрахунок унікальних значень. Отриманий об'єкт буде відсортований за спаданням, так що перший елемент буде найбільш часто зустрічаючимся. За умовчанням виключає значення NA.

Метод value_counts можна застосовувати лише до стовпця (pandas series, а не pandas dataframes).
В результаті ми використовуємо лише одну пару дужок df['attribute1_name'], а не дві пари дужок df[['attribute1_name', 'attribute2_name']].

Наприклад,

df['drive-wheels'].value_counts()
drive-wheels  
fwd 118  
rwd 75  
4wd 8  
Name: count, dtype: int64

Ми можемо перетворити серію в датафрейм таким чином:

df['drive-wheels'].value_counts().to_frame()

pic

Групування даних

Метод groupby використовується для категоріальних змінних, групує дані на підмножини відповідно до різних категорій цієї змінної. Ви можете групувати за однією змінною або за кількома змінними, передаючи кілька імен змінних.

Щоб подивитися різні категорії категоріальної змінної, ми можемо використати метод unique (Повертає унікальні значення об'єкта Series).

Наприклад,

df['drive-wheels'].unique()
array(['rwd', 'fwd', '4wd'], dtype=object)

Якщо ми хочемо дізнатися, який тип приводу коліс є найціннішим в середньому, ми можемо згрупувати drive-wheels і потім обчислити їх середнє значення.

df_group = df[['drive-wheels','body-style','price']]  
df_group

Це групує датафрейм за унікальними комбінаціями drive-wheels та body-style.

pic

Тепер ми можемо обчислити середню ціну для кожної з різних категорій даних.

df_grouped_one = df_group.groupby(['drive-wheels'], as_index=False).agg({'price': 'mean'})  
df_grouped_one

pic

Ми також можемо групувати за кількома змінними.
Наприклад, давайте згрупуємо за обома змінними: drive-wheels і body-style.

df_grouped_two = df_group.groupby(['drive-wheels','body-style'],as_index=False).agg({'price': 'mean'})  
df_grouped_two

pic

Поворотна таблиця

Поворотна таблиця має одну змінну, відображену в стовпцях, і іншу змінну, відображену в рядках.

У попередній таблиці як стовпці були перераховані обидві змінні: drive-wheels і body-style. Тепер ми можемо залишити змінну drive-wheels як рядки таблиці, а змінну body-style повернути, щоб вона стала стовпцями таблиці.
Тепер дані про ціни перетворюються на прямокутну сітку, яку легше візуалізувати.

grouped_pivot = df_grouped_two.pivot(index='drive-wheels',columns='body-style')  
grouped_pivot

pic

Кореляція та причинно-наслідковість

Кореляція: міра взаємозалежності між змінними.

Причинно-наслідковість: зв'язок між причиною і наслідком між двома змінними.

Кореляція не означає причинно-наслідковий зв'язок. Визначення кореляції набагато простіше, ніж визначення причинно-наслідковості, оскільки причинно-наслідковий зв'язок може вимагати незалежних експериментів.

Один зі способів виміряти силу кореляції між безперервними числовими змінними - це використання методу, який називається кореляція Пірсона. Метод кореляції Пірсона надає два значення: коефіцієнт кореляції та p-значення.

Коефіцієнт кореляції

Кореляція Пірсона вимірює лінійну залежність між двома змінними X і Y.
Отриманий коефіцієнт кореляції - це значення між -1 та 1 включно, де:

  • 1: Ідеальна позитивна лінійна кореляція.
  • 0: Відсутність лінійної кореляції, дві змінні, ймовірно, не впливають одна на одну.
  • -1: Ідеальна негативна лінійна кореляція.

P-значення

P-значення - це ймовірність того, що кореляція між цими двома змінними є статистично значущою.
Зазвичай ми обираємо рівень значущості 0.05, що означає, що ми на 95% впевнені, що кореляція між змінними є значущою.

Згідно з умовами, коли

  • p-значення < 0.001: ми говоримо, що є сильні докази того, що кореляція значуща.
  • p-значення < 0.05: є помірні докази того, що кореляція значуща.
  • p-значення < 0.1: є слабкі докази того, що кореляція значуща.
  • p-значення > 0.1: немає доказів того, що кореляція значуща.

Ми можемо обчислити коефіцієнт кореляції Пірсона та p-значення, використовуючи модуль stats з бібліотеки scipy.

Наприклад,

from scipy import stats  
pearson_coef, p_value = stats.pearsonr(df['wheel-base'], df['price'])  
pearson_coef, p_value
(0.5846418222655085, 8.076488270732338e-20)

Ми також можемо обчислити кореляцію між змінними типу int64 або float64, використовуючи метод corr, який обчислює парні кореляції між стовпцями, виключаючи NA/null значення.
Для детального аналізу двох змінних використовуйте stats.pearsonr. Для дослідження взаємозв'язків між кількома стовпцями в наборі даних використовуйте df.corr.

Наприклад,

df[['bore', 'stroke', 'compression-ratio', 'horsepower']].corr()

pic

Вітаємо! Тепер ви володієте основними інструментами для дослідження та розуміння своїх даних через описову статистику та кореляції. Ці базові техніки відкривають шлях до глибших інсайтів і більш складного аналізу даних. Удачі в програмуванні!

Перекладено з: Descriptive Statistics using Python

Leave a Reply

Your email address will not be published. Required fields are marked *