首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么使用qcut后,我的数据值被"NaN“替换了?

为什么使用qcut后,我的数据值被"NaN“替换了?
EN

Stack Overflow用户
提问于 2020-09-17 07:16:40
回答 2查看 148关注 0票数 1

我正在处理9000行6列的pandas数据帧。在这一点上,我正在尝试将一个工作的连续变量‘经验’年限转换为4个工作(商业经理-业务开发人员-网络营销人员-流量经理)中每一个工作的分类变量‘水平’的专业知识(初学者-中级-高级专家)。

考虑到每个工作的经验范围并不相同,我使用"qcut“将数据分为4组,如下所示:

(您可以运行以下代码来获取dataframe示例)

代码语言:javascript
复制
import pandas as pd


df = pd.DataFrame({'Job': ['Commercial Manager', 'Traffic Manager', 'Web Marketer', 'Commercial Manager', 'Commercial Manager', 'Web Marketer', 'Commercial Manager', 'Commercial Manager', 'Traffic Manager', 'Business Developer', 'Business Developer', 'Web Marketer', 'Traffic Manager', 'Traffic Manager', 'Commercial Manager', 'Business Developer', 'Traffic Manager', 'Commercial Manager', 'Business Developer', 'Business Developer', 'Web Marketer'], 
                   'Experience': [1.00000, 3.00000, 3.00000, 1.50000, 2.00000, 6.00000, 0.00000, 4.00000, 8.00000, 5.00000, 0.50000, 3.00000, 3.00000, 0.00000, 2.00000, 3.00000, 0.50000, 3.00000, 3.00000, 8.00000, 3.50000]})


levels = ["beginner", "intermediate", "advanced", "expert"]
jobs = ["Commercial Manager", "Business Developer", "Web Marketer", "Traffic Manager"]


def convert(levels, jobs):
  for j in jobs:
    df["Level"] = pd.qcut(df.loc[df["Job"] == j, "Experience"].rank(method="first"), q = 4, labels = levels, duplicates = "drop")
  return df

convert(levels, jobs)

这是使用“qcut”后的输出:

代码语言:javascript
复制
    Job                     Experience       Level 
0   Commercial Manager      1.00000          NaN
1   Traffic Manager         3.00000          intermediate
2   Web Marketer            3.00000          NaN
3   Commercial Manager      1.50000          NaN
4   Commercial Manager      2.00000          NaN
5   Web Marketer            6.00000          NaN
6   Commercial Manager      0.00000          NaN
7   Commercial Manager      4.00000          NaN
8   Traffic Manager         8.00000          expert
9   Business Developer      5.00000          NaN 
10  Business Developer      0.50000          NaN 
11  Web Marketer            3.00000          NaN 
12  Traffic Manager         3.00000          intermediate
13  Traffic Manager         0.00000          beginner
14  Commercial Manager      2.00000          NaN
15  Business Developer      3.00000          NaN
16  Traffic Manager         0.50000          beginner
17  Commercial Manager      3.00000          NaN
18  Business Developer      3.00000          NaN
19  Business Developer      8.00000          NaN
20  Web Marketer            3.50000          NaN

它似乎只适用于“流量管理器”,它用NaN取代了其他的level体验。我真的迷路了。有什么需要帮忙的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-25 08:41:59

您希望在groupby操作中执行此操作:

代码语言:javascript
复制
import numpy
import pandas

levels = ["beginner", "intermediate", "advanced", "expert"]
jobs = ["Commercial Manager", "Business Developer", "Web Marketer", "Traffic Manager"]

df = pandas.DataFrame({
    'Job': numpy.random.choice(levels, size=150), 
    'Experience': numpy.random.uniform(0.25, 10.5, size=150)
}).assign(
    level=df.groupby(['Job'])['Experience'] # for each unique job...
            # apply a quantile (quartile) cut 
            .apply(lambda g: pd.qcut(g, q=4, labels=levels, duplicates="drop"))
)
票数 0
EN

Stack Overflow用户

发布于 2020-10-04 18:27:24

代码语言:javascript
复制
  # I would just change two things to what Paul suggested (jobs instead of levels and the rank(method="first") because there was still an error:

levels = ["beginner", "intermediate", "advanced", "expert"]
jobs = ["Commercial Manager", "Business Developer", "Web Marketer", "Traffic Manager"]

df = pandas.DataFrame({
  'Job': numpy.random.choice(jobs, size=150), 
  'Experience': numpy.random.uniform(0.25, 10.5, size=150)
}).assign(
  level=df.groupby(['Job'])['Experience'] # for each unique job...
        # apply a quantile (quartile) cut 
        .apply(lambda g: pd.qcut(g.rank(method="first"), q=4, labels=levels, duplicates="drop"))
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63929143

复制
相关文章

相似问题

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