Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

データサイエンスに向いたPython用可視化ツールstreamlit その4:SQLite3と組み合わせる

多分、意図通りの使い方の一つであろう、DBとの組み合わせ……ということでSQLite3と組み合わせた例を

実際のところ

グラフはplotlyとの連動で生成します。
steamlitはplotlyとの組み合わせ用メソッドを標準で持っているため、グラフ部分は完全に任せてしまった方が良さげ。

import streamlit as st
import pandas as pd
import sqlite3
import plotly.express as px
from datetime import datetime, timedelta

# Connect to SQLite3 database
conn = sqlite3.connect("your_database.db")

# Read the loggingData table
query = "SELECT * FROM loggingData"
data = pd.read_sql_query(query, conn)

# Convert the datetime strings to datetime objects
data["記録日時"] = pd.to_datetime(data["記録日時"])

st.title("SQLite3 and Streamlit Example")

# Create a slider to specify the date range
min_date = (datetime.now() - timedelta(days=100)).date()
max_date = datetime.now().date()
date_range = st.slider("Date Range", min_date, max_date, (min_date, max_date))

# Filter the data based on the selected date range
filtered_data = data[(data["記録日時"] >= date_range[0]) & (data["記録日時"] <= date_range[1])]

# Create a line chart with the filtered data
fig = px.line(filtered_data, x="記録日時", y="測定値", color="記録装置ID")
st.plotly_chart(fig)

# Find the maximum value for each device
max_values = filtered_data.groupby("記録装置ID").max().reset_index()

# Display the maximum values
st.subheader("Maximum Values for Each Device")
st.write(max_values[["記録装置ID", "記録日時", "測定値"]])

# Close the connection to the SQLite3 database
conn.close()