记一次画柱状图的经历

许久没用python,心血来潮参加了个比赛,下载了数据,想分析分析一番,怎知出现各种错误,连python中的数据类型都忘了哎。

原意是想利用柱状图看看标准化和归一化之后的数据对数据接下来的处理有什么影响的

import pandas as pd
import matplotlib.pyplot as plt
data=pd.read_csv("D:/data/train.csv")
a=data['F21']
sta_a=preprocessing.StandardScaler().fit_transform(a.values.reshape(-1,1))#标准化处理
pp=sta_a.reshape(1,-1).tolist()
#plt.bar(range(0,13613),sta_a)
plt.bar(range(0,13613),pp[0])
plt.show()

ValueError: shape mismatch: objects cannot be broadcast to a single shape出现此问题是因为plt.bar(x,y)中要求x和y的长度是一致的。

而当出现 TypeError: only size-1 arrays can be converted to Python scalars时是因为,如上面注释掉的一样, 此时sta是这样的

sta_a
array([[ 0.41727655],
       [ 0.41727655],
       [ 0.41727655],
       ...,
       [-1.14623172],
       [-1.14623172],
       [-1.14623172]])

此时只有一个 元素,后面对其取list,即 去掉了array,变成了

[[ 0.41727655],
       [ 0.41727655],
       [ 0.41727655],
       ...,
       [-1.14623172],
       [-1.14623172],
       [-1.14623172]]

此时直接应用就会出现上面问题,要做的就是取第一个元素,pp[0],即

[ 0.41727655],
       [ 0.41727655],
       [ 0.41727655],
       ...,
       [-1.14623172],
       [-1.14623172],
       [-1.14623172]

即得。

猜你喜欢

转载自blog.csdn.net/qq_24509229/article/details/81455429