Программа анализирует выборку данных по продажам домов и сохраняет графики зависимостей цены от различных параметром. Но почему-то выводит ошибку в строке:
dataset.pivot_table('price', row[i]).plot(kind='bar', stacked=True)
Вот сам код:
#python data analysis library import csv from pandas import read_csv import matplotlib.pyplot as plt #read dataset.csv file dataset = read_csv('dataset.csv') reader = csv.reader(open('dataset.csv'), delimiter=',', quotechar='"') #Show Characteristics-Price Addiction corr = dataset.corr()._get_item_cache(item='price').plot(kind='bar',stacked=True) plt.savefig('Characteristics-Price Addiction.png', format = 'png') plt.title('House Price Addiction With All Characteristics') plt.grid() plt.show() #save all addiction for row in reader: i = 1 while (i != 20): dataset.pivot_table('price', row[i]).plot(kind='bar', stacked=True) plt.savefig('price-' + row[i] + ' addiction', format='png') i += 1 break
Ошибка:
Grouper for ‘price’ not 1-dimensional
Анонимный пользователь Изменен статус публикации
UPDATE:
D:\temp\price-bedrooms-addiction.png:
Вот рабочий пример:
import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib matplotlib.style.use('ggplot') # т.к. вы не предоставили примера CSV воспользуемся случайными данными... df = pd.DataFrame(np.random.randint(0,100,(5, 20)),columns=['p{}'.format(i) for i in range(1,21)]) df['price'] = np.random.randint(10**5, 10**7, 5) for c in df.columns.difference(['price']).tolist(): df.set_index(c)['price'].plot.bar(stacked=True) plt.savefig('d:/temp/price-{}-addiction.png'.format(c))
результаты:
D:\temp\price-p1-addiction.png:
D:\temp\price-p2-addiction.png:
D:\temp\price-p3-addiction.png:
и т.д.
Если же вы хотите видеть на одном графике зависимость цены от всех параметров:
In [98]: df.set_index('price').plot.bar(rot=0, stacked=True, figsize=(16, 12)) Out[98]: <matplotlib.axes._subplots.AxesSubplot at 0x932eb70>