Как установить значения x для гистограмм панд, чтобы они соответствовали ячейкам - PullRequest
0 голосов
/ 24 февраля 2019

Допустим, у меня есть кадр данных, например:

test = pandas.DataFrame([[0,1],[0,1],[0,2],[1,0],[1,0],[1,1],[1,2],[1,2]], columns=["A","B"])

Итак, для значения 1 в первом столбце значения равны 0,1,2 во втором столбце, с другой частотой.

Скажем, я хочу создать гистограмму для того, сколько раз я вижу 0, 1 и 2, поэтому я делаю:

ax = test[test["A"]==1]["B"].hist(bins=3)

enter image description here

Тем не менее, я получаю картинку с тремя ячейками, первая из которых имеет приблизительные значения от 0 до 0,7, вторая от 0,7 до 1,4 и третья с 1,4 до 2, в то время как я хочу, чтобы каждая ячейка была сосредоточена вокруг 0, 1 и2. Я даже пытался использовать ax.set_lim, но это не сработало.

Как сделать так, чтобы моя гистограмма центрировалась вокруг значений, которые меня интересуют (например, одна ячейка имеет значение от -0,5 до 0,5, одна от 0,5 до 1,5 и одна от 1,5 до 2,5, например)?

PS Я понимаю, этот ответ имеет обходной путь, я хотел бы, чтобы решение, которое использует pandas.hist, если возможно.

Ответы [ 2 ]

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

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

test = pandas.DataFrame([[0,1],[0,1],[0,2],[1,0],[1,0],[1,1],[1,2],[1,2]], columns=["A","B"])
test[test["A"]==1]["B"]
ax = test[test["A"]==1]["B"].hist(bins=3, range=(-0.5,2.5))
ax.set_xlim((-0.5, 2.5))

Это даст следующую гистограмму:

enter image description here

Если кто-то захочет добавить другой ответ, который улучшит этот или объясняет, как работает комбинация range и set_xlim, я буду рад принять чужой ответ, а не мой.

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

Вы можете сделать это, используя список / последовательность аргументов для бинов.

test = pd.DataFrame([[0,1],[0,1],[0,2],[1,0],[1,0],[1,1],[1,2],[1,2]], columns=["A","B"])
test
df = test[test["A"]==1]["B"]
df.hist(bins = np.arange(4)-0.5) 

Я использую 4 для arange, потому что это даст [0,1,2,3] для меток xtick, столбец будет размещен в 0-1, еще один в [1,2] изатем еще один в [2-3], я могу переместить их все вправо к центру, вычтя 0.5 из всех.

, что приводит к

enter image description here

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