Matplotlib несколько участков с пандами - PullRequest
0 голосов
/ 15 февраля 2019

В настоящее время я пытаюсь разработать вспомогательную функцию, которая должна создавать для каждого столбца в кадре данных pandas базовый график со значениями и их количеством в наборе данных для всех столбцов в кадре данных.

def plot_value_counts(df, leave_out):
  # is supposed to create the subplots grid where I can add the plots
  fig, axs = plt.subplots(int(len(df)/2) + 1,int(len(df)/2) + 1)
  for idx, name in enumerate(list(df)):
    if name == leave_out:
      continue
    else:
      axs[idx] = df[name].value_counts().plot(kind="bar")
  return fig, axs

этот фрагмент работает вечно и никогда не останавливается.Я попытался посмотреть на другие подобные вопросы по stackoverflow, но не смог найти ничего конкретного для моего случая.

использование функции subplots возникло из следующего вопроса: Возможно ли автоматически генерировать несколько вспомогательных участковв matplotlib?

ниже краткого образца файла данных, чтобы каждый мог понять проблему: https://gist.github.com/hentschelpatrick/e0a7e1400a4b5c356ec8b0e4952f8cc1#file-train-csv

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вот функция, которую я написал для своего проекта, чтобы построить все столбцы в кадре данных pandas.Он сгенерирует сетку размером nx4 и построит все столбцы

def plotAllFeatures(dfData):
    plt.figure(1, figsize=(20,50))
    pos=1
    for feature in dfData.columns:
        plt.subplot(np.ceil(len(dfData.columns)/4),4,pos)
        dfData[feature].plot(title=feature)
        pos=pos+1
    plt.show()
0 голосов
/ 15 февраля 2019

Вы можете передать объект axis в методе построения docs .И вы должны выполнить итерации по столбцам:

fig, axs = plt.subplots(int(len(df)/2) + 1,int(len(df)/2) + 1)
for idx, name in enumerate(df.columns):
    if name == leave_out:
        continue
    else:
        df[name].value_counts().plot(kind="bar", ax=axs[idx])

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

for idx, name in enumerate(df.columns):
    if name == leave_out:
        continue
    else:
        df[name].value_counts().plot(kind="bar")
        plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...