You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python ValueError报错及Scopus论文期刊频次绘图问题咨询

解决期刊频次统计图的ValueError问题

嘿,这个问题我之前帮不少刚接触Python的数据分析新手解决过——你遇到的ValueError: could not convert string to float: 'Service Industries Journal'本质是绘图函数把分类字符串(期刊名称)当成数值来处理了,咱们一步步捋清楚:

1. 先确认你的数据格式是否正确

value_counts()提取的结果应该是一个Pandas Series,索引是期刊名称(字符串类型),值是对应的出现频次(数值类型)。先打印出来确认:

import pandas as pd

# 读取处理后的Excel数据
df = pd.read_excel("你的数据集.xlsx")
# 替换成你数据中存储期刊名的列名(比如Scopus里常用的"Source Title")
journal_counts = df["Source Title"].value_counts()
# 查看前几条数据,确认结构
print(journal_counts.head())

正常输出应该是类似这样:

Service Industries Journal    15
Journal of Business Research  12
...
Name: Source Title, dtype: int64

2. 错误根源:用了不适合分类数据的绘图方法

如果你用了plt.plot(journal_counts)这类默认处理数值轴的方法,Matplotlib会尝试把字符串索引转成浮点数,自然就报错了。咱们需要用柱状图/条形图来展示分类数据的频次。

3. 两种可行的绘图方案

方案一:用Pandas自带的绘图功能(简单快捷)

import matplotlib.pyplot as plt

# 设置画布大小,避免期刊名重叠
plt.figure(figsize=(12, 8))
# 绘制柱状图(kind='barh'可以改成横向条形图,适合长期刊名)
journal_counts.plot(kind='bar')
plt.title('期刊出现频次统计')
plt.xlabel('期刊名称')
plt.ylabel('出现次数')
# 旋转x轴标签,让文字更易读
plt.xticks(rotation=45, ha='right')
# 自动调整布局,防止标签被截断
plt.tight_layout()
plt.show()

方案二:用Seaborn绘制更美观的图

如果你想让图表更精致,试试Seaborn:

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 8))
# 横向条形图,把频次放x轴,期刊名放y轴
sns.barplot(x=journal_counts.values, y=journal_counts.index)
plt.title('期刊出现频次统计')
plt.xlabel('出现次数')
plt.ylabel('期刊名称')
plt.tight_layout()
plt.show()

额外小技巧:统一期刊名格式(可选)

如果你的数据里有期刊名大小写不一致、前后带空格的情况,统计会不准确,提前处理一下:

# 去除前后空格+转成小写,统一格式
df["Source Title"] = df["Source Title"].str.strip().str.lower()
journal_counts = df["Source Title"].value_counts()

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

火山引擎 最新活动