106

その日の最後の初心者パンダの質問: 単一のシリーズのテーブルを生成するにはどうすればよいですか?

例えば:

my_series = pandas.Series([1,2,2,3,3,3])
pandas.magical_frequency_function( my_series )

>> {
     1 : 1,
     2 : 2, 
     3 : 3
   }

多くのグーグル検索で Series.describe() と pandas.crosstabs にたどり着きましたが、どちらも私が必要としているものをまったく実行していません。つまり、1 つの変数がカテゴリ別にカウントされます。ああ、それがさまざまなデータ型 (文字列、int など) で機能するならいいと思います。

4

4 に答える 4

163

たぶん.value_counts()

>>> import pandas
>>> my_series = pandas.Series([1,2,2,3,3,3, "fred", 1.8, 1.8])
>>> my_series
0       1
1       2
2       2
3       3
4       3
5       3
6    fred
7     1.8
8     1.8
>>> counts = my_series.value_counts()
>>> counts
3       3
2       2
1.8     2
fred    1
1       1
>>> len(counts)
5
>>> sum(counts)
9
>>> counts["fred"]
1
>>> dict(counts)
{1.8: 2, 2: 2, 3: 3, 1: 1, 'fred': 1}
于 2012-08-31T00:14:46.937 に答える
11

データフレームでリスト内包表記を使用して、列の頻度をカウントすることができます

[my_series[c].value_counts() for c in list(my_series.select_dtypes(include=['O']).columns)]

壊す:

my_series.select_dtypes(include=['O']) 

カテゴリ データのみを選択します

list(my_series.select_dtypes(include=['O']).columns) 

上からの列をリストに変換します

[my_series[c].value_counts() for c in list(my_series.select_dtypes(include=['O']).columns)] 

上記のリストを反復し、各列に value_counts() を適用します

于 2015-01-28T12:28:15.337 に答える