pandas中所有列的频率表

时间:2017-12-06 22:49:01

标签: pandas multiple-columns frequency

我想在我的df中的每个变量上运行频率表。

def frequency_table(x):
    return pd.crosstab(index=x,  columns="count")

for column in df:
    return frequency_table(column)

我收到错误'ValueError:如果使用所有标量值,则必须传递索引'

我该如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:3)

您没有传递任何数据。您只是传递一个列名。

for column in df:
    print(column) # will print column names as strings

尝试

ctabs = {}
for column in df:
    ctabs[column]=frequency_table(df[column])

然后您可以使用列名作为ctabs词典中的键

来查看每个交叉表

答案 1 :(得分:0)

for column in df:
    print(data[column].value_counts())

例如:

import pandas as pd
my_series = pd.DataFrame(pd.Series([1,2,2,3,3,3, "fred", 1.8, 1.8]))
my_series[0].value_counts()

将生成如下所示的输出:

3       3
1.8     2
2       2
fred    1
1       1
Name: 0, dtype: int64