Визуализация
Мы используем стандартную конвенцию для ссылки на API matplotlib:
In [1]: import matplotlib.pyplot as plt
Диаграммы в этом документе созданы с использованием стиля matplotlib ggplot (новая функция в версии 1.4):
import matplotlib
matplotlib.style.use('ggplot')
Мы предоставляем основы в 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 0x1359f45f8>
Если индекс состоит из дат, он вызывает 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();
Вы можете построить один столбец против другого, используя ключевые слова 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 0x135850588>
Примечание
Дополнительные параметры форматирования и стилей см. ниже.
Другие графики
Методы построения графиков позволяют использовать несколько стилей графиков помимо стандартного линейного графика. Эти методы можно указать в качестве ключевого аргумента kind к plot(). Они включают:
- ‘bar’ или ‘barh’ для столбчатых диаграмм
- ‘hist’ для гистограмм
- ‘box’ для ящиковых диаграмм
-
‘kde’ или
'density'для графиков плотности - ‘area’ для графиков областей
- ‘scatter’ для точечных диаграмм
- ‘hexbin’ для диаграмм гексагональных ячеек
- ‘pie’ для круговых диаграмм
Например, столбчатую диаграмму можно создать следующим образом:
In [11]: plt.figure(); In [12]: df.iloc[5].plot(kind='bar'); plt.axhline(0, color='k') Out[12]: <matplotlib.lines.Line2D at 0x133d9b908>
Новая функция в версии 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 в качестве аргумента. Они включают
- Матрица рассеяния
- Кривые Эндрюса
- Параллельные координаты
- Диаграмма запаздывания
- Диаграмма автокорреляции
- Bootstrap-график
- RadViz
Графики также могут быть дополнены линиями погрешности или таблицами.
Столбчатые диаграммы
Для меченных данных, не являющихся временными рядами, вы можете создать столбчатую диаграмму:
In [15]: plt.figure(); In [16]: df.iloc[5].plot.bar(); plt.axhline(0, color='k') Out[16]: <matplotlib.lines.Line2D at 0x12e8a2e80>
Вызов метода plot.bar() DataFrame создаёт многостолбчатую диаграмму:
In [17]: df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) In [18]: df2.plot.bar();
Чтобы создать столбчатую диаграмму с накоплением, передайте stacked=True:
In [19]: df2.plot.bar(stacked=True);
Чтобы получить горизонтальные столбчатые диаграммы, используйте метод barh:
In [20]: df2.plot.barh(stacked=True);
Гистограммы
Новая функция в версии 0.15.0.
Гистограмму можно нарисовать, используя методы 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 0x130e51c50>
Гистограмма может быть наклеена с помощью stacked=True. Размер бина можно изменить с помощью ключевого слова bins.
In [24]: plt.figure(); In [25]: df4.plot.hist(stacked=True, bins=20) Out[25]: <matplotlib.axes._subplots.AxesSubplot at 0x127d16400>
Вы можете передать другие ключевые слова, поддерживаемые 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 0x127c2add8>
См. метод hist и документацию matplotlib hist для получения дополнительной информации.
Существующий интерфейс DataFrame.hist для построения гистограммы по-прежнему может быть использован.
In [28]: plt.figure(); In [29]: df['A'].diff().hist() Out[29]: <matplotlib.axes._subplots.AxesSubplot at 0x13142b160>
DataFrame.hist() строит гистограммы столбцов на нескольких подграфиках:
In [30]: plt.figure() Out[30]: <matplotlib.figure.Figure at 0x12a55ef98> 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.20.3/visualization.html