Как построить диаграмму в питоне по данным из таблицы эксель
сильно не ругайтесь, я только начинаю познавать данный материал:) Преподаватель дал код из которого нужно сделать диаграмму по годам со своими значениями из эксель сам код:
from datetime import date
from tkinter.ttk import LabeledScale
from turtle import clear
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import csv
years = { 0:"2000",
1:"2001",
2:"2002",
3:"2003",
4:"2004",
5:"2005",
6:"2006",
7:"2007",
8:"2008",
9:"2009",
10:"2010",
11:"2011",
12:"2012",
13:"2013",
14:"2014",
15:"2015",
16:"2016",
17:"2017",
18:"2018",
19:"2019",
20:"2020",
}
passagirs = {}
with open('gruz-per.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=';')
rows = list(csv_reader)
#years = rows[4][1:len(rows[4])]
all_data = rows[38]
print(csv_reader)
print(all_data)
cl_data =all_data[1:len(all_data)]
clear_data = []
for i in range(len(cl_data)):
if (cl_data[i].find(',') > -1):
clear_data.append(float(cl_data[i].replace(',','.')))
else:
clear_data.append(float(cl_data[i]))
x = np.arange(len(clear_data))
width = 0.35
fig, ax = plt.subplots(figsize=(15,4), layout='constrained')
ax.set_ylabel('Перевезено (млн. т)')
ax.set_title('Годы')
ax.set_xticks(x)
ax.set_xticklabels(years)
pps = ax.bar(x - width/2, clear_data, width, label='population')
for p in pps:
height = p.get_height()
ax.annotate('{}'.format(height),
xy=(p.get_x() + p.get_width() / 2, height),
xytext=(0, 3), #Вертикальный отступ от столбца диаграммы до текста
textcoords="offset points",
ha='center', va='bottom')
plt.show()
Но ничего не выходит, вот что выдает:
Traceback (most recent call last): line 37, in <module>
rows = list(csv_reader)
line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 1428: character maps to <undefined>
Спасибо тому, кто хоть объяснит в чем дело!