5

dataframe多肢選択式の質問があり、次のようにフォーマットされています。

      Sex Qu1  Qu2  Qu3
Name
Bob    M   1    2    1
John   M   3    3    5
Alex   M   4    1    2
Jen    F   3    2    4
Mary   F   4    3    4

データは、3 つの多肢選択問題に対する 1 から 5 までの評価です。インデックスが range(1,6) になるようにデータを再配置したい 1='悪い', 2='悪い', 3='OK', 4='良い', 5='素晴らしい', 列は同じで、データは値の出現回数のカウントです (Sex 列を除く)。これは基本的に、固定ビン サイズと文字列でラベル付けされた x 軸のヒストグラムです。df.plot()これよりもはるかに優れ た出力が好きですdf.hist()が、テーブルを再配置してデータのヒストグラムを得る方法がわかりません。また、x ラベルを文字列に変更するにはどうすればよいですか?

4

1 に答える 1

17

Series.value_counts探しているヒストグラムが得られます。

In [9]: df['Qu1'].value_counts()
Out[9]: 
4    2
3    2
1    1

したがって、この関数をこれら 3 つの列のそれぞれに適用します。

In [13]: table = df[['Qu1', 'Qu2', 'Qu3']].apply(lambda x: x.value_counts())

In [14]: table
Out[14]: 
   Qu1  Qu2  Qu3
1    1    1    1
2  NaN    2    1
3    2    2  NaN
4    2  NaN    2
5  NaN  NaN    1

In [15]: table = table.fillna(0)

In [16]: table
Out[16]: 
   Qu1  Qu2  Qu3
1    1    1    1
2    0    2    1
3    2    2    0
4    2    0    2
5    0    0    1

table.reindexまたはを使用しtable.ix[some_array]て、データを並べ替えることができます。

文字列に変換するには、table.rename を使用します。

In [17]: table.rename(index=str)
Out[17]: 
   Qu1  Qu2  Qu3
1    1    1    1
2    0    2    1
3    2    2    0
4    2    0    2
5    0    0    1

In [18]: table.rename(index=str).index[0]
Out[18]: '1'
于 2012-06-06T14:19:52.863 に答える