Traceback (most recent call last): File "C:\Users\86187\PycharmProjects\pythonProject3.9\bbb.py", line 12, in <module> data_dict[row[1]] = float(row[3]) ValueError: could not convert string to float: '得分'
时间: 2023-12-19 15:22:57 浏览: 101
这个错误提示说明你尝试将字符串 '得分' 转换为浮点数,但字符串无法转换为浮点数,因此会抛出 `ValueError` 异常。
这个问题的原因在于,在读取 Excel 文件中的数据时,第一行包含了列名,而这些列名会被当作字符串读取进来,从而导致无法将它们转换为浮点数。因此,我们需要在读取数据时跳过第一行,只读取数据部分。
你可以尝试修改代码如下,来解决这个问题:
```python
import matplotlib.pyplot as plt
from openpyxl import load_workbook
# 读取 Excel 文件中的数据
workbook = load_workbook(filename='players.xlsx')
worksheet = workbook.active
data = []
for row in worksheet.iter_rows(min_row=2, values_only=True):
data.append(row)
# 将数据转换为字典并按得分排序
data_dict = {}
for row in data:
data_dict[row[1]] = float(row[3])
sorted_data = sorted(data_dict.items(), key=lambda x: x[1], reverse=True)
# 取出前十名球员并生成柱形图
top10 = sorted_data[:10]
names = [x[0] for x in top10]
scores = [x[1] for x in top10]
plt.bar(names, scores)
plt.xticks(rotation=45)
plt.xlabel('球员')
plt.ylabel('得分')
plt.title('NBA 球员得分排名前十')
plt.show()
```
这段代码会跳过 Excel 文件中的第一行,只读取数据部分,并根据读取到的数据生成柱形可视化图表。
阅读全文