Коли ви починаєте аналізувати дані, важливо спершу дослідити свої дані, перш ніж витрачати час на створення складних моделей. Один із простих способів зробити це — обчислити кілька описових статистик для ваших даних. Описовий статистичний аналіз допомагає описати основні характеристики набору даних і отримати коротке резюме про вибірку та вимірювання даних.
Основна статистика
Функція 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()
Групування даних
Метод 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
.
Тепер ми можемо обчислити середню ціну для кожної з різних категорій даних.
df_grouped_one = df_group.groupby(['drive-wheels'], as_index=False).agg({'price': 'mean'})
df_grouped_one
Ми також можемо групувати за кількома змінними.
Наприклад, давайте згрупуємо за обома змінними: drive-wheels
і body-style
.
df_grouped_two = df_group.groupby(['drive-wheels','body-style'],as_index=False).agg({'price': 'mean'})
df_grouped_two
Поворотна таблиця
Поворотна таблиця має одну змінну, відображену в стовпцях, і іншу змінну, відображену в рядках.
У попередній таблиці як стовпці були перераховані обидві змінні: drive-wheels
і body-style
. Тепер ми можемо залишити змінну drive-wheels
як рядки таблиці, а змінну body-style
повернути, щоб вона стала стовпцями таблиці.
Тепер дані про ціни перетворюються на прямокутну сітку, яку легше візуалізувати.
grouped_pivot = df_grouped_two.pivot(index='drive-wheels',columns='body-style')
grouped_pivot
Кореляція та причинно-наслідковість
Кореляція: міра взаємозалежності між змінними.
Причинно-наслідковість: зв'язок між причиною і наслідком між двома змінними.
Кореляція не означає причинно-наслідковий зв'язок. Визначення кореляції набагато простіше, ніж визначення причинно-наслідковості, оскільки причинно-наслідковий зв'язок може вимагати незалежних експериментів.
Один зі способів виміряти силу кореляції між безперервними числовими змінними - це використання методу, який називається кореляція Пірсона. Метод кореляції Пірсона надає два значення: коефіцієнт кореляції та 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()
Вітаємо! Тепер ви володієте основними інструментами для дослідження та розуміння своїх даних через описову статистику та кореляції. Ці базові техніки відкривають шлях до глибших інсайтів і більш складного аналізу даних. Удачі в програмуванні!
Перекладено з: Descriptive Statistics using Python