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.
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.
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()
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.
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))
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)
Ce dernier est ce que seaborn.countplot
Est-ce que.
sns.countplot(x2, color="C0")
Il convient donc aux variables discrètes ou catégoriques.
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.