Графики в Pandas (.plot)

У DataFrame и Series есть метод plot, который под капотом использует matplotlib и строит график одной строкой. Это самый быстрый способ глянуть на форму данных перед серьёзным анализом.

Когда использовать

  • Быстрый «эскиз» лога после загрузки.

  • Сравнение двух кривых на одном графике.

  • Гистограмма распределения значений.

Перед примерами установите matplotlib:

pip install matplotlib

Пример 1. Линейный график

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"temp": [22, 23, 25, 24, 26]})
df.plot()
plt.savefig("line.png")

По умолчанию plot рисует линию для каждого числового столбца, ось X — индекс.

Пример 2. Несколько серий

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({
    "temp": [22, 23, 25, 24, 26],
    "hum":  [55, 53, 50, 52, 49],
})
df.plot()
plt.savefig("multi.png")

Получится две линии — temp и hum.

Пример 3. kind="bar"

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"battery": [3.7, 4.0, 3.5]}, index=["bot1", "bot2", "bot3"])
df.plot(kind="bar")
plt.savefig("bar.png")

Пример 4. scatter

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"temp": [20, 25, 30, 35], "speed": [100, 130, 150, 170]})
df.plot(kind="scatter", x="temp", y="speed")
plt.savefig("scatter.png")

Пример 5. hist

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"v": [10, 11, 12, 12, 13, 13, 14, 15]})
df["v"].plot(kind="hist", bins=5)
plt.savefig("hist.png")

Пример 6. box (ящик с усами)

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({
    "bot1": [3.7, 3.6, 3.65, 3.7, 3.55],
    "bot2": [4.0, 3.9, 4.05, 4.0, 3.95],
})
df.plot(kind="box")
plt.savefig("box.png")

Пример 7. Подписи и заголовок

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"temp": [22, 23, 25]})
ax = df.plot(title="Температура", figsize=(6, 3))
ax.set_xlabel("шаг")
ax.set_ylabel("°C")
plt.savefig("titled.png")

Подводные камни

  • В Jupyter графики появляются сами; в обычном скрипте нужен plt.show() или plt.savefig.

  • plot строит по числовым столбцам — если данные строковые, ничего не отобразится.

  • Для сложных графиков лучше использовать matplotlib/seaborn напрямую.

См. также

Примечание

Лицензия и источники

Техническое описание адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.