首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带人工标签和分类的熊猫value_counts

带人工标签和分类的熊猫value_counts
EN

Stack Overflow用户
提问于 2022-03-12 18:09:22
回答 1查看 161关注 0票数 0

我有一个包含代码的字段(本例中为DMDEDUC2)。我想在这个字段上计算一个频率表(value_counts),并用用户指定的标签显示它。下面的代码实现了我想要的..。但在我看来,我肯定错过了实现预期结果的更多标准方法。

逻辑上,value_countsreplace行不能简化。但其他的肯定会更优雅。

有更简单的方法来获得这个结果吗?更多熊猫式的解决方案?

代码语言:javascript
复制
# Tiny dataset for clarity
import pandas as pd
df = pd.DataFrame({ 'DMDEDUC2': [5, 3, 3, 5, 4, 2, 4, 4] })
d = {
      1: "<9"
    , 2: "9-11"
    , 3: "HS/GED"
    , 4: "Some college/AA"
    , 5: "College"
    , 7: "Refused"
    , 9: "Don't know"
}

# First get value counts (vc) for DMDEDUC2
# This line gets all the data I need in the correct order... 
# but without the labels I need.
vc = df.DMDEDUC2.value_counts().sort_index()

# Convert the resulting Series to a DataFrame 
# to allow for clear labels in a logical order
vc = vc.to_frame()
vc['DMDEDUC2x'] = vc.index
vc.DMDEDUC2x = vc.DMDEDUC2x.replace(d)
vc = vc.set_index('DMDEDUC2x')
vc = vc.rename({'DMDEDUC2':'COUNTS'}, axis=1)
print(vc)

所需输出(它由未显示的代码排序,而不是按值或标签排序):

代码语言:javascript
复制
                 COUNTS
DMDEDUC2x              
<9                  655
9-11                643
HS/GED             1186
Some college/AA    1621
College            1366
Don't know            3

所需的微小样本数据集的输出:

代码语言:javascript
复制
                 COUNTS
DMDEDUC2x              
9-11                  1
HS/GED                2
Some college/AA       3
College               2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-12 18:29:30

我认为它可以很容易地浓缩成两行:

代码语言:javascript
复制
vc = df.DMDEDUC2.value_counts().sort_index().to_frame(name='COUNTS')
vc.index = vc.index.map(d).rename('DMDEDUC2')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71452102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档