帮助替换数据框中的值

数据挖掘 机器学习 Python 熊猫 随机森林 数据框
2022-02-28 08:39:58

我是 Mills 的数据科学专业的学生,​​正在研究 CoCalc。我正在使用可在 UCI 网站上找到的“葡萄酒品质”集用于我的最终项目。我只是在处理白葡萄酒部分。目标是葡萄酒的质量,从 1 到 10 分。我想更改“质量”列中的值,如果值是 1-4,则替换为“低”,如果值是 5-6,则替换为“中”,如果值为 8-10,则将其替换为“高”。我的代码是这样的:

#读入数据

white = pd.read_csv('Wine_data.csv')

#重命名列以排除u

columns = ['fixed acidity', 'volatile acidity', 'citric acid','residual sugar', 'chlorides', 'free sulfur dioxide','total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality']
white.columns = columns

quality = np.array(white['quality'])

for i in range(len(quality)):
    if quality[i] in [1,2,3,4]:
        quality[i] = 'low'
    elif quality[i] in [5,6,7]:
        quality[i] = 'med'
    else:
        quality[i] = 'high'

但是,我收到此错误:

Error in lines 13-19
Traceback (most recent call last):
  File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1013, in execute
    exec compile(block+'\n', '', 'single') in namespace, locals
  File "", line 5, in <module>
ValueError: invalid literal for long() with base 10: 'med'

是我的代码的链接。

请帮助这个nOOb。

2个回答

假设数据足够小以至于效率不是问题,我会使用 Pandas 数据框并执行以下操作:

white['quality_code'] = 'high'
white.loc[quality < 5, 'quality_code'] = 'low'
white.loc[(quality > 4) & (quality < 8) , 'quality_code'] = 'med'

看起来smc_sagews需要数值。

您应该将字符串low//替换为数字 0/1/2medhigh-1/0/1。