Я пишу интерактивный код визуализации с использованием Python. Что я хотел бы сделать, так это создать интерактивную визуализацию, которая позволяет пользователю выбрать файл из раскрывающегося меню (или что-то в этом роде), а затем построить гистограмму выбранных данных.
Моя папка данных имеет следующую структуру:
+-- it_features
| +-- it_2017-01-20--2017-01-27.csv
| +-- it_2017-01-27--2017-02-03.csv
| +-- it_2017-02-03--2017-02-10.csv
и так далее (есть еще много файлов, я просто сообщаю некоторые из них для простоты).
Пока я могу получить доступ и получить все данные, содержащиеся в папке:
import os
import pandas as pd
path = os.getcwd()
file_folder = os.path.join(path,'it_features')
for csv_file in os.listdir(file_folder):
print(csv_file)
file = os.path.join(file_folder,csv_file)
df = pd.read_csv(file)
#following code....
Я хотел бы создать интерактивную визуализацию, которая позволяет пользователю выбирать имя файла (например, it_2017-02-03--2017-02-10.csv) и отображать данные этого файла.
Я могу выбрать вручную нужный файл и построить его данные, вставив его имя файла в переменную, а затем извлекая данные, но я не хотел бы вставлять его с помощью кода и позволить конечному пользователю просматривать и выбирать один из файлы с помощью выпадающего меню или чего-то подобного.
Мой простой код:
import os
import pandas as pd
path = os.getcwd()
file_folder = os.path.join(path,'it_features')
file = os.path.join(file_folder,'it_2020-02-07--2020-02-14.csv') # Here I insert my filename
df=pd.read_csv(file)
ax=df.value_counts(subset=['Artist']).head(10).plot(y='number of songs',kind='bar', figsize=(15, 7), title="7-14 February 2020")
ax.set_xlabel("Artist")
ax.set_ylabel("Number of Songs Top 200")
Что генерирует следующий сюжет:
Как я уже сказал, я хотел бы представить несколько раскрывающееся меню, которое позволяет пользователю выбирать данные csv, которые он хочет построить, используя интерактивный график.
Я видел, что с помощью Plotly можно создавать выпадающие меню, но в различных примерах (https://plotly.com/python/dropdowns/), похоже, он не выбирает, а затем загружает данные.
Я также видел этот код (Kaggle code), который, кажется, делает то, что Я хотел сделать: вы можете выбрать регион и построить данные из этого региона.
Основная проблема в том, что он просто создает большой уникальный фрейм данных со штатами США, а затем создает трассировку для каждого из них.
Что я хотел бы сделать (если возможно), так это выбрать имя файла из раскрывающегося списка, загрузить csv и затем построить его данные, не создавая единого гигантского фрейма данных со всеми моими файлами в нем.
Является ли это возможным?
EDIT: решение, предложенное gherka, работает отлично, но я хотел бы иметь решение внутри Plotly, используя его раскрывающееся меню.
jupyter
, то использованиеipywidgets
(как указано в ответе ниже) может быть хорошим выбором, но если вы хотите вернуться к python и IDE позже, вы также можете использоватьmessagebox
изtkinter
. - person Cool Cloud   schedule 26.08.2020