Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python对所有分类变量的值进行计数_Python - Fatal编程技术网

使用Python对所有分类变量的值进行计数

使用Python对所有分类变量的值进行计数,python,Python,我有一个包含大量列的数据集,如何计算Python中所有分类变量的值的频率?我不需要一个或两个特定列的频率,而是需要所有变量的频率type=“category”我不完全清楚你的意思,但如果你只是想保持频率的连续计数,字典是一个很好的方法 例如,如果我们使用虚拟数据['A'、'A'、'B'、'A'、'C'、'C'] category_counts = {} for category in categories: try: category_counts[category]

我有一个包含大量列的数据集,如何计算Python中所有分类变量的值的频率?我不需要一个或两个特定列的频率,而是需要所有变量的频率
type=“category”

我不完全清楚你的意思,但如果你只是想保持频率的连续计数,字典是一个很好的方法

例如,如果我们使用虚拟数据['A'、'A'、'B'、'A'、'C'、'C']

category_counts = {}

for category in categories:
    try:
        category_counts[category] += 1
    except:
        category_counts[category] = 1
打印(类别计数)

返回:

{'A':3,'B':1,'C':2}

编辑:因此,如果您想要对每列的类别进行计数,代码只会略微更改为:

table = [['Male/Female','M','M','F','M',"F"],['Age','10-20','30-40','10-20','20-30','10-20']]

category_counts = {}

for column in table:
    category_counts[column[0]] = {}
    for data in column[1:]:
        try:
            category_counts[column[0]][data] += 1
        except:
            category_counts[column[0]][data] = 1

print(category_counts)
其中打印:

{'男/女':{'M':3,'F':2},'年龄':{'10-20':3,'30-40':1,'20-30':1}

但我不确定您当前如何存储数据

使用
type=category
选择列,并使用
sum()
方法计算频率:

df.select_dtypes(include='category').sum()
输出:

col_cat1     9
col_cat2    21

是否有特殊原因将其标记为r和sass(sas?),谢谢。然而,我正在寻找一个不同的输出。比如说,我的数据集有50列-30列是分类变量,20列是数值连续变量。我想得到这30个分类变量的频率表。如果我使用df['column'].value_counts(),它会给出指定变量的类别计数,当没有大量变量时,很难给出代码中每个变量的名称,相反,我想要的是能给所有分类变量提供相同输出的东西。我想要下面这种输出:性别M 200 F 300教育文盲50学校通行证150大学毕业生200硕士50博士50年龄60 50