こんにちは、JS2IIUです。
Streamlitで構成したUIに対してデータを入力する方法としてファイルを読み込ませることが可能です。今回はCSVファイルからデータを読み込み、データフレームとして表示させてみます。今回もよろしくお願いします。
1. はじめに
PythonでCSVファイルの内容を表のように表示したいと思ったことはありませんか?
今回は、StreamlitというPythonライブラリを使って、CSVファイルをアップロードし、その内容をデータフレーム形式で表示するシンプルなWebアプリを作ってみましょう。
2. Streamlitとは?
Streamlit(ストリームリット)は、Pythonのコードだけで簡単にWebアプリケーションを作成できる便利なライブラリです。
特に、以下のような特徴があります:
- Web開発の知識がなくても使える
- データの可視化に強い
- ローカルPC上で動作確認できる
データ分析や機械学習の結果を手軽にインタラクティブに表示できるので、非常に人気があります。
3. 事前準備
まず、Streamlitが使えるように準備しましょう。
Pythonのインストール
Pythonがインストールされていない方は、公式サイトからインストールしてください。
Streamlitのインストール
ターミナル(MacやLinux)やコマンドプロンプト(Windows)で以下のコマンドを実行します。
pip install streamlitインストールが完了したら、準備OKです!
4. 今回作るアプリの概要
今回作成するアプリは以下のような流れで動作します。
- ユーザーがCSVファイルをアップロードする
- アップロードされたファイルをPandasで読み込む
- データを表形式(データフレーム)で画面に表示する
とてもシンプルな構成なので、初心者でも安心して取り組めます。
5. ステップバイステップで実装!
ここからは、実際のコードを見ながら、一つずつ丁寧に解説していきます。
Step 1:必要なライブラリのインポート
import streamlit as st
import pandas as pdstreamlit:今回のメインライブラリpandas:CSVファイルを読み込んで表形式にするためのライブラリです
Step 2:タイトルの表示
st.title("CSVファイルの表示アプリ")Streamlitでは、st.title()を使ってタイトルを表示できます。画面の一番上に大きな見出しが表示されます。
Step 3:ファイルアップロードの実装
uploaded_file = st.file_uploader("CSVファイルをアップロードしてください", type="csv")st.file_uploader()を使うことで、ユーザーがファイルを選んでアップロードできるようになります。type="csv"とすることで、CSVファイルだけを選べるようにしています。
Step 4:CSVを読み込んでDataFrameとして表示
if uploaded_file is not None:
df = pd.read_csv(uploaded_file)
st.dataframe(df)if uploaded_file is not None:は、「ファイルがアップロードされたかどうか」をチェックしています。pd.read_csv(uploaded_file)でファイルの中身をPandasのデータフレームとして読み込みます。st.dataframe(df)で、そのデータをインタラクティブな表として画面に表示します。
6. フルコード(まとめ)
ここまでのコードをすべてまとめると、以下のようになります。
import streamlit as st
import pandas as pd
st.title("CSVファイルの表示アプリ")
uploaded_file = st.file_uploader("CSVファイルをアップロードしてください", type="csv")
if uploaded_file is not None:
df = pd.read_csv(uploaded_file)
st.dataframe(df)7. アプリの実行方法
このアプリを実行するには、上記のコードを csv_app.py などの名前で保存し、ターミナルで以下のコマンドを実行します。
streamlit run csv_app.py実行すると、Webブラウザが開き、アプリが表示されます。あとはCSVファイルをアップロードするだけです!
8. よくあるエラーと対処法
🔸 CSVの文字化けが起きる場合
日本語が含まれるCSVファイルでは、エンコーディングが原因で文字化けすることがあります。
その場合は、以下のように encoding を指定しましょう。
df = pd.read_csv(uploaded_file, encoding="utf-8-sig")🔸 ヘッダーがないCSVを読み込む場合
もしCSVファイルにヘッダー行(列名)がない場合は、以下のように指定できます。
df = pd.read_csv(uploaded_file, header=None)9. まとめ
今回は、Streamlitを使ってCSVファイルを読み込み、データフレームとして表示するシンプルなアプリを作成しました。
Streamlitを使えば、たった数行のPythonコードで、CSVデータをWeb上で簡単に表示できます。
このアプリを応用すれば、次のようなこともできます:
- 特定の列でデータをフィルタリング
- グラフ表示
- 集計や統計の表示
ぜひ、いろいろと試してみてください!
10. 参考リンク
最後に書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。Poetryについても詳しく説明されています。ぜひ手に取ってみてください。
最後まで読んでいただきありがとうございます。

