Хорошо разбирайтесь в своих данных.

Pandas - это широко используемая библиотека Python для обработки и анализа данных. Он предоставляет множество методов и функций, которые ускоряют этапы анализа данных и предварительной обработки. Кроме того, pandas также предоставляет статистические функции, которые можно использовать для дальнейшего понимания данных. В этом посте мы начнем с простой описательной статистики, а затем представим еще несколько сложных статистических функций панд. Как всегда, импортируем numpy и pandas:

import pandas as pd
import numpy as np

Базовая описательная статистика

Начнем с самой простой описательной статистики. Мы создаем серию панд и вычисляем среднее, медиану, стандартное отклонение и дисперсию:

s = pd.Series([1,2,4,5,8,9,13,16,22,23,43,50,51])
print("Mean of s is {}".format(s.mean()))
print("Median of s is {}".format(s.median()))
print("Standar deviation of s is {}".format(s.std()))
print("Variance of s is {}".format(s.var()))

  • Среднее - это среднее значение в серии.
  • Медиана - это среднее значение при сортировке значений в порядке возрастания или убывания.
  • Стандартное отклонение - это мера разброса значений. Чтобы быть более конкретным, это квадратный корень из дисперсии.
  • Дисперсия: мера разброса значений. Он рассчитывается путем сложения квадратов разностей каждого значения и среднего, а затем деления суммы на количество выборок.

Ковариация

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

s1 = pd.Series(np.random.randint(20, size=10))
s2 = pd.Series(np.random.randint(20, size=10))
s1.cov(s2)
-5.6111

Мы можем построить эти ряды, используя диаграмму рассеяния, и попытаться понять значение дисперсии -5,61. Я также отмечу точку, которая указывает среднее значение обеих серий. Давайте сначала вычислим средние:

Затем нанесите на график значения s1 и s2, а также точку, обозначающую среднее значение:

plt.figure(figsize=(8,5))
plt.xlabel('s1')
plt.ylabel('s2')
plt.title('Covariance of s1 and s2')
plt.grid(True)
plt.scatter(s1, s2)
plt.scatter(8.5, 9.3) #mean of s1 and s2

Красные линии показывают средние значения ряда. Среднее значение s1 - это вертикальная линия (x = 8,5), а среднее значение s2 - это горизонтальная линия (y = 9,3). Отклонение от среднего - это разница между значениями и средним значением. Ковариация пропорциональна произведению отклонения значений s1 и s2. Рассмотрим правый верхний прямоугольник на графике выше. Оба значения s1 и s2 выше среднего значения s1 и s2 соответственно. Итак, отклонения положительные. Когда мы умножаем два положительных значения, мы получаем положительное значение. В нижнем левом прямоугольнике значения s1 и s2 ниже среднего значения s1 и s2 соответственно. Таким образом, отклонения отрицательные, но при умножении двух отрицательных чисел мы получаем положительное число. Для точек в нижнем правом и верхнем левом прямоугольниках отклонения s1 положительны, когда отклонение s2 отрицательное, и наоборот. Таким образом, мы получаем отрицательное число, когда умножаем два отклонения.

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

Изменение в процентах (pct_change ())

Эта функция используется для вычисления процентного изменения значений в серии. Предположим, у нас есть серия, содержащая [2, 3, 6]. Если мы применим к этой серии pct_change, возвращаемая серия будет [NaN, 0.5, 1.0]. От первого элемента ко второму увеличивается 50%, а со второго к третьему - 100%. Давайте рассмотрим более сложный пример:

Функция pct_change может быть весьма полезной при работе с данными временных рядов, и нас интересуют изменения во времени.

Ранг ()

Функция Rank присваивает значениям ранг. Предположим, у нас есть серия s, содержащая [1,7,5,3]. Ранги, присвоенные этим значениям, будут [1,4,3,2].

s4 = pd.Series(np.random.randn(5))
s4
0   -0.254939
1   -1.486448
2   -1.028108
3    1.222969
4   -0.434607
dtype: float64

Применим функцию ранжирования к ряду s4:

s5 = s4.rank()
s5
0    4.0
1    1.0
2    2.0
3    5.0
4    3.0
dtype: float64

Мы можем создать фрейм данных с этими двумя сериями. Один включает значения, а другой - ранг, присвоенный значениям:

Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.