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