Здравствуйте! Использую Pandas и хочу нарисовать гистограмму с распределением какой-нибудь переменной в зависимости от класса.

Что-то примерно типа такого:

Номарльные кривые поверх данных не нужны, только столбики и легенда

Здравствуйте! Использую Pandas и хочу нарисовать гистограмму с распределением какой-нибудь переменной в зависимости от класса. Что-то примерно типа такого: https://banderson02.files.wordpress.com/2014/05/histogram_of_height_2.gif Номарльные кривые поверх данных не нужны, только столбики и легенда

Можно так

Сначала сгенерируем данные

import numpy as np
import pandas as pd
import matplotlib.pylab as plt
import matplotlib.mlab as mlab

np.random.seed(100)
d = np.concatenate([np.random.normal(loc=-1.5, size=100),
                    np.random.normal(loc=1.5, size=100)])

df = pd.DataFrame(data={'d': d, 'cls': ['+'] * 100 + ['-'] * 100  })

Затем просто нарисуем гистограмму для каждого класса по отдельности:

df[df.cls == '+'].d.hist(alpha=0.5, label='+', bins=20, normed=1)
df[df.cls == '-'].d.hist(alpha=0.5, label='--', bins=20, normed=1)

x = np.linspace(-4, 4, 101)
plt.plot(x, mlab.normpdf(x, -1.5, 1), 'r--', color='blue')
plt.plot(x, mlab.normpdf(x, 1.5, 1), 'r--', color='green')

plt.legend()

Можно так же использовать параметр by:

df.d.hist(by=df.cls, bins=20, normed=1)

Можно так Сначала сгенерируем данные ``` import numpy as np import pandas as pd import matplotlib.pylab as plt import matplotlib.mlab as mlab np.random.seed(100) d = np.concatenate([np.random.normal(loc=-1.5, size=100), np.random.normal(loc=1.5, size=100)]) df = pd.DataFrame(data={'d': d, 'cls': ['+'] * 100 + ['-'] * 100 }) ``` Затем просто нарисуем гистограмму для каждого класса по отдельности: ``` df[df.cls == '+'].d.hist(alpha=0.5, label='+', bins=20, normed=1) df[df.cls == '-'].d.hist(alpha=0.5, label='--', bins=20, normed=1) x = np.linspace(-4, 4, 101) plt.plot(x, mlab.normpdf(x, -1.5, 1), 'r--', color='blue') plt.plot(x, mlab.normpdf(x, 1.5, 1), 'r--', color='green') plt.legend() ``` http://habrastorage.org/files/74c/43e/351/74c43e351e344f209a6cedf48d925984.png Можно так же использовать параметр `by`: ``` df.d.hist(by=df.cls, bins=20, normed=1) ``` http://habrastorage.org/files/402/e13/835/402e1383523148e0a25c04cac200c5d0.png
1.14k
просмотров
1
ответов
2
подписчики
Предпросмотр
введите как минимим 10 characters
WARNING: You mentioned %MENTIONS%, but they cannot see this message and will not be notified
Сохраняю...
Сохранено
Все темы будут удалено ?
Сохранены неопубликованные черновики. Нажмите для продолжения редактирования
Discard draft