matplotlib - одна из наиболее популярных библиотек для визуализации данных. Есть и другие, например: Seaborn, plotly и др.

Библиотека matplotlib предлагает модуль pyplot с набором готовых методов для построения различных типов диаграмм. Стандартное подключение данного модуля выглядит так: import matplotlib.pyplot as plt

Основные методы:

  • plt.plot(x, y) - линейный график
  • plt.bar(x, y) - столбчатая диаграмма
  • plt.hist(x) - гистограмма
  • plt.pie(x) - круговая диаграмма

Метод plt.show() позволяет отобразить построенную диаграмму. Поскольку Jupyter по умолчанию показывает возможный вывод, то в методе show() зачастую нет необходимости. Но, если у вас не произошел вывод диаграммы, тогда помните об этом методе.

Кроме вывода диаграммы по умолчанию, возможно также ее дополнительно настроить: подписать оси, добавить сопроводительный текст, вывести сетку, настроить оси и т.д. Например:

  • plt.xlabel('Text for X axis')
  • plt.ylabel('Text for Y axis')
  • plt.title('Text for title')
  • plt.grid() - сетка для графика
  • plt.text(x, y, 'Text') - текст в указанных координатах

Также Pandas предлагает отдельный метод plot() для датафрейма, который фактически является оберткой над библиотекой matplotlib. Фактичеки часто можно не импортировать отдельно библиотеку, а сразу воспользоваться методом plot().

In [1]:
import pandas as pd
import matplotlib.pyplot as plt
In [2]:
plt.plot([3, 5, 10, 7, 11])
Out[2]:
[<matplotlib.lines.Line2D at 0x218a97da3a0>]
In [3]:
plt.plot([3, 5, 10, 7, 11], range(1, 6))
Out[3]:
[<matplotlib.lines.Line2D at 0x218a9886b50>]
In [7]:
plt.plot([3, 5, 10, 7, 11])
# plt.show()
plt.plot([11, 7, 10, 5, 3])
Out[7]:
[<matplotlib.lines.Line2D at 0x218a9a064f0>]
In [10]:
df = pd.read_csv('city.csv', sep=';')
df.head()
Out[10]:
ID Name CountryCode District Population
0 1 Kabul AFG Kabol 1780000
1 2 Qandahar AFG Qandahar 237500
2 3 Herat AFG Herat 186800
3 4 Mazar-e-Sharif AFG Balkh 127800
4 5 Amsterdam NLD Noord-Holland 731200
In [14]:
data = df.groupby('CountryCode')[['Population']].sum().sort_values(by='Population', ascending=False).head(10)
data
Out[14]:
Population
CountryCode
CHN 175953614
IND 123298526
BRA 85876862
USA 78625774
JPN 77965107
RUS 69150700
MEX 59752521
KOR 38999893
IDN 37485695
PAK 31546745
In [15]:
plt.bar(data.index, data.Population)
Out[15]:
<BarContainer object of 10 artists>
In [17]:
# 1.75 * 10**8
# 1.75 * 1e8
Out[17]:
175000000.0
In [19]:
plt.barh(data.index, data.Population)
plt.legend(['Population'])
Out[19]:
<matplotlib.legend.Legend at 0x218ad8f5610>
In [20]:
plt.bar(data.index, data.Population)
plt.legend(['Population'])
plt.xlabel('Country')
plt.ylabel('Population')
plt.title('Top 10 country population')
plt.grid()
In [21]:
data.plot(kind='barh', grid=True)
Out[21]:
<matplotlib.axes._subplots.AxesSubplot at 0x218ae20dca0>
In [23]:
data.plot(kind='pie', y='Population')
Out[23]:
<matplotlib.axes._subplots.AxesSubplot at 0x218ae374670>
In [39]:
plt.pie(data.Population, labels=data.index, autopct='%1.1f%%', shadow=True)
plt.legend(data.index, loc='best', bbox_to_anchor=(1.5, 1))
plt.show()
In [ ]: