Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Отрисовка графиков средствами python


Порой, необходимо поработать со статистикой и построить графики. На помощь прибегает Python с библиотекой matplotlib.

Рассмотрим как с ней работать на примере. Мне необходимо было получить данные по голам в разных чемпионатах, а точнее: в России, в Англии и в Испании. Для этого я воспользовался сайтом Чемпионат.com

В первую очередь я спарсил данные по забитым и пропущенным голам. И записал их в массив, а точнее в словари.

Рассматривать этот процесс в полной мере не будем, но код опишу:

//в этой функции мы получаем html.
def parsing(url):
    r = requests.get(url)

    return getDatas(r.text)


//в функцию передаём html код
def getDatas(html):
    //создаём объект из html кода
    soup = BeautifulSoup(html, 'lxml')
    //ищем турнирную таблицу и строки с командами
    table_teams = soup.find('table', class_='table').findAll('tr')
    //получаем количество найденных строк
    count_table = len(table_teams)
    //укажем с какой строки будем вести поиск, в нашем случае со второй. Потому в первой строке нет нужных данных
    i=1
    //объявляем словарь
    list = {}
    //проходим полученные данные циклом
    while i < count_table:
        //ищем колонку в строке с нужными данными
        spans = table_teams[i].find('td', class_='_big').string
        //записываем в словарь
        list.setdefault(i, spans)
        i = i+1
    print(list)

//Этот метод сработает при вызове из консоли
if __name__=='__main__':
   //вызываем функцию и передаём в нее URL нужной страницы. parsing('https://www.championat.com/football/_russiapl/2200/table/all.html')

Подробнее о BeautifulSoup было в одной из прошлых статей.

Теперь будем строить диаграмму.

Для этого необходимо установить библиотеку

pip install matplotlib

или, если вы используете Python3

pip3 install matplotlib
import matplotlib.pyplot as plt
//создадим массив с полученными данными (номер команды, количество пропущенных мячей)
goal = [(15, 36), (19, 32), (9, 29), (10, 29), (12, 29), (18, 28), (16, 26), (8, 23), (11, 23), (13, 23), (17, 22), (20, 22), (5, 20), (7, 20), (14, 20), (3, 14), (4, 14), (6, 12), (1, 11), (2, 11)]
//объявляем массивы x и y. Это необходимо для указания данных по горизонтали и вертикали
x = []

y = []
//пройдём циклом. функция sorted поможет отсортировать массив по ключу.
for g in sorted(goal):
    y.append(int(g[1]))
    x.append(float(g[0]))

//создаём фигуру, точнее область, где будет диаграмма
fig = plt.figure()
//Добавляет объект для рисования графика, в аргументе укажем размер сетки, а нашем случае 1х1
ax1 = fig.add_subplot(111)
//создаем график, с данным, которые получили. 'c' означает цвет
ax1.plot(x, y, c='g')
//задаем настройки для х оси
ax1.set_xticks(x)
//указываем, что нам надо отобразить сетки по значениям осей
ax1.grid(True)
// сохраняем в фото 
plt.savefig('p_english.png')
//выводим на экран что получилось
plt.show()

Что получилось:
Imgur
Imgur
Imgur
Imgur
Imgur
Imgur

Данный пост подготовлен автором @zheev

Фото взято с сайта izvestia.nikolaev.ua

40
48.407 GOLOS
На Golos с August 2017
Комментарии (5)
Сортировать по:
Сначала старые