Python с каждым днем ​​расправляет крылья. Наука о данных, аналитика данных, прогнозный анализ, описательное моделирование и ассоциативное моделирование стали быстрыми, эффективными и действенными благодаря фреймворкам Python.

Python недавно выпустил фреймворк Streamlit. Это позволяет пользователям создавать приложения для обработки данных с наименьшим количеством строк кода за несколько часов. В этом сообщении блога мы рассмотрим простые 7 пунктов, чтобы создать веб-приложение, управляемое данными, все на Python. Итак, без лишних слов, приступим ...

7 шагов для создания веб-приложения на Python

  1. Убедитесь, что Python установлен на пути к вашей системе. Чтобы установить Streamlit из командной строки, используйте следующую команду:
pip install streamlit
#https://www.streamlit.io for more information and API documentation

2. Затем создайте файл с именем AmazonDataApp.py и начните писать код в этом файле приложения Python, как описано в следующих шагах.

3. Прежде всего, импортируйте библиотеки Python и дайте название приложению как:

#2. importing libraries
import streamlit as st
import pandas as pd
import numpy as np
import itertools as IT
import altair as alt
from PIL import Image

#3. Title of the web application
st.title("Interactive Data Driven Dashboard")

4. После импорта библиотек нам нужно загрузить данные в наше приложение, чтобы мы могли использовать эти данные позже. Я скачал набор данных из data.world, для загрузки данных мы напишем функцию:

#4. Load Data function
@st.cache
def load_data(nrows):
    data = pd.read_csv('path to data file/amazon-final.csv')
    data['date first available'] = pd.to_datetime(data['date first available'])
    data = data.sort_values(by=['date first available'])
    data = data.set_index(data['date first available'])
    data['discount percentage'] = (data['discount percentage'].str.replace("%",'')). astype(int) 
    lowercase = lambda x: str(x).lower()
    data.rename(lowercase, axis='columns', inplace=True)
    return data

# Loading data text...
data_load_state = st.text('Loading data...')
# Load 1000 rows of data
data = load_data(1000)
# Successfull data loaded
data_load_state.text("Done! (using st.cache)")

5. Здесь мы создадим кнопку-переключатель в виде флажка, чтобы отображать данные, если и когда это необходимо.

#5. show whole dataset
if st.checkbox('Show raw data'):
    st.subheader('Raw data')
    st.write(data)

6. Теперь мы создадим DataFrame, содержащий информацию о продавце и продукте, здесь мы пытаемся показать продукты, соответствующие продавцам. Сделаем это с помощью фильтра. Этот фильтр мы создадим с помощью опции множественный выбор. Этот код выполнит требуемую задачу:

#6. show seller and products based on the select filter 
sellers = data[['seller name', 'product name']]
options = st.multiselect("Select seller name to show corresponding sold products: ",sellers['seller name'].unique())
st.write(options)
show = sellers['seller name'].isin(options)
data_seller = sellers[show]
st.write(data_seller)

7. Наконец, мы покажем mrp, скидку% и цену продажи в виде столбчатой ​​диаграммы. Покажем значения по годам. Для этого создадим фильтр по годам с помощью виджета слайдер. Код для этого следующий:

#7. Show mrp, discount % and sale price based on the selected year filter in the bar graph

discounts = data[['mrp','discount percentage', 'sale price']]

year_to_filter = st.slider('date', 2014, 2020, 2017)  # min: 2015, max: 2020, default: 2017
filtered_data = discounts[data['date first available'].dt.year == year_to_filter]

st.bar_chart(filtered_data)

8. Таким образом, наше веб-приложение, управляемое данными, готово к работе. Чтобы запустить это приложение в веб-браузере, мы введем следующий фрагмент кода в командной строке:

streamline run AmazonDataApp.py

После выполнения указанной выше строки кода приложение будет доступно как на локальном хосте, так и в сети.

Поздравляю! Вы создали очень простое, но интерактивное веб-приложение за несколько минут.

В результате веб-приложение будет выглядеть так:

Вот общий исходный код:

Вы можете скачать его с моей GitHub gist.

Удачного кодирования :)