Ръководство стъпка по стъпка за изграждане на приложение за наука за данни в Python

Streamlit е рамка с отворен код, която позволява на специалистите по данни да превръщат скриптове на Python в споделяеми уеб приложения за минути

Тази статия очертава прост пример за това как да създадете интерактивно табло, подобно на показаното по-горе, с помощта на Streamlit. Streamlit се интегрира много добре с библиотеката с графики Plotly и затова опитът с използването на това е бонус и прави прехода към Streamlit много безпроблемен.

Заглавие и използване на изображения

В този раздел разглеждаме кода, свързан с вмъкването на заглавие и изображение на приложението Streamlit. За да направим това, трябва да използваме функцията колони st.columns(), която ни позволява да вмъкваме контейнери, разположени като колони една до друга. В тези колони използваме st.image() и st.title(), за да вмъкнем желаното съдържание . Има много други опции за вмъкване на различни стилове на текст.

Вмъкване на диаграма и филтриране на данни въз основа на въведени от потребителя данни

Най-лесният начин да вмъкнете интерактивни диаграми в Streamlit е да използвате Plotly, която е библиотека за визуализация на данни в Python (и други езици също). Когато диаграма е създадена в Plotly, е изключително лесно след това да се покаже в Streamlit с помощта на st.plotly_chart().

В този пример ще използваме набора от данни за очакваната продължителност на живота спрямо БВП, вграден в Plotly, тъй като има редица променливи, които добре демонстрират функционалността на Streamlit.

От тези данни можем да създадем много хубав график с помощта на Plotly, но искаме да използваме Streamlit, за да позволим на потребителя да промени начина, по който се показват данните. В частност:

  • Използвайте st.slider(), за да позволите на потребителя да избере коя година от данните да се покаже

  • Използвайте st.selectbox(), за да позволите на потребителя да избере кой континент да покаже

  • Използвайте st.checkbox(), за да позволите на потребителя да избере дали да регистрира оста x

Филтриране на данни

За да филтрирате данни, нека първо включим плъзгача, квадратчето за избор и квадратчето за отметка, както е показано по-горе. Отново ще използваме st.columns(), за да накараме елементите да се показват един до друг, а не вертикално, което е по подразбиране в Streamlit.

Тук имайте предвид, че за разлика от st.image() и st.title(), виждани по-рано, st.slider(), st.selectbox() и st.checkbox() всички връщани стойности въз основа на въведеното от потребителя, които трябва да бъдат присвоени на променливи, както се вижда в кода по-горе.

И така, с целия код до този момент, нашето табло за управление сега ще изглежда като 👇

Така че следващата стъпка е да заредите данните, да вземете тези потребителски данни и да създадете графика.

Четене на данните и прилагане на филтри

След като прочетем данните, можем да приложим филтрите, дадени ни от потребителя.

Всеки път, когато потребителят актуализира един от входовете, приложението ще се обнови, за да отрази актуализацията. Повече за това как да оптимизирате това по-късно!

Изработване и показване на сюжет

За да създадем графика, можем да използваме Plotly по същия начин, както бихте направили в Jupyter Notebook, с изключение на това, че fig.show() вече не се използва за показване на изображението — вместо това ще използваме st.plotly_chart() за показване на диаграмата в таблото за управление.

Крайният продукт

В ~50 реда код имаме напълно функциониращо табло за управление 🎉

Пълният код може да се види в моя GitHub тук 👈

Изпълнение на вашето приложение Streamlit

След като написахме целия код за изграждане на прекрасно табло за управление, нека сега да разгледаме как да го внедрим. Най-лесният начин да разположите приложение Streamlit е на вашата локална машина.

За да направите това, просто отворете вашия команден ред (терминал и т.н.), отидете до директорията, където сте запазили вашия .py файл и изпълнете командата, показана по-долу (като замените в името на вашия файл my_file_name.py )

streamlit run my_file_name.py

Вашето приложение вече трябва да се отвори във вашия уеб браузър по подразбиране като напълно интерактивна страница, с която можете да си играете 🤸‍♀️

Някои допълнителни съвети

  • Използвайки тази команда в началото на нашия код, можем да накараме таблото да запълни цялата ширина на екрана. Понякога без това, ако гледате на широк дисплей, няма да използвате най-добре пространството.
st.set_page_config(layout="wide")
  • В Streamlit може да се окаже, че имате множество функции - някои от които не се влияят от определени потребителски входове. Разбира се, не е оптимално да се налага да стартирате отново функция, ако входовете не са се променили! @st.cache, както е показано по-долу, казва на Streamlit да провери дали входовете са се променили, преди да стартира отново тази конкретна функция, което може да ви спести много време. Документацията е достъпна тук.
@st.cache
def my_function(i1, i2, ...):
     x = ...
     return x

Ако получавате стойност от статии като тези и все още не сте член на Medium, помислете дали да не се регистрирате в media чрез връзката по-долу! 👇