Durante o ano passado, fui confrontado com a necessidade de desenhar histogramas e gráficos de barras com frequência suficiente para me fazer querer e escrever sobre isso. Além disso, eu mesmo não tinha essas informações. Este artigo fornece uma visão geral de três métodos para criar esses gráficos no Python.
Para começar, eu mesmo não sabia por muito tempo da minha inexperiência: gráficos de barras e histogramas são duas coisas diferentes. A principal diferença é que o histograma mostra a distribuição de frequência - especificamos um conjunto de valores para o eixo Ox, e a frequência é sempre plotada em Oy. No gráfico de barras (que seria apropriado chamar gráfico de barras na literatura inglesa), especificamos o eixo da abcissa e o eixo das ordenadas.
Para demonstração, usarei o conjunto de dados da biblioteca de aprendizado de íris batido scikit. Vamos começar com as importações:
import pandas as pd import numpy as np import matplotlib import matplotlib.pyplot as plt from sklearn import datasets iris = datasets.load_iris()
Transformaremos o conjunto de dados da íris em um quadro de dados - para que seja mais conveniente trabalhar com ele no futuro.
data = pd.DataFrame(data= np.c_[iris['data'], iris['target']], columns= iris['feature_names'] + ['target'])
Dos parâmetros em que estamos interessados, os dados contêm informações sobre o comprimento das sépalas e pétalas e a largura das sépalas e pétalas.
Usando o MatplotlibHistogramaVamos construir um histograma regular mostrando a distribuição de frequência dos comprimentos das pétalas e sépalas:
fig, axs = plt.subplots(1, 2) n_bins = len(data) axs[0].hist(data['sepal length (cm)'], bins=n_bins) axs[0].set_title('sepal length') axs[1].hist(data['petal length (cm)'], bins=n_bins) axs[1].set_title('petal length')
Construindo um gráfico de barrasUtilizamos métodos matplotlib para comparar a largura das folhas e sépalas. Isso parece mais conveniente em um único gráfico:
x = np.arange(len(data[:50])) width = 0.35
Por exemplo, e para simplificar a imagem, pegue as primeiras 50 linhas do quadro de dados.
fig, ax = plt.subplots(figsize=(40,5)) rects1 = ax.bar(x - width/2, data['sepal width (cm)'][:50], width, label='sepal width') rects2 = ax.bar(x + width/2, data['petal width (cm)'][:50], width, label='petal width') ax.set_ylabel('cm') ax.set_xticks(x) ax.legend()
Usando métodos marítimosNa minha opinião, muitas tarefas para a construção de histogramas são mais fáceis e mais eficientes de executar usando métodos marítimos
(além disso, na marinha também ganha com suas capacidades gráficas, na minha opinião) .
Vou dar um exemplo de tarefas resolvidas no mar com uma única linha de código. Especialmente no mar está ganhando quando você precisa construir uma distribuição. Digamos que precisamos construir uma distribuição de comprimento de sépala. A solução para esse problema é a seguinte:
sns_plot = sns.distplot(data['sepal width (cm)']) fig = sns_plot.get_figure()

Se você precisar apenas de um cronograma de distribuição, poderá fazer o seguinte:
snsplot = sns.kdeplot(data['sepal width (cm)'], shade=True) fig = snsplot.get_figure()

Leia mais sobre a construção de distribuições marítimas
aqui.Pandas Bar ChartsTudo é simples aqui. Este é realmente o shell do matplotlib.pyplot.hist (), mas chamar uma função via pd.hist () às vezes é mais conveniente do que as construções menos ágeis do matplotlib-a.
Você pode ler mais na documentação da biblioteca do pandas.Funciona assim:
h = data['petal width (cm)'].hist() fig = h.get_figure()

Obrigado por ler até o fim! Ficarei feliz em comentários e comentários!