Статистические примитивы с Python
Прокачаем знание методов получения ключевых статистик средствами Pandas. В последующем на их базе как на строительных блоках возводится здание для более основательного анализа.
В демонстрационных целях будем использовать датасет о цветках Ириса, который получим с помощью библиотеки Scikit-learn:
from sklearn.datasets import load_iris import pandas as pd import numpy as np np.random.seed(0) data = load_iris() X = pd.DataFrame(data.data, columns=data.feature_names) y = pd.Series(data.target, name='target').astype('str').\ replace({str(it):data.target_names[it] for it in data.target}) df = X.join(y) df
Среднее, стандартное отклонение, дисперсия
Данные величины выводятся методами mean, std и var библиотеки Pandas:
df['sepal length (cm)'].mean(), df['sepal length (cm)'].std(), df['sepal length (cm)'].var()
При этом число степеней свободы для подсчета стандартного отклонения и дисперсии регулируется параметром ddof.
Квантили
Квантиль заданного уровня - это величина, которая подбирается таким образом, чтобы доля членов последовательности в выборке, которая меньше ее не превышала этот уровень. Квантиль можно получить методом quantile:
df['sepal length (cm)'].quantile(0.5) df['sepal length (cm)'].quantile(1)
Разбиение по интервалам
Можно осуществить функцией cut, которой в качестве параметра помимо Series из значений передается bins - либо список границ полуинтервалов либо целое, определяющее равные по протяженности диапазоны, на которые будет поделена область значений:
pd.cut(df['sepal length (cm)'], bins=np.arange(9)) pd.cut(df['sepal length (cm)'], bins=5)
Другим способом разбиения является использование функции qcut, которая работает на уровне квантилей:
pd.qcut(df['sepal length (cm)'], q=5) pd.qcut(df['sepal length (cm)'], q=[0, 0.1,0.5,0.8, 1])
Выше показаны два примера, в которых функция получает количество квантилей (выбирает так, чтобы в каждом полуинтервале было одинаковое количество значений) и их список, определяющий границы полуинтервалов.
Корреляция
Коэффициент корреляции показывает линейную связь между переменными (подробнее писал здесь). Для числовых переменных датафрейма они выводятся с помощью метода corr :
df[['sepal length (cm)', 'sepal width (cm)']].corr() df.corr()