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.
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
Kann mit pip installiert werden.
Terminal
pip install altair
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()
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()
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()
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()
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()
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.
Durch die Kombination mit Streamlit können verschiedene Datenanalyseanwendungen erstellt werden.
Recommended Posts