单个variables的频率表

最后一个新手pandas问题:如何为单个系列生成表格?

例如:

my_series = pandas.Series([1,2,2,3,3,3]) pandas.magical_frequency_function( my_series ) >> { 1 : 1, 2 : 2, 3 : 3 } 

大量的谷歌search导致我到Series.describe()和pandas.crosstabs,但这些都不完全是我所需要的:一个variables,按类别计数。 哦,如果它适用于不同的数据types:string,整数等等

也许.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} 

您可以在数据框上使用列表理解来计算列的频率

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

分解:

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

只select分类数据

 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()应用于每个列