目次
・最初に
・作ったもの
・Streamlitとは
・なぜアプリを改修したのか
・アプリ概要
・アプリ制作をしてみた所感
・最後に
・宣伝
最初に
本記事では以下の記事で紹介したSeabornオープンデータ内容確認アプリの改良をしたため、追加内容と改善点について紹介します。
作ったもの
Seaborn オープンデータ内容確認サイト
↓アプリのリンクです。こちらでアプリの操作ができます!
※↓前回作成したアプリ
Streamlitとは
StreamlitはPythonのみでアプリケーションを作成できるオープンソースのフレームワークです。
HTML/CSS/Javascriptの知識なしで簡単にアプリケーションを作成できます。
Streamlitの特徴は以下です。
- Pythonだけで完結
- グラフや表の表示が簡単
- セットアップが最小限ですぐ動作する
- 豊富にウィジェット(スライダーやセレクト)が用意されている
↓公式サイトです
↓以下参考にしたサイトです。
なぜアプリを改修したのか
機能面と内部処理ににて以下のデメリットがあり、改修することに決めました。
機能面
①提供するデータの数が少ない
前回のアプリで提供しているのはtipsとtitanicのみでした。
seabornのオープンデータを確認するサイトなのに2つしかデータがないのは流石に少なすぎるのでデータを増やす判断をしました。
また、前回はタブでデータを選ぶ形式でしたが、今回はサイドバーでデータセットを選ぶ方法に変えました。
②どうやってデータをロードするのかわからない
オープンデータのデータ自体は確認できるのですが、どうやってロードすれば良いかわからない状態だったので追加が必要と判断しました。
よってPythonでデータをロードをする際のサンプルコードを今回追加しています。
③利用できるグラフの種類が少ない
前回のアプリでは棒グラフでしかデータを確認できなかったので他のグラフも追加する判断をしました。
内部処理面
すべての処理が一つのファイルに記述されている
前回のアプリでは全部の処理が1ファイルに記述されていたため、あまり可読性とメンテナンス性が良くない状態でした。
よって、グラフを表示する内部処理など、内部モジュールにできそうな処理は別ファイルに記述して内部モジュールにしました。
アプリ概要
アプリ機能概要
アプリの内容としてはpythonのライブラリであるseabornで提供されているデータの内容を表形式とグラフ形式で確認できるアプリです。
今回のアプリではtipsとtitanic以外に以下のデータも利用できます。
(サイドバーにあるチェックボックスでデータを選べます。)
anagrams
anscombe
attention
car_crashes
diamonds
dots
dowjones
exercise
flights
fMRI
geyser
glue
healthexp
iris
mpg
penguins
planets
seaice
taxis
↓seabornの提供データの詳細は以下です。
このアプリでは以下の機能が利用できます。
① データを表形式で確認
②Pythonでのデータの読み込み方法を確認
③ カテゴリ変数にグループ分けした統計量(合計や平均)を表示
④ ③の数値をグラフで確認
⑤カテゴリごとに散布図を表示
⑥カテゴリごとに色分けした散布図を表示
⑦時系列の折れ線グラフを表示
⑧カテゴリごとに色分けした時系列の折れ線グラフを表示
※データの性質上③~⑧の一部機能を利用できないデータもあります。
使用ライブラリ
使用したライブラリは以下の通りです。
・streamlit
・pandas
・numpy
・seaborn
・plotly
それぞれの用途は以下の通りです。
streamlit
→アプリフレームワーク用
pandas・numpy
→データ加工・表の表示用
seaborn
→データ抽出用
plotly
→グラフ可視化用
以下の強みがあるため今回もplotlyを採用しています。
・インタラクティブにグラフを操作できる(グラフのズームやホバー操作など)
・デザインが洗練されている(モダンな見た目)
プログラムコード
以下がPythonのコードとなります。
↓メインページ
↓内部モジュール
デプロイサーバーについて
今回も同じくStreamlit CloudからPythonプログラムをデプロイ・公開しました。
GithubリポジトリにソースコードをアップロードしてStreamlit Cloudと連携することでデプロイができます。
↓以下参考にしたサイトです
改修した所感
以下が今回の改修作業を踏まえた自分の所感です。
可読性を上げるのは難しい
内部の計算処理などは内部モジュールにすることで整理できたのですが、サイトのレイアウトに関わる機能(ボタンや文章など)は上手くまとめられず、まだまだ読みづらいです。
可読性向上のための取り組みは今後も続けていきます。
処理が重い
コンテンツの数が増えたため、前回より処理が重くなっています。
今のところ採用できる対策として以下の3案かなと思ってます。
①は簡単にできそうなので良さそうなのがあれば変えようかなと思います。
(基本は無料利用できるPaaSを探します)
①デプロイするサーバーを変える
②遅延処理
③pandasをpolarsに変えてみる
最後に
ここまで読んでいただきありがとうございました。
前回のアプリ作成の反省点を踏まえ今回改修をしてみましたが、まだまだ改善点は多い状況です。
今後は上記の改善案について取り組みやすそうなものから試していこうと思います。
何かアプリについてアドバイスや質問などがありましたらコメントをいただけますと幸いです。
宣伝
株式会社ジールはMicrosoft Azure やAWS(Amazon Web Services)、Google Cloud Platform(GCP)、Oracle Cloud Infrastructure(OCI)など、多彩なクラウドプラットフォーム構築・運用の知見を有しています。そのため、複数のクラウドサービスを組み合わせるマルチクラウド環境においても、ベンダーロックインを回避し、お客様のご要望に応じた最適なクラウドプラットフォームの構築・運用への対応が可能です。