#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()