Python에서 빈도표를 만드는 방법


빈도표는 다양한 범주의 빈도를 표시하는 표입니다. 이 유형의 테이블은 데이터 세트의 값 분포를 이해하는 데 특히 유용합니다.

이 튜토리얼에서는 Python에서 빈도표를 만드는 방법을 설명합니다.

계열에 대한 단방향 빈도표

팬더 시리즈에서 개별 값의 빈도를 찾으려면 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 의 단방향 빈도 테이블

Pandas DataFrame의 빈도를 찾으려면 다음 구문을 사용하는 crosstab () 함수를 사용할 수 있습니다.

크로스탭(색인, 열)

금:

  • index: 그룹화 기준이 되는 열 이름
  • 열: 빈도 열에 부여할 이름

예를 들어, 한 학급에 속한 10명의 학생의 학년, 나이, 성별에 대한 정보가 포함된 DataFrame이 있다고 가정해 보겠습니다. 각 문자 등급의 빈도를 찾는 방법은 다음과 같습니다.

 #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명의 학생이 해당 수업에서 “A”를 받았습니다.
  • 4명의 학생이 수업에서 “B”를 받았습니다.
  • 1명의 학생이 수업에서 “C”를 받았습니다.
  • 2명의 학생이 해당 수업에서 “D”를 받았습니다.

유사한 구문을 사용하여 다른 열의 빈도 수를 찾을 수 있습니다. 예를 들어 연령별 빈도를 찾는 방법은 다음과 같습니다.

 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

이를 해석하는 방법은 다음과 같습니다.

  • 해당 학급에는 “A” 학점을 받은 18세 학생 3 명이 있습니다.
  • 18세의 학생이 1명 있는데, 그 수업에서 “B”를 받았습니다.
  • 18세의 학생이 1명 있는데, 그 수업에서 “C”를 받았습니다.
  • 해당 학급에서 “D” 학점을 받은 18세 학생이 0 명 있습니다.

등등.

여기에서 crosstab() 함수에 대한 전체 문서를 찾을 수 있습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다