Таблица частот — это таблица, в которой отображаются частоты различных категорий. Этот тип таблицы особенно полезен для понимания распределения значений в наборе данных.
В этом руководстве объясняется, как создавать таблицы частот в 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() здесь .