Визуализация
Мы используем стандартную конвенцию для ссылки на API matplotlib:
In [1]: import matplotlib.pyplot as plt
In [2]: plt.close('all')
Мы предоставляем основы в pandas для лёгкого создания графиков с приличным внешним видом. Смотрите раздел экосистемы для библиотек визуализации, которые выходят за рамки базовых функций, документированных здесь.
Примечание
Все вызовы np.random инициализируются значением 123456.
Базовая визуализация: plot
Мы продемонстрируем основы, см. справочник для некоторых продвинутых стратегий.
Метод plot для Series и DataFrame — это просто обертка над plt.plot():
In [3]: ts = pd.Series(np.random.randn(1000),
...: index=pd.date_range('1/1/2000', periods=1000))
...:
In [4]: ts = ts.cumsum()
In [5]: ts.plot()
Out[5]: <matplotlib.axes._subplots.AxesSubplot at 0x7f65d8c0ac50>
Если индекс состоит из дат, он вызывает gcf().autofmt_xdate(), чтобы красиво отформатировать ось x, как описано выше.
Для DataFrame, plot() — это удобный способ построить все столбцы с метками:
In [6]: df = pd.DataFrame(np.random.randn(1000, 4),
...: index=ts.index, columns=list('ABCD'))
...:
In [7]: df = df.cumsum()
In [8]: plt.figure();
In [9]: df.plot();
Вы можете построить один столбец против другого, используя ключевые слова x и y в plot():
In [10]: df3 = pd.DataFrame(np.random.randn(1000, 2), columns=['B', 'C']).cumsum() In [11]: df3['A'] = pd.Series(list(range(len(df)))) In [12]: df3.plot(x='A', y='B') Out[12]: <matplotlib.axes._subplots.AxesSubplot at 0x7f65d97c1668>
Примечание
Для более подробных вариантов форматирования и стилей см. форматирование ниже.
Другие графики
Методы построения графиков позволяют использовать несколько стилей графиков помимо стандартного линейного графика. Эти методы могут быть заданы в качестве ключевого аргумента kind к plot() и включают:
- ‘bar’ или ‘barh’ для столбчатых диаграмм
- ‘hist’ для гистограмм
- ‘box’ для ящиковых диаграмм
- ‘kde’ или ‘density’ для графиков плотности
- ‘area’ для графиков областей
- ‘scatter’ для точечных графиков
- ‘hexbin’ для гексагональных графиков
- ‘pie’ для круговых диаграмм
Например, столбчатую диаграмму можно создать следующим образом:
In [13]: plt.figure(); In [14]: df.iloc[5].plot(kind='bar');
Вы также можете создать эти другие графики, используя методы DataFrame.plot.<kind> вместо указания ключевого аргумента kind. Это упрощает обнаружение методов построения графиков и используемых ими аргументов:
In [15]: df = pd.DataFrame() In [16]: df.plot.<TAB> # noqa: E225, E999 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 [17]: plt.figure(); In [18]: df.iloc[5].plot.bar() Out[18]: <matplotlib.axes._subplots.AxesSubplot at 0x7f65da446a90> In [19]: plt.axhline(0, color='k');
Вызов метода plot.bar() DataFrame создаёт диаграмму с несколькими столбцами:
In [20]: df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) In [21]: df2.plot.bar();
Для создания столбчатой диаграммы с накоплением передайте stacked=True:
In [22]: df2.plot.bar(stacked=True);
Для получения горизонтальных столбчатых диаграмм используйте метод barh:
In [23]: df2.plot.barh(stacked=True);
Гистограммы
Гистограммы можно построить, используя методы DataFrame.plot.hist() и Series.plot.hist().
In [24]: 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 [25]: plt.figure();
In [26]: df4.plot.hist(alpha=0.5)
Out[26]: <matplotlib.axes._subplots.AxesSubplot at 0x7f65da345e48>
Гистограмму можно сделать стопкой, используя stacked=True. Размер бина можно изменить, используя ключевое слово bins.
In [27]: plt.figure(); In [28]: df4.plot.hist(stacked=True, bins=20) Out[28]: <matplotlib.axes._subplots.AxesSubplot at 0x7f65da30b9b0>
Вы можете передавать другие ключевые слова, поддерживаемые matplotlib hist. Например, горизонтальные и кумулятивные гистограммы можно построить, используя orientation='horizontal' и cumulative=True.
In [29]: plt.figure(); In [30]: df4['a'].plot.hist(orientation='horizontal', cumulative=True) Out[30]: <matplotlib.axes._subplots.AxesSubplot at 0x7f65da69fd68>
См. метод hist и документацию по гистограммам matplotlib matplotlib hist documentation для получения дополнительной информации.
Существующий интерфейс DataFrame.hist для построения гистограмм всё ещё может быть использован.
In [31]: plt.figure(); In [32]: df['A'].diff().hist() Out[32]: <matplotlib.axes._subplots.AxesSubplot at 0x7f65dac9d240>
DataFrame.hist() строит гистограммы столбцов на нескольких подграфиках:
In [33]: plt.figure() Out[33]: <Figure size 640x480 with 0 Axes> In [34]: 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.25.0/user_guide/visualization.html