pandas 中所有列的频率 table

frequency table for all columns in pandas

我想 运行 频率 table 我的 df 中的每个变量。

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

for column in df:
    return frequency_table(column)

我得到了 'ValueError: If using all scalar values, you must pass an index'

的错误

我该如何解决这个问题?

谢谢!

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

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

尝试

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

然后您可以使用列名作为 ctabs 字典中的键来查看每个交叉表

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