Как создать таблицы частот в python
Таблица частот — это таблица, в которой отображаются частоты разных категорий. Таблицы этого типа особенно полезны для понимания распределения значений в наборе данных.
В этом руководстве объясняется, как создавать таблицы частот в Python.
Односторонняя таблица частот для серии
Чтобы найти частоты отдельных значений в серии pandas, вы можете использовать функцию value_counts() :
import pandas as pd #defineSeries 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
Чтобы найти частоты DataFrame pandas, вы можете использовать функцию crosstab () , которая использует следующий синтаксис:
кросс-таблица (индексы, столбцы)
Золото:
- индекс: имя столбца для группировки
- столбцы: имя, которое следует дать столбцу частоты.
Например, предположим, что у нас есть 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 to 18 m 1 to 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 At 3 B4 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() вы можете найти здесь .