Графики в 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.