blob: c8bd8b507899951c04572fd48cff89a436898002 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#!/usr/bin/python
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
# Streamlitアプリケーションのタイトル設定
st.title('CSVファイル比較チャート')
# アップロードボックスの作成
uploaded_files = st.file_uploader("ここにCSVファイルをドラッグ&ドロップ", type=['csv'], accept_multiple_files=True)
if uploaded_files:
# ファイルの最大数を10に制限
if len(uploaded_files) > 10:
st.error("最大10個のファイルをアップロードしてください。")
st.stop()
# アップロードされたファイルをリストとして処理
file_list = []
for file in uploaded_files:
df = pd.read_csv(file)
file_list.append(df)
st.write(f"アップロードされたファイルのカラム名: {df.columns.tolist()}")
date_column = 'DATE' # 日付カラムのデフォルト値
# 各DataFrameに対して日付カラムの存在を確認
for df in file_list:
if date_column not in df.columns: # 日付カラムが存在しない場合、エラーメッセージを表示
st.error(f"各CSVファイルには'{date_column}'という名前の日付カラムが必要です。カラム名: {df.columns.tolist()}")
st.stop()
df[date_column] = pd.to_datetime(df[date_column])
# プロットの作成
plt.figure(figsize=(12, 6))
# ファイルごとにプロットしたいカラムを選択
for i, df in enumerate(file_list):
col = st.selectbox(f'ファイル{i+1}のカラムを選択してください', [col for col in df.columns if col != date_column], key=f'col_select_{i}')
# データフレームごとにプロット
plt.plot(df[date_column], df[col], label=f'{col} (File {i+1})')
plt.xlabel(date_column)
plt.ylabel('Value')
plt.title('CSV to FRED')
plt.legend()
st.pyplot(plt.gcf())
else:
st.write("CSVファイルをアップロードしてください。")
|