2017-11-03 3 views
3

2つのカテゴリ変数間の頻度の平均と中央値を取得する必要があります。例:2つのカテゴリ変数(パンダ)の説明統計

ラベル文字番号
Foo | | 1
Foo | B | 2
Foo | C | 4
バー| | 2
バー| G | 3
バー| N | 1
バー| P | 2
Cee | B | 1
Cee | B | 2
Cee | C | 4
Cee | D | 5

たとえば、ラベルあたりの平均文字数と中央値は何ですか?ここでは、3つの可能なラベルのうち11のケース(M = 3.667)があり、中央値は4(3つのfoo、4つのバー、4つの4ee)である。どのように私はパンダでこれを計算できますか? groupbyステートメントでこれを行うことは可能ですか?私のデータセットはこれよりはるかに大きいです。

答えて

1

必要がある1つの列またはgroupby + sizeためvalue_counts(またはcountNaN Sを省略する必要がある場合):

a = df['Label'].value_counts() 
print (a) 
Cee 4 
Bar 4 
Foo 3 
Name: Label, dtype: int64 

#alternative 
#a = df.groupby('Label').size() 
print (a.mean()) 
3.6666666666666665 

print (a.median()) 
4.0 

a = df.groupby(['Label','Letter']).size() 
print (a) 
Label Letter 
Bar A   1 
     G   1 
     N   1 
     P   1 
Cee B   2 
     C   1 
     D   1 
Foo A   1 
     B   1 
     C   1 
dtype: int64 

print (a.mean()) 
1.1 

print (a.median()) 
1.0 
+0

は私がオフトピック質問があります。 OPのデータをデータフレームにどのようにインポートしますか? – bhansa

+1

'sep =" \ s + \ | \ s + "'を使用し、手動で 'header'sに' | 'を手動で追加します – jezrael

+0

' sep = "\ s + \ | \ s + | \ s +" ' | 'ヘッダーへ – jezrael

関連する問題