web-dev-qa-db-fra.com

Quelle est la différence majeure entre histogramme, comteplot et distplot dans la bibliothèque marboraise?

Je pense qu'ils ressemblent tous à la même chose, mais il doit y avoir une différence.

Ils prennent tous une seule colonne en tant qu'entrée et l'axe de Y a le comptage pour toutes les parcelles.

8
Cooldeep

Ces fonctions de traçage pyplot.hist, seaborn.countplot et seaborn.displot sont tous des outils d'assistance pour tracer la fréquence d'une seule variable. En fonction de la nature de cette variable, ils peuvent être plus ou moins adaptés à la visualisation.

Variable continue

Une variable continue x peut être histrogrammée pour montrer la distribution de fréquence.

import matplotlib.pyplot as plt
import numpy as np

x = np.random.Rand(100)*100
hist, edges = np.histogram(x, bins=np.arange(0,101,10))
plt.bar(edges[:-1], hist, align="Edge", ec="k", width=np.diff(edges))

plt.show()

enter image description here

La même chose peut être réalisée en utilisant pyplot.hist ou alors seaborn.distplot,

plt.hist(x, bins=np.arange(0,101,10), ec="k")

ou alors

sns.distplot(x, bins=np.arange(0,101,10), kde=False, hist_kws=dict(ec="k"))

distplot wraps pyplot.hist, mais certaines autres fonctionnalités ont-elles en outre permis à par exemple. montrer une estimation de la densité de noyau.

Variable discrète

Pour une variable discrète, un histogramme peut ou non être approprié. Si vous utilisez un numpy.histogram, les bacs devraient être exactement entre les observations discrètes prévues.

x1 = np.random.randint(1,11,100)

hist, edges = np.histogram(x1, bins=np.arange(1,12)-0.5)
plt.bar(edges[:-1], hist, align="Edge", ec="k", width=np.diff(edges))
plt.xticks(np.arange(1,11))

enter image description here

On pourrait plutôt compter également les éléments uniques de x,

u, counts = np.unique(x1, return_counts=True)
plt.bar(u, counts, align="center", ec="k", width=1)
plt.xticks(u)

entraînant la même parcelle que ci-dessus. La principale différence est que le cas où toutes les observations possibles ne sont pas occupées. Dire 5 ne fait même pas partie de vos données. Une approche d'histogramme le montrerait toujours, alors que cela ne fait pas partie des éléments uniques.

x2 = np.random.choice([1,2,3,4,6,7,8,9,10], size=100)

plt.subplot(1,2,1)
plt.title("histogram")
hist, edges = np.histogram(x2, bins=np.arange(1,12)-0.5)
plt.bar(edges[:-1], hist, align="Edge", ec="k", width=np.diff(edges))
plt.xticks(np.arange(1,11))

plt.subplot(1,2,2)
plt.title("counts")
u, counts = np.unique(x2, return_counts=True)
plt.bar(u.astype(str), counts, align="center", ec="k", width=1)

enter image description here

Ce dernier est ce que seaborn.countplot Est-ce que.

sns.countplot(x2, color="C0")

enter image description here

Il convient donc aux variables discrètes ou catégoriques.

Résumé

Toutes les fonctions pyplot.hist, seaborn.countplot et seaborn.displot Agissez comme des emballages pour une barre de bar matplotlib et peut être utilisé si le tracé manuellement de ce tracé de bar est considéré comme trop encombrant.
Pour les variables continues, un pyplot.hist ou alors seaborn.distplot peut être utilisé. Pour les variables discrètes, un seaborn.countplot est plus pratique.

12