Table des matières
SeabornIntroduction
SeabornInstallation
Documents officiels
SeabornStyle de dessin
sns.axes_style
sns.set_style()
sns.set
sns.despine
SeabornStyle de couleur
SeabornInAxesDessin
SeabornDessin
Cartographie relationnelle
seaborn.relplot()
Utilisation de base
hunParamètres
AjoutercolEtrowParamètres
Dessiner un diagramme linéaire
Cartographie des catégories
Diagramme de dispersion classifié
Carte de répartition par catégorie
Diagramme statistique de la classification
Diagramme à barres
Diagramme de colonne
Diagramme pointillé
Cartographie de la distribution
Distribution univariée
Distribution bivariée
pairplot
Graphique de régression linéaire
Supplément
Diagrammes thermodynamiques et EDAAnalyse exploratoire
Seaborn Est basé sur matplotlib Et la structure des données pandas Bibliothèque unifiée de cartographie statistique .Il a défini son propre style à l'avance.Et ensuite encapsulé une série de fonctions de dessin pratiques,Avant de passer matplotlib Il faut beaucoup de code pour mettre en œuvre le diagramme complet ,Utiliser seaborn Ça pourrait être très simple. ,Une ligne de code est terminée.
1.Adoption pip:pip install seaborn;
2.Adoption anaconda:conda install seaborn;
Site officiel:seaborn: statistical data visualization — seaborn 0.11.2 documentation (pydata.org)http://seaborn.pydata.org/
Documents d'apprentissage chinois :
An introduction to seaborn-Seaborn 0.9 Documents en chinois (cntofu.com)https://www.cntofu.com/book/172/docs/1.md
InseabornMoyenne,Vous pouvez définir le style à travers trois fonctions.Respectivement. sns.set_style;sns.axes_style;sns.set Méthodes.
(1) Si aucun paramètre n'est passé , Renvoie les propriétés du champ ;
(2) Styles temporaires ;
with sns.axes_style("dark",{"ytick.left":True}):
sns.scatterplot(x="total_bill",y="tip",data=tips)
Par exemple:
Cette fonction et sns.axes_style C'est pareil, Est également utilisé pour définir le style de dessin .Mais le style de cette fonction,Ce n'est pas temporaire.,Mais une fois qu'il est réglé, Alors tous les styles de dessin ci - dessous utiliseront ce style .
sns.set_style("darkgrid")
sns.scatterplot(x="total_bill",y="tip",data=tips)
Par exemple:
set La méthode est également utilisée pour styliser, C'est plus puissant. .Sauf que style À l'extérieur,Vous pouvez également définir la palette,Police,Taille de la police,Couleur, etc., Vous pouvez également configurer d'autres matplotlib.rcParamsParamètres acceptables.
sns.set(rc={"lines.linewidth":4})
fmri = sns.load_dataset("fmri")
sns.lineplot(x="timepoint",y="signal",data=fmri)
Par exemple:
Supprimer la fonction spinale ;
Par exemple:
Non recommandé(Pas très pratique à utiliser)Il n'y a pas beaucoup de description ici.
Exemple:
En fait, seaborn Il y a aussi beaucoup d'utilisation directe dans les fonctions de dessin de Axes Dessin, Lorsque le type de diagramme a été spécifié dans le nom de la fonction ,Ce type de diagramme est utilisé Axes Dessin.Par exemple, sns.scatterplot,sns.lineplot,sns.barplot Attendez..AxesLe dessin peut être utilisé directement avant matplotlib Certains des éléments du diagramme de configuration .
fig,ax = plt.subplots(1,2,figsize=(20,5))
sns.scatterplot(x="total_bill",y="tip",data=tips,ax=ax[0])
sns.barplot(x="day",y="total_bill",data=tips,ax=ax[1])
Par exemple, dessiner un diagramme à barres
Tracer un diagramme de dispersion
Cette fonction est très puissante,Peut être utilisé pour représenter la relation d'association entre plusieurs variables. Par défaut, un diagramme de dispersion est dessiné , Vous pouvez également dessiner un diagramme de type de ligne ,Quels dessins sont dessinés exactement à travers kind Paramètres à déterminer. En fait, les deux fonctions suivantes sont relplotCas particuliers:
Type de dispersion:scatterplot -> relplot(kind="scatter");
Type linéaire:lineplot -> replot(kind="line");
import seaborn as sns
tips = sns.load_dataset("tips",cache=True)
sns.relplot(x="total_bill",y="tip",data=tips)
hue Le paramètre est utilisé pour contrôler l'affichage des couleurs de la troisième variable. Par exemple, nous montrons les paramètres du jour de la semaine sur la base du graphique ci - dessus ,Vous pouvez le faire en utilisant le code suivant:
sns.relplot(x="total_bill",y="tip",hue="day",data=tips)
col Et row ,Le graphique peut être divisé en plusieurs colonnes ou lignes en fonction du nombre de valeurs d'un attribut. Par exemple, sur la base de la figure ci - dessus, nous voulons lunch Et dinner Affichage divisé en deux graphiques ,Et:
# col_wrap=1 Contrôle du saut de ligne
# size Taille du point
sns.relplot(x='total_bill',y='tip',data=tips,col='time',col_wrap=1,size="size")
sns.relplot(x='total_bill',y='tip',data=tips,col='time')
relplot Via les paramètres kind="line" Vous pouvez dessiner un diagramme en ligne.Et il fonctionne plus efficacement que plt.plot Plus fort.plotNe peut spécifier que xAxe etyDonnées de l'axe.Et relplot Il est possible de tracer automatiquement les calculs dans deux ensembles de données.
"""
Besoins:signalAvectimepoint Relations changeantes --- > Diagramme linéaire
Lire le graphique
Ligne --- Moyenne
Les ombres --- Intervalle de confiance
ci=None
style:region Différents styles de lignes sont utilisés dans différentes zones
"""
sns.relplot(x='timepoint',y='signal',data=fmri,kind='line',ci=None,hue="region",col="event",)
Dessin de la carte de classification,Ce qui est adopté est sns.catplot Pour y arriver..cat- Oui.categoryUne abréviation de,Cette méthode dessine par défaut Diagramme de dispersion classifié,Si vous voulez dessiner un autre type de diagramme,C'est aussi par kind Paramètres à spécifier.
Principalement divisé en
(1)Diagramme de dispersion classifié;
(2)Carte de répartition par catégorie;
(3)Diagramme statistique de la classification;
Les diagrammes de dispersion classifiés conviennent mieux aux cas où la quantité de données est faible,Ça marche. catplot Pour y arriver., Mais il y a deux façons particulières :
(1)stripplot():catplot(kind="strp")Par défaut;
(2)swarmplot():catplot(kind="swarm");
sns.catplot(x="day",y="total_bill",data=tips,hue="sex")
"""
Diagramme de dispersion des grappes
Inconvénients La quantité de données est énorme Sans objet
"""
sns.catplot(x="day",y="total_bill",data=tips,hue="sex",kind="swarm")
Carte de répartition par catégorie,Principalement selon la classification, Puis la répartition des données sous chaque classification .Aussi par catplot
Pour y arriver.,Les trois méthodes suivantes sont différentes kind Paramètres pour:
(1)Schéma du type de boîte:boxplot() (kind="box")
(2)Diagramme de violon:vioinplot() (kind=”violin")
Diagramme statistique de la classification,Selon la classification,Compter le nombre ou la proportion de données dans chaque catégorie.Il y a plusieurs façons:
(1)Diagramme à barres:barplot() (kind="bar")
(2)Diagramme de colonne:countplot() (kind="count")
(3)Diagramme pointillé:pointplot() (kind="point")
seaborn Le diagramme à barres a une fonction statistique, Peut compter la proportion de bureaux ,Moyenne,Vous pouvez également compter selon la fonction statistique que vous voulez.
"""
Diagramme statistique de la classification
Besoins: Afficher visuellement les différentes dates total_billNombre
Fil noir Intervalle de confiance Plus la ligne est longue, plus les données sont discrètes
estimator :Fonctions
"""
sns.catplot(x='day',y='total_bill',data=tips,kind='bar',estimator=sum)
Un diagramme cylindrique est un graphique utilisé spécifiquement pour compter le nombre d'occurrences d'une seule variable .
sns.catplot(x="sex",data=titanic,kind="count")
Les diagrammes pointillés sont très pratiques pour voir les tendances entre les variables .
sns.catplot(x="sex",y="survived",data=titanic,kind="point",hue="class")
La cartographie de la distribution est principalement divisée en distribution univariée et distribution bivariée et pairplot;
Les variables uniques sont principalement contrôlées par des histogrammes ,In seaborn L'histogramme des espèces a été dessiné en utilisant distplot,Parmi eux dist - Oui. distributionUne abréviation de,Non, pas du tout. histogram Une abréviation de.
titanic = pd.read_csv("./seaborn-data-master/titanic.csv")
titanic.head()
sns.distplot(titanic["age"])
Variation des paramètres
"""
Besoins: Observez la répartition par âge de tous
Carte de distribution univariée -- > Histogramme
- kde Montrer ou nonkdeCourbe
- bins Spécifier le nombre de groupes
- rug Plus les données sont denses, plus elles sont centralisées.
- hist Afficher les histogrammes
"""
sns.distplot(age_titanic['age'],bins=30,rug=True,hist=False)
Le graphique de distribution Multivariable montre la relation de distribution entre les deux variables .Généralement représenté par plusieurs graphiques.Les fonctions utilisées pour les cartes de distribution multivariables sont les suivantes: jointplot.
"""
Distribution bivariée
kind='hex' Points hexagonaux
gridsize Taille du point
height Taille du graphique 20*20
ratio Échelle entre le dessin principal et le dessin auxiliaire
space Distance entre le dessin principal et le dessin auxiliaire
marginal_kws
"""
sns.jointplot(x='total_bill',y='tip',data=tips,kind='hex',gridsize=15,height=5,ratio=3,space=0,marginal_kws={"rug":True,"kde":True},color="red")
Il est souvent utilisé pour apprendre à la machine à choisir le modèle approprié avant de construire le modèle .
sns.pairplot(tips,vars=["total_bill","tip"])
Les graphiques de régression linéaire peuvent nous aider à voir les tendances relationnelles des données.In seaborn Les graines peuvent passer regplot EtlmplotDeux implémentations de fonctions.regplot De x Et y Peut être NumpyTableau,SeriesVariables égales.EtlmplotDexEtyDoit être une chaîne,Et dataLa valeur de ne peut pas être vide:
(1)regplot(x,y,data=None);
(2)lmplot(x,y,data).
# Saisissez la Bibliothèque que vous souhaitez utiliser
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import seaborn as sns
from pandas_profiling import ProfileReport
"""Analyse des données"""
#Thermographe
# Analyser la corrélation entre les caractéristiques et visualiser .
plt.figure(figsize=(15,10))
sns.heatmap(dataset.corr(),annot=True)
#EDAAnalyse exploratoire
profile = ProfileReport(dataset, title='EDA', explorative=True)
#" Le Premier ne marche pas le second " https://blog.csdn.net/weixin_44527237/article/details/110096564
profile.to_widgets()
profile.to_notebook_iframe()