Как создать таблицы частот в 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() вы можете найти здесь .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *