我想用python画一张雷达图,但是总是报错


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
import os

# 将工作目录更改为指定目录,例如 "D:/pythoncode/PythonApplication1/",请将其替换为实际目录
os.chdir("D:/pythoncode/PythonApplication1/")


data = pd.read_csv('tute3_cps.csv', encoding='gb2312')




data.columns = ['transportation', 'hotel', 'company', 'healthcare', 'business_residence', 'life', 'education_culture', 'shopping', 'scenic_spot', 'catering']

data.describe()

from sklearn.preprocessing import StandardScaler

features = ['transportation', 'hotel', 'company', 'healthcare', 'business_residence', 'life', 'education_culture', 'shopping', 'scenic_spot', 'catering']

X = data.loc[:, features].values
X = StandardScaler().fit_transform(X)

dbscan = DBSCAN(eps=0.5, min_samples=2)
clusters = dbscan.fit_predict(X)

data['cluster'] = clusters
data.groupby(['cluster'])[['transportation', 'hotel', 'company', 'healthcare', 'business_residence', 'life', 'education_culture', 'shopping', 'scenic_spot', 'catering']].mean()


def radar_chart(df, clusters):
    """
    绘制雷达图
    """
    unique_clusters = np.unique(clusters)
    fig, axes = plt.subplots(nrows=len(unique_clusters), ncols=1, figsize=(10, 10 * len(unique_clusters)), subplot_kw={'polar':True})
    
    if len(unique_clusters) == 1:
        axes = [axes]

    for idx, cluster in enumerate(unique_clusters):
        tmp = df[clusters == cluster].mean().reset_index(drop=True) # 重置索引
        tmp = np.concatenate((tmp, [tmp[0]]))
        angles = np.linspace(0, 2*np.pi, len(tmp), endpoint=False)
        angles = np.concatenate((angles, [angles[0]])) 
        ax = axes[idx]
        ax.plot(angles, tmp, 'o-', linewidth=2, label='cluster %s' % cluster)
        ax.fill(angles, tmp, alpha=0.25)
        ax.set_thetagrids(angles * 180/np.pi, df.columns)
        ax.set_title('Cluster %s' % cluster)

    plt.tight_layout()
    plt.legend()
    plt.show()

radar_chart(data[features], clusters) 

img


一运行就会显示出来这个,怎么修改都不对,请各位帮帮忙