user:
初学者向けにVSCodeを使ってStreamlitアプリを作るガイドを書いてください。そのアプリは、次のような動作をします。
・ユーザにcsvファイルまたはエクセルファイルの入力を促します。
・エクセルファイルの場合は、どのシートを見たいかユーザに確認します。
・入力されたデータをydata_profilingでインタラクティブに解析できます。
assistant:
以下は、VSCodeを使ってStreamlitアプリを作る初心者向けガイドです。アプリの目的は、「CSVまたはExcelファイルをアップロードし、必要に応じてシートを選択し、ydata_profiling
(旧名:pandas_profiling
)でインタラクティブにデータ分析を行う」ことです。
💻 初心者向け:VSCodeでStreamlit+ydata_profilingアプリを作る完全ガイド
🎯 このガイドで作るアプリ
- ユーザーがCSVまたはExcelファイルをアップロード
- Excelの場合、シート選択が可能
- アップロードしたデータを
ydata_profiling
を使って可視化・解析
🛠️ 事前準備
1. VSCodeのインストール
- 公式サイト:https://code.visualstudio.com/
- Python拡張機能もインストールしておくと便利です(拡張機能 → Python を検索してインストール)
2. Pythonのインストール
- https://www.python.org/downloads/ から最新版をインストールしてください
- インストール時に「Add Python to PATH」にチェック✅
3. 仮想環境の作成(推奨)
python -m venv env
source env/bin/activate # macOS/Linux の場合
env\Scripts\activate # Windows の場合
4. 必要なライブラリのインストール
pip install streamlit pandas openpyxl ydata-profiling
📁 プロジェクト構成(例)
streamlit-data-profiler/
├── app.py
└── sample.xlsx(←テスト用Excelファイルなど)
🧑💻 app.py
のコード
import streamlit as st
import pandas as pd
from ydata_profiling import ProfileReport
from streamlit.components.v1 import html
st.set_page_config(page_title="データプロファイルアプリ", layout="wide")
st.title("📊 CSV / Excel アップローダ & データプロファイラー")
uploaded_file = st.file_uploader("ファイルをアップロードしてください(CSVまたはExcel)", type=["csv", "xlsx", "xls"])
if uploaded_file:
if uploaded_file.name.endswith(".csv"):
df = pd.read_csv(uploaded_file)
st.success("CSVファイルを読み込みました。")
elif uploaded_file.name.endswith((".xlsx", ".xls")):
excel_file = pd.ExcelFile(uploaded_file)
sheet = st.selectbox("📑 シートを選択してください", excel_file.sheet_names)
df = pd.read_excel(uploaded_file, sheet_name=sheet)
st.success(f"{sheet} シートを読み込みました。")
else:
st.error("対応していないファイル形式です。")
df = None
if df is not None:
st.subheader("🔍 データの概要")
st.dataframe(df.head())
st.subheader("📈 ydata_profiling による解析")
profile = ProfileReport(df, title="データプロファイルレポート", explorative=True)
html(profile.to_html(), height=1000, scrolling=True)
▶️ アプリを起動する
以下のコマンドをターミナルで実行:
streamlit run app.py
ブラウザが自動的に開き、アプリが起動します。
💡 補足
-
ydata_profiling
は非常に多機能ですが、大きなデータでは時間がかかることがあります。 -
openpyxl
はExcelファイルの読み込みに必要です。 -
streamlit.components.v1.html
を使って、プロファイルレポートをアプリに埋め込んで表示しています。
🧪 テスト用ファイル
自分でExcelやCSVを用意するか、以下のような簡単なCSVを用意してテストできます:
名前,年齢,職業
佐藤,34,エンジニア
鈴木,28,デザイナー
高橋,45,マネージャー
🚀 まとめ
このガイドでは、以下のスキルを身につけました:
- VSCodeでStreamlitアプリを作成
- CSVやExcelのファイルアップロード機能
-
ydata_profiling
を使ったデータの自動解析と可視化
希望があれば、次のステップとして「分析結果のPDF出力機能」や「Streamlit Cloudへのデプロイ方法」も紹介できます!やってみたいですか?
user:
ありがとうございます。「分析結果のPDF出力機能」を追加してください。
assistant:
どういたしまして!
では、**「ydata_profilingの分析結果をPDFで出力できる機能」**を追加しましょう。
📝 変更点の概要
Streamlitアプリに以下の機能を追加します:
-
ydata_profiling
で作成したプロファイリングレポートをPDFとして保存 - Streamlit上からダウンロードできるようにボタンを追加
📦 必要な追加ライブラリ
pdfkit
とwkhtmltopdf
が必要です:
1. pdfkit
のインストール(Pythonライブラリ)
pip install pdfkit
2. wkhtmltopdf
のインストール(PDF変換エンジン)
- macOS (Homebrew):
brew install --cask wkhtmltopdf
- Windows:
https://wkhtmltopdf.org/downloads.html からインストーラをダウンロードし、インストールパスを環境変数PATH
に追加します。
✏️ 修正後の app.py
以下のコードでは、PDF出力用に pdfkit
を使い、Streamlitでダウンロードボタンを表示します。
import streamlit as st
import pandas as pd
import pdfkit
import tempfile
from ydata_profiling import ProfileReport
from streamlit.components.v1 import html
st.set_page_config(page_title="データプロファイルアプリ", layout="wide")
st.title("📊 CSV / Excel アップローダ & データプロファイラー")
uploaded_file = st.file_uploader("ファイルをアップロードしてください(CSVまたはExcel)", type=["csv", "xlsx", "xls"])
if uploaded_file:
if uploaded_file.name.endswith(".csv"):
df = pd.read_csv(uploaded_file)
st.success("CSVファイルを読み込みました。")
elif uploaded_file.name.endswith((".xlsx", ".xls")):
excel_file = pd.ExcelFile(uploaded_file)
sheet = st.selectbox("📑 シートを選択してください", excel_file.sheet_names)
df = pd.read_excel(uploaded_file, sheet_name=sheet)
st.success(f"{sheet} シートを読み込みました。")
else:
st.error("対応していないファイル形式です。")
df = None
if df is not None:
st.subheader("🔍 データの概要")
st.dataframe(df.head())
st.subheader("📈 ydata_profiling による解析")
profile = ProfileReport(df, title="データプロファイルレポート", explorative=True)
report_html = profile.to_html()
html(report_html, height=1000, scrolling=True)
# PDF生成&ダウンロード
st.subheader("📥 プロファイル結果のPDF出力")
with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as tmp_pdf:
try:
pdfkit.from_string(report_html, tmp_pdf.name)
with open(tmp_pdf.name, "rb") as f:
st.download_button(
label="📄 PDFをダウンロード",
data=f,
file_name="profiling_report.pdf",
mime="application/pdf"
)
except Exception as e:
st.warning(f"PDFの生成に失敗しました: {e}")
💡 注意点
-
pdfkit
はwkhtmltopdf
が動作環境に正しくインストールされていないとエラーになります。 - PDFレポートはWeb表示よりもややシンプルになりますが、十分に実用的です。
- 一部のフォントやグラフがPDFに反映されにくいことがあります(この場合はPNGでのエクスポートを検討するのもアリです)。
✅ 動作確認後のチェックポイント
- ✅ CSVまたはExcelファイルをアップロードできるか
- ✅
ydata_profiling
のレポートが表示されるか - ✅ PDFダウンロードボタンが表示され、正常に保存できるか
🚀 これでPDF出力もバッチリ!
さらに機能拡張したい場合は、以下のようなアイデアもあります:
- プロファイリング結果のHTML出力(ファイル保存)
- ユーザーが分析対象の列を選択できるフィルター機能
- デプロイしてWeb共有する(Streamlit Cloudなど)
ご希望あれば、これらの追加サポートもしますよ!
user:
ありがとうございます。ここまでの話をブログに書きたいと思います。タイトル案をいくつか提案してください。
assistant:
いいですね!初学者向けにStreamlitアプリを作ってPDF出力まで対応するというのは、実用性もあって人気が出そうな内容です。以下にタイトル案をいくつかのパターンに分けて提案しますね:
🎓 教育・初心者向けを意識したタイトル
- 「はじめてのStreamlitアプリ開発:CSV/Excelアップロード&データ分析を一発表示!」
- 「初心者でもできた!VSCodeで作るStreamlitデータ解析アプリの作り方」
- 「Python初心者がStreamlitで作る!CSV/Excel対応データプロファイラー」
🧪 実用性・機能を押し出したタイトル
- 「CSVもExcelもOK!Streamlit+ydata_profilingで手軽にデータ可視化」
- 「PDF出力対応!Streamlitで作るデータ自動分析アプリ」
- 「アップロード→解析→PDF保存まで!Streamlitでデータ分析を自動化」
🛠 開発ステップを強調したタイトル
- 「VSCodeでStreamlitアプリ開発!データ分析レポートをPDFで出力しよう」
- 「5ステップで完成!ファイルアップロードからデータ解析・PDF出力まで」
😄 少しカジュアル・ブログっぽいタイトル
- 「ChatGPTに聞いて作った!Streamlitで作るデータ分析&PDF出力アプリ」
- 「CSVでもExcelでもOK!初心者がStreamlitでデータ分析アプリ作ってみた」
どの方向性がお好みですか?トーンやターゲット読者に合わせて微調整もできますよ!
user:
「Streamlit × ydata_profiling で作る!CSV/Excel対応データプロファイラー」にしたいと思います。それでは最後に、今回のまとめを詳しく書いてください。
assistant:
いいタイトルですね!
**「Streamlit × ydata_profiling で作る!CSV/Excel対応データプロファイラー」**というテーマにぴったりのまとめを、以下に詳しくご用意しました。
✅ 今回のまとめ:Streamlit × ydata_profiling で作るデータプロファイラーの全体像
今回のブログでは、初心者でもVSCodeで簡単にStreamlitアプリを作れる方法を、実際の開発手順に沿って紹介しました。特に、CSV/Excelファイルをアップロードして、インタラクティブなデータ解析レポートを生成し、それをPDFとして出力するという一連の流れを丁寧に解説しました。
以下に、ポイントを整理しておきます👇
🧱 1. VSCode環境でのアプリ開発準備
- Python・VSCode・Streamlitのインストール方法
- 仮想環境の作成と依存ライブラリ(
streamlit
,pandas
,ydata-profiling
,openpyxl
など)のインストール - 開発用ディレクトリの構成や起動コマンド(
streamlit run app.py
)の確認
📂 2. アプリの基本機能の実装
-
streamlit.file_uploader()
を使って CSV/Excelファイルのアップロードを実現 - Excelファイルの場合は
pandas.ExcelFile
を用いて シート選択機能を実装 - アップロードしたデータを
st.dataframe()
で即表示
📊 3. ydata_profiling による自動データ解析
-
ProfileReport(df, explorative=True)
を使って インタラクティブなデータプロファイリングレポートを生成 -
streamlit.components.v1.html()
を活用し、HTMLとしてレポートをStreamlit内に埋め込み表示
📄 4. 分析レポートをPDFでダウンロード
-
pdfkit.from_string()
を使って HTMLレポートをPDFに変換 -
st.download_button()
を使い、ユーザーが PDFとして保存・共有可能に -
wkhtmltopdf
のインストールが必要な点も忘れずに解説
🧠 学びと応用のヒント
- ノーコード的にデータ解析できるので、分析初心者にも最適
- データの前処理やEDA(探索的データ分析)の効率化に役立つ
- 応用すれば、列選択・フィルタ・可視化のカスタム機能なども追加可能
- 分析結果のPDF化により、ビジネス用途でのレポーティングや共有にも最適
🚀 次のステップに進むなら…
- Streamlit Cloudでデプロイして ブラウザ共有可能なWebアプリ化
- ユーザー入力に応じたデータフィルタやチャート追加
- AI分析補助機能(例:ChatGPT APIで「このデータで気になる点を教えて」など)
📘 おわりに
今回作成したアプリは、**「アップロードするだけで分析が完了する」**という、非常に便利な仕組みです。
初心者でも扱いやすく、実務でも応用しやすいため、ぜひ一度手を動かして体験してみてください!
ご希望があれば、ブログ記事の本文の下書きや、コードのGitHubへのアップロード手順などもお手伝いできますよ!お気軽にどうぞ 😊
user:
ありがとうございました。今日はこの辺で。また今度よろしくお願いします!
assistant:
こちらこそ、楽しい開発&執筆のお手伝いをさせていただき、ありがとうございました!
またいつでも気軽に声かけてくださいね 😊
次回も楽しみにしてます。お疲れさまでした〜!