summaryrefslogtreecommitdiff
path: root/hikakucsv.py
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ファイルをアップロードしてください。")