我从数据框中归一化了数据。从规范化的数据,我试图选择第一列作为X轴,所有其他列作为Y轴值。我希望曲线平滑。因此我尝试在循环上使用插值函数从第一列以外的每一列中选择值并绘制在单个图形上。但它给我一个错误“ x和y数组沿插值轴的长度必须相等”。 您能帮我解决这个问题吗?
我试图将数据帧转换为数组,然后执行插值功能。它没有解决。
d = {'col1': [0,1,2,3,4,5,6,7,8],'col2': [1,14,1,0,20,1,1,0,0],'col3':
[1,2,1,0,1,10,1,0,10],'col4': [1,4,1,10,1,10,1,0,0]}
df = pd.DataFrame (d, columns = ['col1','col2','col3','col4'])
df
def normalize(df):
result = df.copy()
for feature_name in df.columns:
max_value = df[feature_name].max()
min_value = df[feature_name].min()
result[feature_name] = (df[feature_name] - min_value) / (max_value - min_value)
return result
df1=normalize(df)
fig, multi = plt.subplots()
from scipy.interpolate import interp1d
df1.ix[:, (x for x in range(0, len(df1.columns)) if x != 0)]
reindex = interp1d(df1.iloc[:,0],df1.iloc[:,x], kind='cubic')
xnew = np.linspace(df1.iloc[:,x].min(), df1.iloc[:,x].max(), 50)
multi.plot(df1.iloc[:,0],df1.iloc[:,x],'o',xnew, reindex(xnew),'--')
multi.bar(df1.iloc[:,0],df1.iloc[:,x],width, color='y',align='center')