Python вывод гистограммы с обоими попытками И, кроме кода на выходе - PullRequest
0 голосов
/ 26 мая 2020

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

Я обрабатываю исключения, так как не ожидаю, что все столбцы будут содержать данные, которые могут быть представлены в гистограмме.

Проблема в том, что когда я запускаю приведенный ниже код, для 5 столбцов в моем наборе данных я получаю в общей сложности 4 гистограммы И 5 моих собственных сообщений об ошибках.

Что происходит? Кроме того, гистограммы не имеют заголовков, которые должны быть.

Спасибо!

# PACKAGES 
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


# DATA
data = {'col1': ['id345', 'id873', 'id972', 'id472', 'id930'],
        'col2': ['1.0', '0.0', '1.0', '0.0', np.nan],
        'col3': ['0.281', '0.380', '0.240', '0.260', '0.222'],
        'col4': ['0.17', '0.184', '0', '0.22', np.nan],
        'col5': ['1', '1', '0', np.nan, '0']
        }
df = pd.DataFrame(data, columns = ['col1', 'col2', 'col3', 'col4', 'col5'])


# HISTOGRAMS
for i, col in enumerate(df.columns):
    try:
        pd.to_numeric(df[col]).hist(fig=plt.figure(i))
        plt.title(col)
    except:
        print('My error message')

1 Ответ

1 голос
/ 26 мая 2020

Проблема в том, что plt.figure(i) является экземпляром фигуры, и pd.Series.hist() не знает, как с ним обращаться. Вы можете сделать:

for i, col in enumerate(df.columns):
    try:
        # try to convert to numeric first
        # if this fails, error is thrown and jump to `Except`
        s = pd.to_numeric(df[col])

        # create an axis instance and pass to `hist`
        fig, ax = plt.subplots()
        s.hist(ax=ax)
        plt.title(col)

    except:
        print('My error message')

И вы должны получить только одно сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...