Если вам когда-нибудь приходилось собирать данные о своих пользователях, вы знаете, насколько это сложно. Так почему бы не попытаться создать свой собственный набор данных?
В этой статье я опишу простой процесс сбора пользовательских данных, который можно реализовать менее чем за час. Это позволит вам легко собирать и хранить пользовательские данные.
Сначала мы будем использовать Streamlit, чтобы создать веб-страницу для размещения пользовательского интерфейса сбора данных, а затем — Google Sheets API вместе с одним классным пакетом Python для хранения введенных пользователями данных.
Итак, начнем 👇
Шаг 1-й: создание пользовательского интерфейса
Streamlit — это отличный инструмент Python, позволяющий легко создавать интерактивные, достойные с эстетической точки зрения веб-приложения. Вы можете установить его с помощью одной строки:
pip install streamlit
После этого приступайте к созданию скрипта для включения текстовых и других виджетов сбора данных на своей веб-странице.
Создав новый файл app.py
, начните с включения в него заголовка для страницы, указав в скобках: “Мой проект по сбору полезных данных”:
st.title(‘My Wholesome Data Capture Project’)
Затем включите описание того, что вы хотели бы узнать от своих пользователей, указав в скобках: “Мое приложение будет собирать от вас данные о…”:
st.write("My app wants to collect data from you about...")
Теперь можете начать собирать пользовательские данные с помощью простых виджетов, например:
st.subheader('Add a new item')
name = st.text_input('Enter the item name') # для сбора текстового ввода
Вам будет предоставлено на выбор множество виджетов, таких как поля выбора, текстовая область, слайдеры, средство выбора файла и др.
После создания виджетов, запустите сервер streamlit:
streamlit run app.py
Теперь вы получите возможность увидеть результат в браузере, перейдя на localhost:8000
!
Шаг 2-й: подключение API Google Sheets к приложению
Подключить Google Sheets к приложению для сбора данных можно в два этапа.
- Запуск API в консоли облачного сервиса Google: перейдите по этой ссылке и запустите API Google Sheets.
Должно появиться следующее окно:
2. Создание JSON-ключа для сервисного аккаунта:
- нажмите на кнопку “Enable” (“Включить”). Если вы еще не создали новый проект в консоли облака Google, сделайте это сейчас;
- нажмите на “Credentials” (“Учетные данные”) и затем на “Create an API Key” (“Создать API-ключ”);
- нажмите “Manage service accounts” (“Управление сервисными аккаунтами”) над “Service Accounts” (“Сервисные аккаунты”);
- нажмите на кнопку ⋮ возле недавно созданного сервисного аккаунта и выберите “Manage keys” (“Управление ключами”), а затем нажмите “ADD KEY” (“Добавить ключ”) → “Create new key” (“Создать новый ключ”);
- выберите тип ключа JSON и нажмите “Create” (“Создать”).
Теперь вы получите json-документ для загрузки, который будет содержать все учетные данные вашего аккаунта для подключения приложения Streamlit Python к Google Sheets API.
Сохраните его пока в папке проекта.
Шаг 3-й: установка gspread
Эта классная библиотека python позволяет легче интегрировать Google Sheets в приложения Python. Установить ее просто:
pip install gspread
Откройте новую таблицу Google Sheet в браузере и включите “Link sharing” (“Доступ по ссылке”). Это важно, так как позволит Google Sheet API записывать данные в таблицу.
Теперь можно связать вашу электронную таблицу с приложением streamlit.
В app.py напишите новую функцию под названием save_into_csv
:
import gspread
def save_into_csv(name, author, link, pair, summ):
gc = gspread.service_account(filename='credentials.json')
sh = gc.open_by_url('your google sheet url')
worksheet = sh.get_worksheet(0)
Убедитесь в том, что ваш credentials.json из Sheets API находится в том же каталоге, что и ваш файл app.py.
После этого можете приступить к записи введенных пользователями данных в вашу электронную таблицу:
worksheet.append_row([your user input items])
Не забудьте установить заголовки столбцов в электронной таблице перед использованием приложения! Тогда все полученные пользовательские данные будут сохранены в соответствующих столбцах под определенными заголовками.
В качестве бонуса, вероятно, будет полезно уведомить пользователя о получении предоставленной им информации. Можете просто напечатать сообщение с помощью Streamlit, например:
st.write('Submitted to database!')
Заключение
Теперь у вас будет возможность собирать пользовательские данные, чтобы создать собственный набор данных!
Надеюсь, это руководство было полезным и позволит вам углубиться в некоторые нюансы API Sheets, а также библиотеки gspread.
Читайте также:
- Нет жесткому кодированию конфиденциальных данных в приложениях Python!
- Streamlit для создания интерактивных веб-приложений: начало
- Создаем бота клиентской службы с помощью Python, Flask и Pinecone
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Yash Prakash, The Quick Guide To Making Your Own Dataset With Python