Как создать частотные таблицы в Python


Таблица частот — это таблица, в которой отображаются частоты различных категорий. Этот тип таблицы особенно полезен для понимания распределения значений в наборе данных.

В этом руководстве объясняется, как создавать таблицы частот в Python.

Односторонняя таблица частот для ряда

Чтобы найти частоты отдельных значений в серии pandas, вы можете использовать функцию value_counts() :

import pandas as pd

#define Series
data = pd.Series([1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 5])

#find frequencies of each value
data.value_counts()

3 4
1 3
4 2
5 1
2 1

Вы можете добавить аргумент sort=False , если не хотите, чтобы значения данных сортировались по частоте:

data.value_counts(sort= False )

1 3
2 1
3 4
4 2
5 1

Способ интерпретации вывода следующий:

  • Значение «1» встречается в серии 3 раза.
  • Значение «2» встречается в Серии 1 раз.
  • Значение «3» встречается в серии 4 раза.

И так далее.

Односторонняя таблица частот для DataFrame

Чтобы найти частоты кадра данных pandas, вы можете использовать функцию crosstab () , которая использует следующий синтаксис:

перекрестная таблица (индекс, столбцы)

куда:

  • index: имя столбца для группировки
  • столбцы: имя для частотного столбца

Например, предположим, что у нас есть DataFrame с информацией о буквенной оценке, возрасте и поле 10 разных учеников в классе. Вот как найти частоту для каждой буквенной оценки:

#create data
df = pd.DataFrame({'Grade': ['A','A','A','B','B', 'B', 'B', 'C', 'D', 'D'],
 'Age': [18, 18, 18, 19, 19, 20, 18, 18, 19, 19],
 'Gender': ['M','M', 'F', 'F', 'F', 'M', 'M', 'F', 'M', 'F']})

#view data
df

 Grade Age Gender
0 A 18 M
1 A 18 M
2 A 18 F
3 B 19 F
4 B 19 F
5 B 20 M
6 B 18 M
7 C 18 F
8 D 19 M
9 D 19 F 

#find frequency of each letter grade
pd.crosstab(index=df['Grade'], columns='count')

col_0 count
Grade 
A 3
B 4
C 1
D 2

Интерпретировать это можно следующим образом:

  • 3 ученика получили пятерку в классе.
  • В классе 4 ученика получили четверку.
  • 1 учащийся получил оценку «С» в классе.
  • 2 ученика получили «двойку» в классе.

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

pd.crosstab(index=df['Age'], columns='count') 

col_0 count
Age 
18 5
19 4
20 1

Интерпретировать это можно следующим образом:

  • 5 студентов 18 лет.
  • 4 ученика 19 лет.
  • 1 студент 20 лет.

Вы также можете легко отобразить частоты как доли всего набора данных, разделив на сумму:

#define crosstab
tab = pd.crosstab(index=df['Age'], columns='count')

#find proportions 
tab/tab.sum()

col_0 count
Age 
18 0.5
19 0.4
20 0.1

Интерпретировать это можно следующим образом:

  • 50% студентов 18 лет.
  • 40% студентов 19 лет.
  • 10% студентов в возрасте 20 лет.

Двусторонние таблицы частот для DataFrame

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

pd.crosstab(index=df['Age'], columns=df['Grade'])


Grade A B C D
Age 
18 3 1 1 0
19 0 2 0 2
20 0 1 0 0

Интерпретировать это можно следующим образом:

  • Есть 3 ученика, которым 18 лет, и они получили пятерку в классе.
  • В классе есть 1 ученик, которому 18 лет и он получил четверку.
  • В классе есть 1 ученик, которому 18 лет, и он получил «троечку».
  • В классе 0 учеников в возрасте 18 лет, получивших двойку.

И так далее.

Вы можете найти полную документацию по функции crosstab() здесь .

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.