[Python] Verwendung der Diagrammerstellungsbibliothek Altair

Überblick

In diesem Artikel werde ich versuchen, verschiedene Diagramme mithilfe der Python-Diagrammerstellungsbibliothek Altair zu zeichnen. Altair zeichnet sich durch die Eingabe von Daten mit dem DataFrame von Pandas aus.

Testdaten

In diesem Artikel haben wir die auf Kaggle veröffentlichte Titanic Passenger Database verwendet. Das Datenformat ist wie folgt.

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

Die Art und Weise, die Daten zu lesen, ist unten dargestellt. Referenz

Installieren Sie Altair

Kann mit pip installiert werden.

Terminal


pip install altair

Umgebung

Streudiagramm

Altair ist die am besten geeignete Bibliothek zum Erstellen von Streudiagrammen. Sogar numerische Daten werden durch Hinzufügen von : O als Kategoriedaten verarbeitet.

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

Lineare Regressionslinie

Wenn Sie eine Linie zeichnen möchten, können Sie sie verbinden, indem Sie die Koordinaten des Startpunkts und des Endpunkts in DataFrame erstellen. Der Abschnitt und die Steigung der linearen Regression finden Sie in 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)

#Löschen Sie die Zeile mit dem fehlenden Wert

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

#Erstellen Sie ein lineares Regressionsmodell

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

#Parameter bestimmen

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

#Schwellenwert bestimmen

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

#Erstellen eines Datenrahmens

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

Überlagerung von Zahlen

Es ist auch möglich, es über der Streukarte anzuzeigen.

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 =Gleich wie oben (weggelassen)

(scatter_plot + linear_line).show()

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

Box Whisker

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

Histogramm

Durch Setzen der Y-Achse auf "count ()" werden die Elemente gezählt. Sie können bin mit alt.X () setzen.

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

So speichern Sie die Figur

Durch die Installation des folgenden Pakets können Sie die erstellte Figur als HTML speichern.

Terminal


pip install altair_saver

Fügen Sie .interactive () hinzu, damit sich das Diagramm frei bewegen kann. Diese Eigenschaft bleibt im gespeicherten HTML-Code erhalten.

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)

Wenn Sie in einem anderen Format als ".html" speichern möchten, können Sie auf hier verweisen.

Anwendungsbeispiel

Durch die Kombination mit Streamlit können verschiedene Datenanalyseanwendungen erstellt werden.

Recommended Posts

[Python] Verwendung der Diagrammerstellungsbibliothek Altair
Verwendung der Grafikzeichnungsbibliothek Bokeh
Verwendung von Anfragen (Python Library)
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
Verwendung der Python-Bildbibliothek in der Python3-Serie
[Algorithmus x Python] Verwendung der Liste
python3: Verwendung der Flasche (2)
Verwendung des Generators
[Python] Verwendung von Liste 1
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
[Python] Verwendung von input ()
Wie benutzt man den Dekorateur?
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
Verwendung von Raspeye Relay Module Python
Ich wollte die Python-Bibliothek von MATLAB verwenden
[Einführung in die Udemy Python3 + -Anwendung] 27. Verwendung des Wörterbuchs
[Einführung in die Udemy Python3 + -Anwendung] 30. Verwendung des Sets
Verwendung des in Lobe in Python erlernten Modells
Verwendung der Solver-Bibliothek "kociemba" von Rubik Cube
Python: So verwenden Sie Async mit
Verwendung der Zip-Funktion
Verwendung des optparse-Moduls
[Python] Verwendung der Pandas-Serie
Verwendung von SQLite in Python
So erhalten Sie die Python-Version
[Python] Verwendung von Liste 3 Hinzugefügt
Wie man MySQL mit Python benutzt
Verwendung der Python-API von OpenPose
Verwendung von ChemSpider in Python
Python: Verwendung von pydub (Wiedergabe)
Verwendung von PubChem mit Python
Verwendung der Zip-Funktion von Python
Verwendung des ConfigParser-Moduls
[Python] Verwendung der Typetalk-API
Verwendung der Methode __call__ in der Python-Klasse
[Hyperledger Iroha] Hinweise zur Verwendung des Python SDK
Ich wusste nicht, wie ich die [Python] für die Anweisung verwenden sollte
Hinweise zur Verwendung von Marshmallow in der Schemabibliothek
[Python] Zusammenfassung der Verwendung von Pandas
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Verwendung der Spark ML-Pipeline
So installieren und verwenden Sie pandas_datareader [Python]
[Python] Verwendung von __command__, Funktionserklärung
[Linux] Verwendung des Befehls echo
[Python] Verwendung von import sys sys.argv
Verwendung von Sternchen (*) in Python. Vielleicht ist das alles? ..
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
[Python] Organisieren der Verwendung für Anweisungen
Memorandum über die Verwendung von Gremlin Python
[Python2.7] Zusammenfassung der Verwendung von unittest
[Python] Erklärt anhand eines Beispiels, wie die Formatierungsfunktion verwendet wird
Python: Verwendung von Einheimischen () und Globalen ()