Разница между сюжетом и plot() в Pandas

#python #pandas #matplotlib

#python #pandas #matplotlib

Вопрос:

Это может показаться очень наивным, но я просто хочу убедиться, что мое понимание правильное.

Чтобы построить график непосредственно из фрейма данных pandas в качестве ярлыка, мой первый вариант — вызвать plot() метод и передать мои x и y и kind из графика, который я хочу создать. В противном случае я могу назначить dataframe в качестве pandas.plotting._core.PlotAccessor объекта для plot , а затем вызвать соответствующий метод для построения графика, такой как bar() , box() и т.д.

Итак, синтаксически у меня есть

 df.plot(x=x, y=y, kind='something') # call method OR
df.plot.something(x=x, y=y) # assign object and then call method
  

Если мои приведенные выше утверждения верны, то почему я не получаю то, что я намереваюсь для одномерных графиков (hist, box и т.д.)? Хотя он отлично работает для двумерных.

 df = pd.DataFrame({'col1':[1,2,3,4], 'col2':[3,3,5,5], 'col3':[10,11,12,13]})
df.plot(x='col1', kind='hist') # or
df.plot.hist(x='col2')
  

выдает график, подобный

введите описание изображения здесь

Я понимаю, что в соответствии с документацией Pandas я должен использовать серию, разрезая col2 для того же самого, но тогда какова цель x и y ?

Кроме того, это работает, как и ожидалось, для двумерных графиков, таких как

 df.plot.scatter(x='col1', y='col3')
  

введите описание изображения здесь

Чего я не понимаю? Приветствуется любая помощь. Заранее спасибо.

Ответ №1:

Из этого ресурса .plot выводится индекс по каждому столбцу и .plot() позволяет указать, какие столбцы отображать отдельно или по отношению к другим столбцам.

Причина, по которой вы не получили то, что ожидали для одномерной гистограммы, заключается в том, что параметр x для метода DataFrame pd.plot.hist() используется не так, как вы ожидаете.

Чтобы получить результат, который, я предполагаю, вы хотите для гистограммы одной переменной, вы должны использовать параметр y (поскольку y представляет количество каждого значения серии фреймов данных).

 df.plot.hist(y='col2')
  

введите описание изображения здесь

Когда вы устанавливаете параметр, x='col2' что происходит, так это то, что pandas обходит col2 фрейм данных и строит гистограмму значений в других столбцах (в основном обрабатывая col1 и col3 как y ). Вот почему df.plot.hist(x='col2') выдает вам объединенную гистограмму col1 и col3 значений вашего фрейма данных.

введите описание изображения здесь

Комментарии:

1. Имеет полный смысл. Огромное спасибо. Можете ли вы также прокомментировать мои выводы из plot и plot()

2. Рад, что мой ответ помог! Я также добавил то, что, на мой взгляд, является лучшим способом понять разницу между plot и plot()