WedX - журнал о программировании и компьютерных науках

Python создает гистограмму, сравнивая 2 набора данных

У меня есть блокнот с гистограммами 2 *, одна - зимние данные, а другая - летние. Я подсчитал общее количество всех преступлений и нанес их на гистограмму, используя код:

ax = summer["crime_type"].value_counts().plot(kind='bar')
plt.show()

Что показывает график вроде:

введите описание изображения здесь

У меня есть другой график, почти такой же, но для зимы:

ax = winter["crime_type"].value_counts().plot(kind='bar')
plt.show()

И я хотел бы сравнить эти 2 диаграммы друг с другом на одной и той же гистограмме (где каждое преступление на оси x имеет 2 столбца, одну зиму и одно лето).

Я пробовал, и это только я экспериментирую:

bx = (summer["crime_type"],winter["crime_type"]).value_counts().plot(kind='bar')
plt.show()

Любой совет будет принят во внимание!

07.11.2018

  • Привет, похоже, вам нужна сгруппированная гистограмма. Разместите образцы данных, чтобы люди могли поэкспериментировать. Кроме того, опубликуйте пакет Python, который вам нужно использовать - matplotlib, pandas и т. Д. Если вы можете объединить летние и зимние данные вместе, то есть примеры этого с помощью matplotlib (1, 2) или построение панд. Если их необходимо хранить отдельно, см. 1. 07.11.2018

Ответы:


1

Следующее генерирует фиктивные данные ваших данных и формирует желаемую сгруппированную гистограмму:

import random
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

s = "Crime Type Summer|Crime Type Winter".split("|")

# Generate dummy data into a dataframe
j = {x: [random.choice(["ASB", "Violence", "Theft", "Public Order", "Drugs"]
                       ) for j in range(300)] for x in s}
df = pd.DataFrame(j)

index = np.arange(5)
bar_width = 0.35

fig, ax = plt.subplots()
summer = ax.bar(index, df["Crime Type Summer"].value_counts(), bar_width,
                label="Summer")

winter = ax.bar(index+bar_width, df["Crime Type Winter"].value_counts(),
                 bar_width, label="Winter")

ax.set_xlabel('Category')
ax.set_ylabel('Incidence')
ax.set_title('Crime incidence by season, type')
ax.set_xticks(index + bar_width / 2)
ax.set_xticklabels(["ASB", "Violence", "Theft", "Public Order", "Drugs"])
ax.legend()

plt.show()

С помощью этого скрипта я получил:

это изображение

Вы можете проверить демонстрацию в документации по matplotlib здесь: https://matplotlib.org/gallery/statistics/barchart_demo.html

Важно отметить индекс!

index = np.arange(5) # Set an index of n crime types
...
summer = ax.bar(index, ...)
winter = ax.bar(index+bar_width, ...)
...
ax.set_xticks(index + bar_width / 2)

Это линии, на которых полосы располагаются на горизонтальной оси так, что они сгруппированы вместе.

07.11.2018

2

Создайте фреймворк pandas с 3 столбцами Crimetype, count, Season и попробуйте эту функцию.

#Importing required packages

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import MaxNLocator

#Function Creation
def plt_grouped_bar(Plot_Nm,group_bar,x, y,plt_data,**bar_kwargs):
    plt_fig=plt.figure(figsize=(18,9))
    ax=plt_fig.add_subplot()
    g = sns.catplot(x=x, y=y, hue=group_bar,data=plt_data,ax=ax,kind="bar",**bar_kwargs)
    for p in ax.patches:
        height = p.get_height()
        ax.text(x = p.get_x()+(p.get_width()/2),
        y = height+0.05,
        s = '{:.0f}'.format(height),
        ha = 'center',va = 'bottom',zorder=20, rotation=90)
    ax.set_title(Plot_Nm,fontweight="bold",fontsize=18,alpha=0.7,y=1.03)
    g.set_xticklabels(x,fontsize=10,alpha=0.8,fontweight="bold")
    plt.setp(ax.get_xticklabels(), rotation=90)
    ax.set_yticklabels("")
    ax.set_xlabel("")
    ax.set_ylabel("")
    ax.yaxis.set_major_locator(MaxNLocator(integer=True))
    ax.tick_params(axis=u'both',length=0)
    ax.legend(loc='upper right')
    for spine in ax.spines:
        ax.spines[spine].set_visible(False)
    plt.close()

#Calling the function
plt_grouped_bar('Title of bar','weather','crimetype','count',pandasdataframename)
09.02.2021
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]