Python диаграмма естественного распределения - PullRequest
0 голосов
/ 22 марта 2019

Я хочу отобразить мои данные естественным образом

enter image description here

Не уверен, как мне это сделать

Я пытался использовать plt.hist, но это не удалось, у меня только один столбец !!

enter image description here

вот мой код

import pymssql
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np 



conn = pymssql.connect(server='MyServer', database='MyDB')

df = pd.read_sql('EXEC [Stat_EDFlow] [2018-03-01], [2019-02-28]', conn, index=False)
conn.close()


plt.hist(df['MyColumn'])
plt.show()

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Причиной этого является способ расчета бинов.

У вас есть некоторые выбросы в ваших данных, из-за которых график «уменьшается» в попытке показать все из них.

Один из способов решения этой проблемы - удалить выбросы (скажем, все, что находится за 95-м процентилем) и указать количество бинов:

df.loc[df['MyColumn'] < df['MyColumn'].quantile(0.95), 'MyColumn']).plot.hist(bins=25)

Если это не работает, уменьшите порогот 0,95.

Другой способ - указать ячейки напрямую:

df['MyColumn'].plot.hist(bins=np.linspace(0, 100, 25))
1 голос
/ 22 марта 2019

Я думаю, вы ищете ключевое слово ,bins=.Вы можете указать целое число желаемых бинов или что-то вроде np.arange (min, max, dist).https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html

РЕДАКТИРОВАТЬ: Чтобы иметь линейный сюжет, вы можете использовать что-то вроде:

import matplotlib.pyplot as plt
import numpy as np

synthetic=np.random.normal(size=100)
fig=plt.figure(figsize=(5,5))
y,binEdges=np.histogram(synthetic,bins=20) #we want 20 bins
bincenters = 0.5*(binEdges[1:]+binEdges[:-1])
plt.plot(bincenters,y,c='k')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...