f64 commited on
Commit
48db71d
·
1 Parent(s): 79d4f04
pages/3_Загрузка CSV.py CHANGED
@@ -25,48 +25,51 @@ def save_dataframe_dialog_start(new_filename, dfToSave):
25
  if d_cols[0].button("Закрыть"):
26
  st_rerun()
27
 
28
- col1, col2 = st.columns(2)
29
-
30
- #uploaded_file = col1.file_uploader("“откройте CSV для загрузки”", ["csv","zip"]) # или CSV.ZIP
31
- uploaded_file = col1.file_uploader("“откройте CSV для загрузки”", ["csv"])
32
- df = None
33
- if uploaded_file is not None:
34
- col2.write(uploaded_file)
35
- col2.write(type(uploaded_file))
36
- delim = ";"
37
- enc = "utf-8"
38
- if uploaded_file.type == "text/csv":
39
- if True:
40
- bytes_uploaded = uploaded_file.read(4*1024)
41
- uploaded_file.seek(0) # встать на начало
42
- cpage = json.detect_encoding(bytes_uploaded) # import charset_normalizer # https://charset-normalizer.readthedocs.io/en/latest/user/getstarted.html#basic-usage
43
- dialect = csv.Sniffer().sniff(bytes_uploaded.decode(cpage, errors="replace"))
44
- uploaded_file.seek(0) # встать на начало
45
- col2.write(f"{enc=} found {cpage=} \t.\t.\t.\t {delim=} found {dialect.delimiter=}")
46
- delim = dialect.delimiter
47
- try: df = pd.read_csv(uploaded_file, sep=delim, encoding=enc, header="infer")
48
- except Exception as ex: col2.write(ex)
49
- else:
50
- if uploaded_file.type == "application/x-zip-compressed":
51
- try: df = pd.read_csv(uploaded_file, sep=delim, encoding=enc, compression="zip")
52
  except Exception as ex: col2.write(ex)
53
  else:
54
- col2.write(uploaded_file.type)
55
-
56
- if not df is None:
57
- df.style.format(precision=3, thousands=" ", decimal=".")
58
- col1.dataframe(df) #, column_config=)
59
- colnames = "".join(df.columns)
60
- if colnames.lower().startswith("xyz"):
61
- colcounts = "_".join(map(str,sorted(set(df.notna().sum()), reverse=True)))
62
- fileXYZ = f"{colnames}_{colcounts}.CSV"
63
- if col1.button(f"можно сохранить на сервер файл '{fileXYZ}'"): # .to_excel(fileXlsName)
64
- save_dataframe_dialog_start(fileXYZ, df)
65
- col2.write(df.describe())
66
- dfinfo = my_stm.pandas_info(df)
67
- col2.write(dfinfo)
68
-
69
- #col1.write(df.aggregate(["mean","median","prod","sum","std","var"]))
 
 
 
 
70
 
71
 
72
 
 
25
  if d_cols[0].button("Закрыть"):
26
  st_rerun()
27
 
28
+ tab1,tab2 = st.tabs(["💾 Загрузка локального файла на сервер", "🧊 Просмотр загруженных файлов"])
29
+
30
+ with tab1:
31
+ col1, col2 = st.columns(2)
32
+
33
+ #uploaded_file = col1.file_uploader("“откройте CSV для загрузки”", ["csv","zip"]) # или CSV.ZIP
34
+ uploaded_file = col1.file_uploader("“откройте CSV для загрузки”", ["csv"])
35
+ df = None
36
+ if uploaded_file is not None:
37
+ col2.popover(type(uploaded_file).__name__).write(type(uploaded_file))
38
+ col2.write(uploaded_file)
39
+ delim = ";"
40
+ enc = "utf-8"
41
+ if uploaded_file.type == "text/csv":
42
+ if True:
43
+ bytes_uploaded = uploaded_file.read(4*1024)
44
+ uploaded_file.seek(0) # встать на начало
45
+ cpage = json.detect_encoding(bytes_uploaded) # import charset_normalizer # https://charset-normalizer.readthedocs.io/en/latest/user/getstarted.html#basic-usage
46
+ dialect = csv.Sniffer().sniff(bytes_uploaded.decode(cpage, errors="replace"))
47
+ uploaded_file.seek(0) # встать на начало
48
+ col2.write(f"{enc=} found {cpage=} \t.\t.\t.\t {delim=} found {dialect.delimiter=}")
49
+ delim = dialect.delimiter
50
+ try: df = pd.read_csv(uploaded_file, sep=delim, encoding=enc, header="infer")
 
51
  except Exception as ex: col2.write(ex)
52
  else:
53
+ if uploaded_file.type == "application/x-zip-compressed":
54
+ try: df = pd.read_csv(uploaded_file, sep=delim, encoding=enc, compression="zip")
55
+ except Exception as ex: col2.write(ex)
56
+ else:
57
+ col2.write(uploaded_file.type)
58
+
59
+ if not df is None:
60
+ df.style.format(precision=3, thousands=" ", decimal=".")
61
+ col1.dataframe(df) #, column_config=)
62
+ colnames = "".join(df.columns)
63
+ if colnames.lower().startswith("xyz"):
64
+ colcounts = "_".join(map(str,sorted(set(df.notna().sum()), reverse=True)))
65
+ fileXYZ = f"{colnames}_{colcounts}.CSV"
66
+ if col1.button(f"можно сохранить на сервер файл '{fileXYZ}'"): # .to_excel(fileXlsName)
67
+ save_dataframe_dialog_start(fileXYZ, df)
68
+ col2.write(df.describe())
69
+ dfinfo = my_stm.pandas_info(df)
70
+ col2.write(dfinfo)
71
+
72
+ #col1.write(df.aggregate(["mean","median","prod","sum","std","var"]))
73
 
74
 
75
 
pages/6_TECT_7_ID.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os, re, sys, time, math, shutil, urllib, string, random, pickle, zipfile, datetime
2
+ import streamlit as st, pandas as pd, numpy as np
3
+ import my_static_methods as my_stm
4
+
5
+ st.html(my_stm.STYLE_CORRECTION)
6
+ st.sidebar.markdown("🧊 проверка по пакетам XYZ")
7
+
8
+ def ReRun():
9
+ st.rerun()
10
+
11
+ def DescriptionMarkdown() -> str:
12
+ return """
13
+ ## Описание
14
+ # 1) Загрузка нового файла
15
+ Источником данных является файл CSV
16
+ """
17
+
18
+ def save_dataframe_nodialog_idxyz(new_filename, dfToSave):
19
+ commit_info = my_stm.save_dataframe_to_hf(REPO, dfToSave, new_filename, "ID_XYZ")
20
+ st.toast(commit_info, icon='😍')
21
+ ReRun()
22
+
23
+
24
+ REPO = my_stm.HfRepo("f64k/gaziev", "dataset", st.secrets["HF_WRITE"])
25
+ lstRepoFiles = my_stm.list_files_hf(REPO)
26
+ lstTestFilesIdXyz = [f.upper().replace("ID_XYZ/","") for f in lstRepoFiles if f.upper().startswith("ID_XYZ/")]
27
+
28
+ col1, col2 = st.columns([1,1])
29
+ with col1.container():
30
+ cont_cols = st.columns([1,2])
31
+ cont_cols[0].popover("?").markdown(DescriptionMarkdown())
32
+ with cont_cols[1].popover("добавить новый файл"):
33
+ uploaded_file = st.file_uploader("“откройте CSV для загрузки”", ["csv"])
34
+ if uploaded_file is not None:
35
+ dfLoaded = None
36
+ delim = ";"
37
+ enc = "utf-8"
38
+ if uploaded_file.type == "text/csv":
39
+ try: dfLoaded = pd.read_csv(uploaded_file, sep=delim, encoding=enc)
40
+ except Exception as ex: st.write(ex)
41
+ else:
42
+ if uploaded_file.type == "application/x-zip-compressed":
43
+ try: dfLoaded = pd.read_csv(uploaded_file, sep=delim, encoding=enc, compression="zip")
44
+ except Exception as ex: st.write(ex)
45
+ else:
46
+ st.error(uploaded_file.type)
47
+ # dataframe ready. try to upload to HF
48
+ if not dfLoaded is None:
49
+ dfToUpload = dfLoaded.query("ID!='ID'")
50
+ #col2.dataframe(df)
51
+ colnames = "".join(dfToUpload.columns)
52
+ if colnames.lower().startswith("idxyz"):
53
+ dgID = dfToUpload.groupby("ID")
54
+ dictGroupID = dict(list(dgID))
55
+ lstGroupIDs = list(dictGroupID.keys())
56
+ #col2.write(dictGroupID)
57
+ lst_len = list(set(dgID.apply(len)))
58
+ if len(lst_len) == 1:
59
+ fileXYZ = f"{colnames}_{len(dictGroupID)}_{lst_len[0]}_{lstGroupIDs[0]}_{lstGroupIDs[-1]}.csv".upper()
60
+ if fileXYZ in lstTestFilesIdXyz:
61
+ if st.button(f"такой файл есть! перезаписать файл '{fileXYZ}'?"):
62
+ save_dataframe_nodialog_idxyz(fileXYZ, dfToUpload)
63
+ else:
64
+ save_dataframe_nodialog_idxyz(fileXYZ, dfToUpload)
65
+ else:
66
+ st.error(f"Разные размеры пакетов для разных ID, варианты : {lst_len}")
67
+ # список уже имеющихся файлов
68
+ st.write(lstTestFilesIdXyz)
69
+ #with col1.container():
70
+
71
+
pages/9_Таблица_результатов.py CHANGED
@@ -3,10 +3,12 @@ import my_static_methods as my_stm
3
  st.markdown(my_stm.STYLE_CORRECTION, unsafe_allow_html=True)
4
 
5
  st.sidebar.markdown("### просто таблица случайных чисел - пока заглушка ❄️")
6
- pop = st.sidebar.popover("Open popover")
 
7
  pop.dataframe(my_stm.df_random_dataframe())
8
 
9
- expand = st.expander("My label", icon=":material/info:")
10
  expand.write("Inside the expander.")
 
11
  pop = st.popover("Button label")
12
  pop.checkbox("Show all")
 
3
  st.markdown(my_stm.STYLE_CORRECTION, unsafe_allow_html=True)
4
 
5
  st.sidebar.markdown("### просто таблица случайных чисел - пока заглушка ❄️")
6
+
7
+ pop = st.popover("Open popover")
8
  pop.dataframe(my_stm.df_random_dataframe())
9
 
10
+ expand = st.sidebar.expander("My label", icon=":material/info:")
11
  expand.write("Inside the expander.")
12
+
13
  pop = st.popover("Button label")
14
  pop.checkbox("Show all")