У меня много разных панд. Серия выглядит следующим образом:
my_series:
0.0 10490405.0
1.0 3334931.0
2.0 2770406.0
3.0 2286555.0
4.0 1998229.0
5.0 1636747.0
6.0 1449938.0
7.0 1180900.0
8.0 1054964.0
9.0 869783.0
10.0 773747.0
11.0 653608.0
12.0 595688.0
...
682603.0 1.0
734265.0 1.0
783295.0 1.0
868135.0 1.0
Это частоты моих данных: это означает, что в моих данных 10490405 нулей, 3334931 из 1 и т. Д. Я хочупостроение гистограммыЯ знаю, что могу сделать это, используя plt.bar
:
plt.bar(my_series.index, my_series.values)
Но он работает плохо из-за большого количества уникальных значений в my_series
(это может быть тысячи!).Так что бары на участке слишком узкие и стали невидимыми!Поэтому я действительно хочу использовать hist
для ручной установки количества бинов и т. Д. Но я не могу использовать my_series.hist (), потому что у него нет такого количества нулей, как у него только одно значение для нулевой метки!
код для воспроизведения проблемы:
val = np.round([1000000/el**2 for el in range(1,1000)])
ind = [el*10+np.random.randint(10) for el in range(1,1000)]
my_series = pd.Series(val, ind)
plt.bar(my_series.index, my_series.values)
Поскольку у меня уже есть закрытое голосованиеи неправильный ответ, я получил описание моей проблемы действительно плохо.Я хочу добавить пример:
val1 = [100, 50, 25, 10, 10, 10]
ind1 = [0, 1, 2, 3, 4, 5]
my_series1 = pd.Series(val1, ind1)
my_series.hist()
Это просто history () для значений ряда!Итак, мы можем видеть, что 10 имеет значение 3 (потому что их три в ряду), а все остальные имеют значение 1 в истории.Что я хочу получить:
0 метка имеет значение 100, 1 метка имеет значение 50 и т. Д.