Построение гистограмм для всех столбцов в кадре данных pandas с данными в строковом формате и нан - PullRequest
0 голосов
/ 25 мая 2020

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

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

Я ожидаю увидеть гистограммы на выходе. Я получаю сообщение об ошибке только тогда, когда невозможно создать график This column can not be represented as a histogram и <Figure size 432x288 with 0 Axes>.

Спасибо за любую помощь!

# 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'])


# PLOTS 
for col in df:   
    try:      
        plt.figure()
        df.hist([int(col)])

    except ValueError:
        print('This column can not be represented as a histogram')
        break 

1 Ответ

0 голосов
/ 25 мая 2020

В вашем коде было несколько проблем:

  • int(col) неправильно использовано.
  • break остановит вашу программу, как только будет обнаружен какой-либо столбец, который не может быть преобразован в numeri c.
  • plt.figure() является избыточным, потому что df.hist() создает свою собственную цифру

for col in df.columns: 
    try:      
        df[col] = pd.to_numeric(df[col]) 
        df.hist(column=col)
    except ValueError:
        print('This column can not be represented as a histogram')
...