You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理CSV:删除行内非整数内容提取评分用于matplotlib绘图

评分列提取处理方案

你当前读取到的列内容为固定的整数 - 评级文本格式,直接用pandas内置的字符串处理接口就能提取纯数字评分,处理后可直接用于matplotlib可视化。


方法1:固定分隔符拆分(格式完全统一时优先用,效率最高)

所有内容都以-作为数字和评级描述的分隔符,直接拆分取第一段再转整数即可:

import pandas as pd
import matplotlib.pyplot as plt

# 原有的数据读取代码
likely_recc = pd.read_csv('test_data.csv', usecols = (['How likely are you to recommend this product to a friend?']))
target_col = 'How likely are you to recommend this product to a friend?'

# 提取评分:按分隔符拆分 -> 取第一段数字 -> 转为整数类型
likely_recc['score'] = likely_recc[target_col].str.split(' - ').str[0].astype(int)

处理完成后,likely_recc['score']列就是纯整数格式的评分数据,可直接统计绘图,示例:

# 统计各评分的样本量
score_dist = likely_recc['score'].value_counts().sort_index()

# 绘制评分分布柱状图
plt.bar(score_dist.index, score_dist.values)
plt.xlabel('推荐评分')
plt.ylabel('回复数量')
plt.title('用户产品推荐意愿分布')
plt.show()

方法2:正则提取数字(兼容性更强,适合存在少量格式偏差的场景)

如果担心个别行存在分隔符空格不一致、多余符号的小问题,可以用正则直接匹配字符串开头的连续数字,容错率更高:

# 匹配字符串开头的所有数字字符,自动忽略后续内容
likely_recc['score'] = likely_recc[target_col].str.extract(r'^(\d+)').astype(int)

注意事项

  • 两种方法最后都通过astype(int)把字符串格式的数字转为整数类型,避免matplotlib将评分识别为分类文本,导致坐标轴排序错乱。
  • 如果数据集里存在空回复、无效内容,可以在转类型前加.dropna()过滤空值,避免类型转换报错。

内容的提问来源于stack exchange,提问作者gnenadov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 18:27:40