Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions day1/.env_template

This file was deleted.

204 changes: 107 additions & 97 deletions day1/01_streamlit_UI/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,19 @@
# ============================================
# ページ設定
# ============================================
# st.set_page_config(
# page_title="Streamlit デモ",
# layout="wide",
# initial_sidebar_state="expanded"
# )
st.set_page_config(
page_title="Streamlit デモ",
layout="wide",
initial_sidebar_state="expanded"
)

# ============================================
# ナビゲーションを追加
# ============================================
st.sidebar.selectbox(
"体験したい機能を選んでください",
["基本UI", "レイアウト", "グラフ表示", "ファイルアップロード"]
)

# ============================================
# タイトルと説明
Expand All @@ -36,149 +44,151 @@
st.write(f"こんにちは、{name}さん!")

# ボタン
# st.subheader("ボタン")
# if st.button("クリックしてください"):
# st.success("ボタンがクリックされました!")
st.subheader("ボタン")
if st.button("クリックしてください"):
st.success("ボタンがクリックされました!")

# チェックボックス
# st.subheader("チェックボックス")
# if st.checkbox("チェックを入れると追加コンテンツが表示されます"):
# st.info("これは隠れたコンテンツです!")
st.subheader("チェックボックス")
if st.checkbox("チェックを入れると追加コンテンツが表示されます"):
st.info("これは隠れたコンテンツです!")

# スライダー
# st.subheader("スライダー")
# age = st.slider("年齢", 0, 100, 25)
# st.write(f"あなたの年齢: {age}")
st.subheader("スライダー")
age = st.slider("年齢", 0, 100, 25)
st.write(f"あなたの年齢: {age}")

# セレクトボックス
# st.subheader("セレクトボックス")
# option = st.selectbox(
# "好きなプログラミング言語は?",
# ["Python", "JavaScript", "Java", "C++", "Go", "Rust"]
# )
# st.write(f"あなたは{option}を選びました")
st.subheader("セレクトボックス")
option = st.selectbox(
"好きなプログラミング言語は?",
["Python", "JavaScript", "Java", "C++", "Go", "Rust"]
)
st.write(f"あなたは{option}を選びました")

# ============================================
# レイアウト
# ============================================
# st.header("レイアウト")
st.header("レイアウト")

# カラム
# st.subheader("カラムレイアウト")
# col1, col2 = st.columns(2)
# with col1:
# st.write("これは左カラムです")
# st.number_input("数値を入力", value=10)
# with col2:
# st.write("これは右カラムです")
# st.metric("メトリクス", "42", "2%")
st.subheader("カラムレイアウト")
col1, col2 = st.columns(2)
with col1:
st.write("これは左カラムです")
st.number_input("数値を入力", value=10)
with col2:
st.write("これは右カラムです")
st.metric("メトリクス", "42", "2%")

# タブ
# st.subheader("タブ")
# tab1, tab2 = st.tabs(["第1タブ", "第2タブ"])
# with tab1:
# st.write("これは第1タブの内容です")
# with tab2:
# st.write("これは第2タブの内容です")
st.subheader("タブ")
tab1, tab2 = st.tabs(["第1タブ", "第2タブ"])
with tab1:
st.write("これは第1タブの内容です")
with tab2:
st.write("これは第2タブの内容です")

# エクスパンダー
# st.subheader("エクスパンダー")
# with st.expander("詳細を表示"):
# st.write("これはエクスパンダー内の隠れたコンテンツです")
# st.code("print('Hello, Streamlit!')")
st.subheader("エクスパンダー")
with st.expander("詳細を表示"):
st.write("これはエクスパンダー内の隠れたコンテンツです")
st.code("print('Hello, Streamlit!')")

# ============================================
# データ表示
# ============================================
# st.header("データの表示")

# サンプルデータフレームを作成
# df = pd.DataFrame({
# '名前': ['田中', '鈴木', '佐藤', '高橋', '伊藤'],
# '年齢': [25, 30, 22, 28, 33],
# '都市': ['東京', '大阪', '福岡', '札幌', '名古屋']
# })
df = pd.DataFrame({
'名前': ['田中', '鈴木', '佐藤', '高橋', '伊藤'],
'年齢': [25, 30, 22, 28, 33],
'都市': ['東京', '大阪', '福岡', '札幌', '名古屋']
})

# データフレーム表示
# st.subheader("データフレーム")
# st.dataframe(df, use_container_width=True)
st.subheader("データフレーム")
st.dataframe(df, use_container_width=True)

# テーブル表示
# st.subheader("テーブル")
# st.table(df)
st.subheader("テーブル")
st.table(df)

# メトリクス表示
# st.subheader("メトリクス")
# col1, col2, col3 = st.columns(3)
# col1.metric("温度", "23°C", "1.5°C")
# col2.metric("湿度", "45%", "-5%")
# col3.metric("気圧", "1013hPa", "0.1hPa")
st.subheader("メトリクス")
col1, col2, col3 = st.columns(3)
col1.metric("温度", "23°C", "1.5°C")
col2.metric("湿度", "45%", "-5%")
col3.metric("気圧", "1013hPa", "0.1hPa")

# ============================================
# グラフ表示
# ============================================
# st.header("グラフの表示")
st.header("グラフの表示")

# ラインチャート
# st.subheader("ラインチャート")
# chart_data = pd.DataFrame(
# np.random.randn(20, 3),
# columns=['A', 'B', 'C'])
# st.line_chart(chart_data)
st.subheader("ラインチャート")
chart_data = pd.DataFrame(
np.random.randn(20, 3),
columns=['A', 'B', 'C'])
st.line_chart(chart_data)

# バーチャート
# st.subheader("バーチャート")
# chart_data = pd.DataFrame({
# 'カテゴリ': ['A', 'B', 'C', 'D'],
# '値': [10, 25, 15, 30]
# }).set_index('カテゴリ')
# st.bar_chart(chart_data)
st.subheader("バーチャート")
chart_data = pd.DataFrame({
'カテゴリ': ['A', 'B', 'C', 'D'],
'値': [10, 25, 15, 30]
}).set_index('カテゴリ')
st.bar_chart(chart_data)

# ============================================
# インタラクティブ機能
# ============================================
# st.header("インタラクティブ機能")
st.header("インタラクティブ機能")

# プログレスバー
# st.subheader("プログレスバー")
# progress = st.progress(0)
# if st.button("進捗をシミュレート"):
# for i in range(101):
# time.sleep(0.01)
# progress.progress(i / 100)
# st.balloons()
st.subheader("プログレスバー")
progress = st.progress(0)
if st.button("進捗をシミュレート"):
for i in range(101):
time.sleep(0.01)
progress.progress(i / 100)
st.balloons()

# ファイルアップロード
# st.subheader("ファイルアップロード")
# uploaded_file = st.file_uploader("ファイルをアップロード", type=["csv", "txt"])
# if uploaded_file is not None:
# # ファイルのデータを表示
# bytes_data = uploaded_file.getvalue()
# st.write(f"ファイルサイズ: {len(bytes_data)} bytes")
#
# # CSVの場合はデータフレームとして読み込む
# if uploaded_file.name.endswith('.csv'):
# df = pd.read_csv(uploaded_file)
# st.write("CSVデータのプレビュー:")
# st.dataframe(df.head())
st.subheader("ファイルアップロード")
uploaded_file = st.file_uploader("ファイルをアップロード", type=["csv", "txt"])
if uploaded_file is not None:
# ファイルのデータを表示
bytes_data = uploaded_file.getvalue()
st.write(f"ファイルサイズ: {len(bytes_data)} bytes")

# CSVの場合はデータフレームとして読み込む
if uploaded_file.name.endswith('.csv'):
df = pd.read_csv(uploaded_file)
st.write("CSVデータのプレビュー:")
st.dataframe(df.head())

# ============================================
# カスタマイズ
# ============================================
# st.header("スタイルのカスタマイズ")
st.header("スタイルのカスタマイズ")

# カスタムCSS
# st.markdown("""
# <style>
# .big-font {
# font-size:20px !important;
# font-weight: bold;
# color: #0066cc;
# }
# </style>
# """, unsafe_allow_html=True)
#
# st.markdown('<p class="big-font">これはカスタムCSSでスタイリングされたテキストです!</p>', unsafe_allow_html=True)
st.markdown("""
<style>
.big-font {
font-size:20px !important;
font-weight: bold;
color: #0066cc;
background-color: #f0f2f6;
}
</style>
""", unsafe_allow_html=True)
#背景色の変更

st.markdown('<p class="big-font">これはカスタムCSSでスタイリングされたテキストです!</p>', unsafe_allow_html=True)

# ============================================
# デモの使用方法
Expand Down
78 changes: 78 additions & 0 deletions day1/01_streamlit_UI/app_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import streamlit as st
import pandas as pd
import numpy as np
import time

# ページ設定
st.set_page_config(
page_title="Streamlit デモ",
layout="wide",
initial_sidebar_state="expanded"
)

# サイドバーでページ選択
page = st.sidebar.selectbox(
"体験したい機能を選んでください",
["基本UI", "レイアウト", "グラフ表示", "ファイルアップロード"]
)

# メインコンテンツ切り替え
if page == "基本UI":
st.title("基本的なUI要素")

name = st.text_input("あなたの名前", "ゲスト")
st.write(f"こんにちは、{name}さん!")

if st.button("クリックしてください"):
st.success("ボタンがクリックされました!")

if st.checkbox("チェックを入れると追加コンテンツが表示されます"):
st.info("これは隠れたコンテンツです!")

age = st.slider("年齢", 0, 100, 25)
st.write(f"あなたの年齢: {age}")

option = st.selectbox("好きな言語は?", ["Python", "JavaScript", "C++"])
st.write(f"あなたは {option} を選びました")

elif page == "レイアウト":
st.title("レイアウトのデモ")

col1, col2 = st.columns(2)
with col1:
st.write("これは左カラムです")
st.number_input("数値を入力", value=10)
with col2:
st.write("これは右カラムです")
st.metric("メトリクス", "42", "2%")

tab1, tab2 = st.tabs(["第1タブ", "第2タブ"])
with tab1:
st.write("これは第1タブの内容です")
with tab2:
st.write("これは第2タブの内容です")

elif page == "グラフ表示":
st.title("グラフの表示")

chart_data = pd.DataFrame(np.random.randn(20, 3), columns=['A', 'B', 'C'])
st.line_chart(chart_data)

bar_data = pd.DataFrame({
'カテゴリ': ['A', 'B', 'C', 'D'],
'値': [10, 25, 15, 30]
}).set_index('カテゴリ')
st.bar_chart(bar_data)

elif page == "ファイルアップロード":
st.title("ファイルアップロード")

uploaded_file = st.file_uploader("CSVまたはTXTファイルをアップロード", type=["csv", "txt"])
if uploaded_file is not None:
st.write(f"ファイルサイズ: {len(uploaded_file.getvalue())} bytes")

if uploaded_file.name.endswith('.csv'):
df = pd.read_csv(uploaded_file)
st.write("CSVデータのプレビュー:")
st.dataframe(df)

26 changes: 26 additions & 0 deletions day1/01_streamlit_UI/day5/演習2/.github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Run tests for Day5

on:
pull_request:
branches: [main, master, develop]

jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.11'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install scikit-learn pytest

- name: Run test
run: |
pytest day5/演習2/test_main.py -s
1 change: 1 addition & 0 deletions day1/02_streamlit_app/lecture-ai-engineering
Submodule lecture-ai-engineering added at 918e61