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の一方向頻度テーブル

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」を獲得しました。
  • クラス内で「B」評価を受けた生徒は4 名でした。
  • クラス内で1 人の生徒が「C」評価を獲得しました。
  • クラスで2 人の生徒が「D」評価を獲得しました。

同様の構文を使用して、他の列の頻度カウントを見つけることができます。たとえば、年齢ごとの頻度を見つける方法は次のとおりです。

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

col_0 count
Age	
18 5
19 4
20 1

これを解釈する方法は次のとおりです。

  • 18歳の生徒は5人。
  • 生徒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 の双方向度数テーブル

双方向度数表を作成して、データセット内の 2 つの異なる変数の度数を表示することもできます。たとえば、年齢変数と学年変数の双方向度数表を作成する方法は次のとおりです。

 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 歳で「B」評価を受けた生徒が1人います。
  • クラスには 18 歳で「C」評価を受けた生徒が1人います。
  • このクラスで「D」評価を受けた 18 歳の生徒は0 人です。

等々。

crosstab()関数の完全なドキュメントはここで見つけることができます。

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です