ЦЕЛЬ: Я хочу создать функцию распределения для возрастов зарегистрированных собак в 2017 году в Цюрихе из набора данных «Собаки Цюриха» (Kaggle) (с Python). Переменная, с которой я работаю - 'GEBURTSJAHR_HUND' - дает год рождения для каждой зарегистрированной собаки в виде int. Я преобразовал его в переменную dog_age (= 2017 - Birth_date) и хочу построить график функции распределения. См. Изображение ниже для отсортированного списка размеров группы по возрасту.
Размер возрастных групп собак
ПРОБЛЕМА: Я столкнулся с тем, что моя функция распределения x На оси есть пустые промежутки / полосы. Каждый возраст показан на графике, но между некоторыми из этих возрастов есть пустые столбцы. Пример: 1 и 2 - полные полосы, но между ними пустое пространство. Между 2 и 3 нет пустого места, а между 3 и 4 есть. Кажется случайным, какие значения имеют пробелы между ними.
Какая моя проблема c график распределения выглядит на данный момент
ПРОВЕРИЛ: Я ранее пробовал три вещи, чтобы исправьте это.
- plt.xticks (...) К сожалению, это изменило только эстетику оси x.
- Пробовал ax = sns.distplot с последующими линиями тикера ax.xaxis , но это не дало ожидаемого результата.
ax.xaxis.set_major_locator(ticker.MultipleLocator())
ax.xaxis.set_major_formatter(ticker.ScalarFormatter(0))
Может проблема с переменной dog_age? Использовалась исходная переменная Birth_date, но возникла та же проблема.
CODE:
dfnew = pd.read_csv(dog17_filepath,index_col='HALTER_ID')
dfnew.dropna(subset = ["ALTER"], inplace=True)
dfnew['dog_age'] = 2017 - dfnew['GEBURTSJAHR_HUND']
b = dfnew['dog_age']
sns.set_style("darkgrid")
plt.figure(figsize=(15,5))
sns.distplot(a=b,hist=True)
plt.xticks(np.arange(min(b), max(b)+1, 1))
plt.xlabel('Age Dog', fontsize=12)
plt.title('Distribution of age of dogs', fontsize=20)
plt.show()
Заранее спасибо,
Arthur