[Python] Comment utiliser la bibliothèque de création de graphes Altair

Aperçu

Dans cet article, j'essaierai de dessiner différents graphiques en utilisant la bibliothèque de création de graphes Python Altair. Altair se caractérise par la saisie de données avec le DataFrame de Pandas.

données de test

Dans cet article, nous avons utilisé la Base de données des passagers du Titanic publiée sur Kaggle. Le format des données est le suivant.

train.csv


PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S
2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C
3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S
4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S
5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S
6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q

La manière de lire les données est indiquée ci-dessous. Référence

Installez Altair

Peut être installé avec pip.

Terminal


pip install altair

environnement

Nuage de points

Altair est la bibliothèque la plus appropriée pour créer des diagrammes de dispersion. Même les données numériques sont traitées comme données de catégorie en ajoutant ``: O ''.

altair_demo.py


import os
import altair as alt
import pandas as pd

cwd = os.getcwd()
path = ['train.csv']
file = os.path.join(cwd, *path)

df = pd.read_table(file, sep=',', index_col=0 ,header=0)

scatter_plot = alt.Chart(df).mark_circle().encode(
    x=alt.X('Age'),
    y=alt.Y('Fare'),
    column=alt.Column('Survived:O'),
    color=alt.Color('Sex', sort=['male', 'female']),
    tooltip=['Age', 'Fare', 'Name'],
    size=alt.Size('Pclass:O')
).properties(
	width=600,
	height=500
).interactive()

scatter_plot.show()

スクリーンショット 2020-10-18 23.02.34.png

Ligne de régression linéaire

Si vous souhaitez dessiner une ligne, vous pouvez la connecter en créant les coordonnées du point de départ et du point final dans DataFrame. La section et la pente de la régression linéaire peuvent être trouvées dans sckit-learn.

altair_demo.py


import os
import altair as alt
import pandas as pd
from sklearn.linear_model import LinearRegression

cwd = os.getcwd()
path = ['train.csv']
file = os.path.join(cwd, *path)

df = pd.read_table(file, sep=',', index_col=0 ,header=0)

#Supprimer la ligne contenant la valeur manquante

linear_df = df.dropna(subset=['Age', 'Fare'], how='any', axis=0)

#Créer un modèle de régression linéaire

linear = LinearRegression(
    ).fit(linear_df['Age'].values.reshape(-1,1), linear_df['Fare'].values.reshape(-1,1))

#Déterminer les paramètres

a = linear.coef_[0]
b = linear.intercept_

#Déterminer le seuil

x_min = df['Age'].min()
x_max = df['Age'].max()

#Créer un bloc de données

linear_points = pd.DataFrame({
    'Age': [x_min, x_max],
    'Fare': [a*x_min+b, a*x_max+b],
}).astype(float)

linear_line = alt.Chart(linear_points).mark_line(color='steelblue').encode(
    x=alt.X('Age'),
    y=alt.Y('Fare')
    ).properties(
    width=500,
    height=500
    ).interactive()

linear_line.show()

スクリーンショット 2020-10-18 23.07.39.png

Superposition de chiffres

Il est également possible de l'afficher en haut de la carte de dispersion.

altair_demo.py


import os
import altair as alt
import pandas as pd

cwd = os.getcwd()
path = ['train.csv']
file = os.path.join(cwd, *path)

df = pd.read_table(file, sep=',', index_col=0 ,header=0)

scatter_plot = alt.Chart(df).mark_circle(size=50).encode(
    x=alt.X('Age'),
    y=alt.Y('Fare'),
).properties(
    width=500,
    height=500
).interactive()

linear_line =Identique à ci-dessus (omis)

(scatter_plot + linear_line).show()

スクリーンショット 2020-10-19 10.24.58.png

Boîte à moustaches

altair_demo.py


import os
import altair as alt
import pandas as pd

cwd = os.getcwd()
path = ['train.csv']
file = os.path.join(cwd, *path)

df = pd.read_table(file, sep=',', index_col=0 ,header=0)

boxplot = alt.Chart(df.dropna(subset=['Embarked'], how='any', axis=0)).mark_boxplot().encode(
    x=alt.X('Survived:O'),
    y=alt.Y('Fare'),
    column=alt.Column('Embarked', sort=['S','Q','C']),
    color=alt.Color('Sex', sort=['male', 'female'])
).properties(
	width=600,
	height=500
).interactive()

boxplot.show()

スクリーンショット 2020-10-18 23.09.14.png

histogramme

En définissant l'axe Y sur `` count () '', il compte les éléments. Vous pouvez définir bin avec «alt.X ()».

altair_demo.py


import os
import altair as alt
import pandas as pd

cwd = os.getcwd()
path = ['train.csv']
file = os.path.join(cwd, *path)

df = pd.read_table(file, sep=',', index_col=0 ,header=0)

histgram = alt.Chart(df).mark_bar().encode(
    x=alt.X("Age", bin=alt.Bin(step=10,extent=[0,90])),
    y=alt.Y('count()'),
    column=alt.Column('Survived:O'),
    color=alt.Color('Sex', sort=['male', 'female']),
    opacity=alt.Opacity('Sex', sort=['male', 'female'])
    ).properties(
	width=600,
	height=500
	).interactive()

histgram.show()

スクリーンショット 2020-10-18 23.15.31.png

Comment enregistrer la figure

Vous pouvez enregistrer la figure créée au format html en installant le package suivant.

Terminal


pip install altair_saver

Ajoutez `` .interactive () '' pour que le graphique se déplace librement. Cette propriété est conservée dans le html enregistré.

altair_demo.py


import os
import altair as alt
import pandas as pd

cwd = os.getcwd()
path = ['train.csv']
file = os.path.join(cwd, *path)

df = pd.read_table(file, sep=',', index_col=0 ,header=0)

boxplot = alt.Chart(df.dropna(subset=['Embarked'], how='any', axis=0)).mark_boxplot().encode(
    x=alt.X('Survived:O'),
    y=alt.Y('Fare')).interactive()

boxplot.save(fp=boxplot.html)

Si vous souhaitez enregistrer dans un format autre que .html, vous pouvez vous référer à ici.

Exemple d'application

En combinant avec Streamlit, diverses applications d'analyse de données peuvent être créées.

Recommended Posts

[Python] Comment utiliser la bibliothèque de création de graphes Altair
Comment utiliser la bibliothèque de dessins graphiques Bokeh
Comment utiliser les requêtes (bibliothèque Python)
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
Comment utiliser la bibliothèque d'images Python dans la série python3
[Algorithm x Python] Comment utiliser la liste
python3: Comment utiliser la bouteille (2)
Comment utiliser le générateur
[Python] Comment utiliser la liste 1
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment utiliser checkio
[Python] Comment utiliser input ()
Comment utiliser le décorateur
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
Comment utiliser Raspeye Relay Module Python
Je voulais utiliser la bibliothèque Python de MATLAB
[Introduction à Udemy Python3 + Application] 27. Comment utiliser le dictionnaire
[Introduction à Udemy Python3 + Application] 30. Comment utiliser l'ensemble
Comment utiliser le modèle appris dans Lobe en Python
Comment utiliser la bibliothèque de solveurs "kociemba" de Rubik Cube
Python: comment utiliser async avec
Comment utiliser la fonction zip
Comment utiliser le module optparse
[Python] Comment utiliser la série Pandas
Comment utiliser SQLite en Python
Comment obtenir la version Python
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser Mysql avec python
Comment utiliser l'API Python d'OpenPose
Comment utiliser ChemSpider en Python
Python: Comment utiliser pydub (lecture)
Comment utiliser PubChem avec Python
Comment utiliser la fonction zip de python
Comment utiliser le module ConfigParser
[Python] Comment utiliser l'API Typetalk
Comment utiliser la méthode __call__ dans la classe Python
[Hyperledger Iroha] Remarques sur l'utilisation du SDK Python
Je ne savais pas comment utiliser l'instruction [python] for
Remarques sur l'utilisation de la guimauve dans la bibliothèque de schémas
[Python] Résumé de l'utilisation des pandas
[Introduction à Python] Comment utiliser la classe en Python?
Comment utiliser le pipeline Spark ML
Comment installer et utiliser pandas_datareader [Python]
[python] Comment utiliser __command__, explication des fonctions
[Linux] Comment utiliser la commande echo
[Python] Comment utiliser import sys sys.argv
Comment utiliser l'astérisque (*) en Python. C'est peut-être tout? ..
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
[Python] Organisation de l'utilisation des instructions
Mémorandum sur l'utilisation du python gremlin
[Python2.7] Résumé de l'utilisation d'unittest
[Python] Explique comment utiliser la fonction format avec un exemple
python: Comment utiliser les locals () et globals ()