Рекомендую внести следующие изменения:
ca = df.plot.scatter(x = column, y = 'log_prices', ax = fig.add_subplot(2, 3, df[column] + 1))
При использовании метода df.plot()
необходимо указывать имена столбцов для аргументов x и y, а не для фактических данных. Данные уже находятся в df
, поэтому вам просто нужно указать столбцы для использования.
Вот частичная репликация вашего кода с использованием примеров данных:
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.rand(10,5), columns = ['A','B','C','D','E'])
fig = plt.figure(figsize=(18, 9))
idx = 0
for column in df:
# if df[column].dtype != np.int64 and df[column].dtype != np.float64:
idx += 1
ca = df.plot.scatter(x = column, y = 'A', ax = fig.add_subplot(2,3,idx))
# plt.plot(df.iloc[:,df[column]].values, sm.OLS(df.iloc[:,df['log_prices'].values,sm.add_constant(df.iloc[:,df[column]].values)).fit().fittedvalues,'r-')
Этот код создает следующий график:
