Spec-Zone.ru › pandas 0.22

Визуализация

Мы используем стандартную конвенцию для ссылки на API matplotlib:

In [1]: import matplotlib.pyplot as plt

Мы предоставляем основы в pandas для лёгкого создания графиков с приличным внешним видом. Смотрите раздел экосистемы для библиотек визуализации, которые выходят за рамки основ, описанных здесь.

Примечание

Все вызовы np.random имеют начальное значение 123456.

Базовая визуализация: plot

См. кулинарную книгу для некоторых продвинутых стратегий

Метод plot для Series и DataFrame — это просто обертка вокруг plt.plot():

In [2]: ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

In [3]: ts = ts.cumsum()

In [4]: ts.plot()
Out[4]: <matplotlib.axes._subplots.AxesSubplot at 0x123d5ea90>
_images/series_plot_basic.png

Если индекс состоит из дат, он вызывает gcf().autofmt_xdate(), чтобы попытаться красиво отформатировать ось x, как описано выше.

В DataFrame, plot() — это удобство для построения всех столбцов с метками:

In [5]: df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))

In [6]: df = df.cumsum()

In [7]: plt.figure(); df.plot();
_images/frame_plot_basic.png

Вы можете построить один столбец против другого, используя ключевые слова x и y в plot():

In [8]: df3 = pd.DataFrame(np.random.randn(1000, 2), columns=['B', 'C']).cumsum()

In [9]: df3['A'] = pd.Series(list(range(len(df))))

In [10]: df3.plot(x='A', y='B')
Out[10]: <matplotlib.axes._subplots.AxesSubplot at 0x1179a0400>
_images/df_plot_xy.png

Примечание

Дополнительные параметры форматирования и стилей см. ниже.

Другие графики

Методы построения графиков позволяют использовать ряд стилей графиков помимо стандартного линейного графика. Эти методы могут быть переданы в качестве ключевого аргумента kind к plot(). К ним относятся:

  • ‘bar’ или ‘barh’ для столбчатых диаграмм
  • ‘hist’ для гистограммы
  • ‘box’ для ящиковой диаграммы
  • ‘kde’ или 'density' для графиков плотности
  • ‘area’ для графиков областей
  • ‘scatter’ для диаграмм рассеяния
  • ‘hexbin’ для шестиугольных диаграмм
  • ‘pie’ для круговых диаграмм

Например, столбчатую диаграмму можно создать следующим образом:

In [11]: plt.figure();

In [12]: df.iloc[5].plot(kind='bar');
_images/bar_plot_ex.png

Добавлено в версии 0.17.0.

Вы также можете создать эти другие графики, используя методы DataFrame.plot.<kind> вместо предоставления ключевого аргумента kind. Это упрощает поиск методов построения графиков и конкретных аргументов, которые они используют:

In [13]: df = pd.DataFrame()

In [14]: df.plot.<TAB>
df.plot.area     df.plot.barh     df.plot.density  df.plot.hist     df.plot.line     df.plot.scatter
df.plot.bar      df.plot.box      df.plot.hexbin   df.plot.kde      df.plot.pie

В дополнение к этим kind есть методы DataFrame.hist() и DataFrame.boxplot(), которые используют отдельный интерфейс.

Наконец, в pandas.plotting имеются несколько функций построения графиков, которые принимают Series или DataFrame в качестве аргумента. К ним относятся:

  • Матрица рассеяния
  • Кривые Эндрюса
  • Параллельные координаты
  • График запаздывания
  • График автокорреляции
  • График бутстрапа
  • RadViz

Графики также могут быть дополнены погрешностями или таблицами.

Столбчатые диаграммы

Для помеченных данных, не являющихся временными рядами, вы можете построить столбчатую диаграмму:

In [15]: plt.figure();

In [16]: df.iloc[5].plot.bar(); plt.axhline(0, color='k')
Out[16]: <matplotlib.lines.Line2D at 0x11baeaa20>
_images/bar_plot_ex.png

Вызов метода plot.bar() DataFrame создаёт график с несколькими столбцами:

In [17]: df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])

In [18]: df2.plot.bar();
_images/bar_plot_multi_ex.png

Для создания столбчатой диаграммы с накоплением передайте stacked=True:

In [19]: df2.plot.bar(stacked=True);
_images/bar_plot_stacked_ex.png

Для получения столбчатых диаграмм по горизонтали используйте метод barh:

In [20]: df2.plot.barh(stacked=True);
_images/barh_plot_stacked_ex.png

Гистограммы

Гистограмму можно нарисовать, используя методы DataFrame.plot.hist() и Series.plot.hist().

In [21]: df4 = pd.DataFrame({'a': np.random.randn(1000) + 1, 'b': np.random.randn(1000),
   ....:                     'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
   ....: 

In [22]: plt.figure();

In [23]: df4.plot.hist(alpha=0.5)
Out[23]: <matplotlib.axes._subplots.AxesSubplot at 0x127792160>
_images/hist_new.png

Гистограмму можно наложить, используя stacked=True. Размер бина можно изменить с помощью ключевого слова bins.

In [24]: plt.figure();

In [25]: df4.plot.hist(stacked=True, bins=20)
Out[25]: <matplotlib.axes._subplots.AxesSubplot at 0x1217ff908>
_images/hist_new_stacked.png

Вы можете передать другие ключевые слова, поддерживаемые matplotlib hist. Например, горизонтальную и кумулятивную гистограммы можно нарисовать, используя orientation='horizontal' и cumulative=True.

In [26]: plt.figure();

In [27]: df4['a'].plot.hist(orientation='horizontal', cumulative=True)
Out[27]: <matplotlib.axes._subplots.AxesSubplot at 0x11cd1a470>
_images/hist_new_kwargs.png

См. метод hist и документацию по matplotlib hist для получения более подробной информации.

Существующий интерфейс DataFrame.hist для построения гистограмм по-прежнему может быть использован.

In [28]: plt.figure();

In [29]: df['A'].diff().hist()
Out[29]: <matplotlib.axes._subplots.AxesSubplot at 0x10cc47ef0>
_images/hist_plot_ex.png

DataFrame.hist() строит гистограммы столбцов на нескольких подграфиках:

In [30]: plt.figure()
Out[30]: <Figure size 640x480 with 0 Axes>

In [31]: df.diff().hist(color='k', alpha=0.5, bins=50)

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.22.0/visualization.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API