更改可视化柱状图代码,使其可运行


import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font",family="YouYuan")
import csv 
import numpy as np

i = input()  # 输入players/pts or teams
url = "https://nba.hupu.com/stats/" + i
r1 = pd.read_html(url, encoding='utf-8')[0]

if i == "teams":
    r1.to_excel('pd1.xlsx', sheet_name='ranklist', index=False)
    df = pd.read_excel('pd1.xlsx')
    print(df)
    
    # 绘制各队得分的柱状图
    x = df['球队']
    y = df['得分']
    plt.bar(x, y)
    plt.xlabel('球队')
    plt.ylabel('得分')
    plt.title('各队得分柱状图')
    plt.show()

else:
    r1.to_excel('pd2.xlsx', sheet_name='ranklist', index=False)
    df = pd.read_excel('pd2.xlsx')
    print(df)

更改可视化柱状图代码,如下所示代码,已经可以成功运行:


import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font",family="YouYuan")
import csv
import numpy as np

i = input()  # 输入players/pts or teams
url = "https://nba.hupu.com/stats/" + i
r1 = pd.read_html(url, encoding='utf-8')[0]
print(r1)
if i == "teams":

    r1.to_excel('pd1.xlsx', sheet_name='ranklist', index=False)
    df = pd.read_excel('pd1.xlsx')

    #注意pd1.xlsx中数据的格式。列名是从0到19
    # 绘制各队得分的柱状图
    x = list(df[1].iloc[2:])
    y = list(map(float,df[19].iloc[2:]))
    print(x,y)
    plt.bar(x, y)
    plt.xlabel('球队')
    plt.xticks(rotation=45 ) #旋转轴标签,是的x轴标签不重叠
    plt.ylabel('得分')
    plt.title('各队得分柱状图')
    plt.show()

else:
    r1.to_excel('pd2.xlsx', sheet_name='ranklist', index=False)
    df = pd.read_excel('pd2.xlsx')
    print(df)

运行结果:

img

我试了下,这个地址是404

img

以下回答参考GPT,并由JoseKe整理完成,希望您能采纳:
这段代码中需要用户输入一个参数(players/pts or teams),然后使用输入的参数爬取对应的NBA数据,并将数据以Excel文件的形式保存。如果输入的参数是“teams”,则绘制NBA各队得分的柱状图,如果是“players”或“pts”则不做任何处理。

不过,这段代码存在一些问题。当使用输入参数“teams”时,代码会报错,因为列名(‘球队’和‘得分’)不一致,所以会`KeyError: '球队'`。因此,需要更新列名。除此之外,需要将中文标点替换为英文标点,与编程语言语法保持一致。

以下是更改后的代码:

python
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='YouYuan')
import csv
import numpy as np

i = input() # 输入players/pts or teams
url = "https://nba.hupu.com/stats/" + i
r1 = pd.read_html(url, encoding='utf-8')[0]

if i == "teams":
r1.columns = ['排名', '球队', '胜场', '负场', '胜率', '主客场胜场', '主客场负场', '得分', '投篮命中率', '三分命中',
'罚球命中率', '篮板', '前场篮板', '后场篮板', '助攻', '抢断', '盖帽', '失误', '犯规']

r1.to_excel('pd1.xlsx', sheet_name='ranklist', index=False)
df = pd.read_excel('pd1.xlsx')
print(df)

# 绘制各队得分的柱状图
x = df['球队']
y = df['得分']
plt.bar(x, y)
plt.xlabel('球队')
plt.ylabel('得分')
plt.title('各队得分柱状图')
plt.show()

else:
r1.to_excel('pd2.xlsx', sheet_name='ranklist', index=False)
df = pd.read_excel('pd2.xlsx')
print(df)