前回はPythonを活用した効率的な箱ひげ図作成する方法をお伝えしました。
ただ、こういう手法ってpython書ける人しか使えないよね、、、みたいなことって良くありますよね。
そこで今回は、Pythonコードを書かない人でもWebアプリケーションを利用できるようにアプリケーションしようと思います。
私は仕事は一人ではできないと思っています。業務効率化は個人だけでなく全体の業務進捗に影響を与えるため、自分の効率化の力を共有してみんなに活用してもらいたいという思いがあります。
本題ですが、今回の記事では箱ひげ図作成するためのStreamlitアプリケーションを作成し、Streamlit Cloudにデプロイする方法をご紹介します。
Streamlitとは?
StreamlitはPythonでお手軽にWebアプリを作成するためのフレームワークです。
簡潔なコードでインタラクティブなアプリケーションを作成できるため、多くの人々に利用されています。
今回のゴールは、アプリケーションの公開と共有することです。
そのための手順として、Streamlitアプリケーションのコードをboxplot.pyというファイルに保存し、それをGitHubにプッシュして連携させて、Streamlit Cloud へのデプロイする手順をご説明します。
Streamlitを社内公開するメリット
Streamlitの社内公開には、次のメリットがあります。
非技術者でも簡単にデータ可視化や分析が行えるため、全員が意思決定に参加しやすくなります。
さらに、共有が容易であり、チーム全体で同じデータに基づく議論が可能になります。
業務効率が向上し、プロジェクトの進行がスムーズになります。
また、技術的なサポートが不要となり、IT部門の負担も軽減されます。
ステップ1: Streamlitアプリケーションの保存
以下のコードをboxplot.pyという名前で保存します。
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
def main():
st.title("Boxplot with Mean Values")
# ファイルのアップロード
uploaded_file = st.file_uploader("Upload CSV file", type=["csv"])
if uploaded_file is not None:
# アップロードされたCSVファイルをDataFrameに読み込む
data = pd.read_csv(uploaded_file)
st.write("### Uploaded Data:")
st.write(data)
# 1列目の文字列でグループ分けして、グループ名をカラム名に設定して結合
grouped_dataframes = []
for group_name, group_data in data.groupby(data.columns[0]):
group_df = pd.DataFrame({group_name: group_data[data.columns[1]].values})
grouped_dataframes.append(group_df)
# グループごとのデータフレームを縦方向に連結して新しいデータフレームを作成
merged_df = pd.concat(grouped_dataframes, axis=1)
# 外れ値を除去する関数
def remove_outliers(df, col):
numeric_df = df[pd.to_numeric(df[col], errors='coerce').notnull()]
Q1 = numeric_df[col].quantile(0.25)
Q3 = numeric_df[col].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
return numeric_df[(numeric_df[col] >= lower_bound) & (numeric_df[col] <= upper_bound)]
# 列ごとに外れ値を除去したデータフレームを作成
df_no_outliers = pd.DataFrame()
for col in merged_df.columns:
df_no_outliers[col] = remove_outliers(merged_df, col)[col]
# 箱ひげ図を描画
plt.figure(figsize=(8, 6))
sns.boxplot(data=df_no_outliers, orient='v', color='white', fliersize=5, showmeans=True, meanprops={"marker":"x", "markerfacecolor":"black", "markeredgecolor":"black", "markersize":10})
plt.xlabel("Variables")
plt.ylabel("Values")
plt.title("Boxplot with Mean Values")
st.pyplot(plt)
if __name__ == "__main__":
main()
ステップ2: アクセスとアカウント作成
Streamlit Cloud でアカウント作成します
- Web ブラウザを開き、Streamlit Cloud にアクセスします。
- “Sign up” または “Get Started” のボタンをクリックします。
- 必要な情報を入力して、新しいアカウントを作成します。これには、メールアドレス、ユーザー名、パスワードの設定が含まれます。
- 登録後、メールアドレスに送られてくる確認メールを確認し、アカウントを有効化します。
- Cloudにアクセスし、新しいアカウントを作成します。
- ダッシュボードから新しいアプリケーションを作成します。
ステップ3: アカウント設定から連携の手順
- Gitの公式サイトからインストーラーをダウンロードして実行する。
- インストール中はデフォルト設定のままで進める。
- Git Bashを起動する。Gitのインストールが完了すると、コマンドラインツール「Git Bash」もインストール済となるので、ご自身のPCの検索窓からGit Bashを探してみてください。
- ユーザー名を登録する:
git config --global user.name "Your Name"
- メールアドレスを登録する
git config --global user.email "youremail@example.com"
- 登録が成功したか確認する
git config --list
- GitHubの公式サイトにアクセスして新しいアカウントを作成する。
- 必要事項を入力し、「Create account」をクリックする。
- メール認証を行い、アカウント作成を完了する。
- 入力したメールアドレスに GitHub から確認用のメールが送信されます。メール内のリンクをクリックしてメールアドレスを確認し、アカウント作成を完了する。
- Git Bash(ターミナル画面)で、作業ディレクトリを作成する:
mkdir project
- 作成したディレクトリに移動する
cd project
- ローカルリポジトリを初期化する
git init
- GitHub上で新しいリポジトリを作成する。
- ローカルリポジトリとリモートリポジトリを紐づける
git remote add origin https://github.com/username/repository.git
- ファイルをステージングする。このとき使用するライブラリもGithubと連携させる必要がありますのでrequirements.txtも一緒にステージングしてください
git add boxplot.py git add requirements.txt
- 変更をコミットする
git commit -m "Commit message"
- リモートリポジトリに変更をプッシュする
git push origin main
ステップ4: デプロイの手順
- Streamlit Cloud にアクセスし、アカウントにログインします。アカウントを持っていない場合は、新しいアカウントを作成します。
- ダッシュボード画面に移動し、「New app」ボタンをクリックします。
- “GitHub” オプションを選択して、GitHub からアプリケーションをデプロイします。
- GitHub で作成したリポジトリの名前を検索し、該当するリポジトリを選択します。
- “main” ブランチ(または適切なブランチ)を選択して、”Deploy” ボタンをクリックします。
- Streamlit Cloud は自動的に GitHub リポジトリからアプリケーションをデプロイし、起動します。デプロイの進捗状況は、画面上部に表示されます。
- デプロイが完了すると、”View app” ボタンが表示されます。これをクリックすると、デプロイした Streamlit アプリケーションがブラウザで開きます。
ステップ5: アプリケーションの公開と共有
- Streamlit Cloud で開いたアプリケーションの画面で、右上の「Share」ボタンをクリックします。
- 公開したい人にリンクを送信するには、”Copy” ボタンをクリックしてアプリケーションの URL をコピーします。
- または、”Share via email” オプションを使用して、メールでリンクを直接送信することもできます。必要な情報を入力し、送信ボタンをクリックします。
- アプリケーションの URL を SNS や他のプラットフォームに投稿して共有することもできます。その際は、アプリケーションの URL をペーストして、他のユーザーがアクセスできるようにします。
これで、Streamlit Cloud にアプリケーションがデプロイされ、公開・共有が完了しました。
他のユーザーはアプリケーションの URL を使用して、ブラウザからアクセスして利用することができます。
Streamlit Cloudを使用するメリット
無料枠が利用可能
Streamlit Cloudには無料枠があり、無料でアプリケーションをホスティングできます。初めてのユーザーや小規模なプロジェクトに最適です。
簡単なデプロイメント
GitHubリポジトリとの連携を使えば、コードの変更があったときに自動的にデプロイメントが行われます。これにより、素早く最新のバージョンを公開できます。
ユーザーフレンドリーなインターフェース
Streamlit Cloudのダッシュボードは使いやすく、新しいアプリケーションを素早く作成し、公開できるように設計されています。
サポートとコミュニティ
Streamlitには豊富なドキュメントやチュートリアルがあり、コミュニティによるサポートも充実しています。問題が発生した場合にも解決策を見つけやすくなっています。
Streamlit Cloudを使ってStreamlitアプリケーションをデプロイすることで、簡単にデータの視覚化や機械学習モデルのデモンストレーションを共有できます。
無料枠を活用して、自身のデータサイエンスプロジェクトをより多くの人々と共有しましょう。
Webアプリでチームを活性化させたい方へ
私のブログでは今まで自分の経験上、役に立ったPythonコーディングのみを紹介しています。
そのため、もっとコーディングスキルを磨きたい、活用したい、ビジネス成果を最大化させたい方には情報不足するかもしれません。
ただし、プログラミングを勉強しようにも、ライフスタイルのバランスや家族関係、自己実現のための時間の問題でなかなか踏み出せないのビジネスマンが多いと思います。
そこでお勧めなのは、勉強したい領域のみを自分で選んで、そこだけに特化して短時間で学べる忍者CODEと「PyQ」オンラインスクールがお勧めです。
分散型バージョン管理システムGitを無料で勉強するなら忍者CODEがオススメ
忍者CODEにGit学習の無料問題集があり、初心者向けの「初級コース」から「上級コース」まで全20問の問題を解説を見ながら解けば、一通りの作法を身に着けることが出来ます。
Pythonコーディングを効率的に学びたいなら「PyQ」オンラインスクール
今回であればWebアプリ・API(65時間)とデータ分析(45時間)を受講すれば習得できるはずです。
- データ分析:Pythonでデータ分析を行うための基礎知識を身につけるためのコース
- Webアプリ・API:PythonによるWeb開発を学習するコース
月額制なので忙しくなれば途中退会も可能ですので、リスクは低いとおもいます。
もやもやしていたら、ぜひ行動を!頑張っていきましょう!