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