簡體   English   中英

TypeError:列表索引必須是整數或切片,而不是嘗試 plot 時的 str

[英]TypeError : list indices must be integers or slices, not str when trying to plot

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from sklearn.decomposition import PCA
from sklearn.cluster import AgglomerativeClustering
from sklearn.preprocessing import StandardScaler,normalize
from sklearn.metrics import silhouette_score

newdf = pd.read_csv("D:\DATASETS/CC_GENERAL.csv")
x = newdf.drop('CUST_ID',axis = 1)
x.fillna(method = 'ffill',inplace = True)

scaler = StandardScaler()
x_scaled = scaler.fit_transform(x)

x_normalized = normalize(x_scaled)

#CONVERTING THE NUMPY ARRAY INTO A PANDAS DATAFRAME

x_normalized = pd.DataFrame(x_normalized)

#REDUCING THE DIMENTIONALITY OF THE DATA!

pca = PCA(n_components= 2)
x_principal = pca.fit_transform(x_normalized)
x_principal = pd.DataFrame(x_normalized)
x_principal = ['P1','P2']

ac2 = AgglomerativeClustering(n_clusters = 2)

plt.figure(figsize = (6,6))
plt.scatter(x_principal['P1'],x_principal['P2'])
c= ac2.fit_predict((x_principal),cmap = 'rainbow')
plt.show()

這是我的錯誤:

TypeError                                 Traceback (most recent call last)
<ipython-input-61-56f631c43c3e> in <module>
      3 #visualizing the cluster
      4 plt.figure(figsize = (6,6))
----> 5 plt.scatter(x_principal['P1'],x_principal['P2'])
      6 c= ac2.fit_predict((x_principal),cmap = 'rainbow')
      7 plt.show()

TypeError: list indices must be integers or slices, not str

x_principal是一個包含兩個字符串 P1 和 P2 的列表。 所以x_principal['P1']是錯誤的。 您不能使用元素本身來索引列表元素。

如果您嘗試更新 x_principal 的列名,這更有可能,您應該使用x_principal.columns = ['P1, 'P2'] ,現在您正在分配這些值,這會覆蓋數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM