Если вам когда-нибудь приходилось собирать данные о своих пользователях, вы знаете, насколько это сложно. Так почему бы не попытаться создать свой собственный набор данных?

В этой статье я опишу простой процесс сбора пользовательских данных, который можно реализовать менее чем за час. Это позволит вам легко собирать и хранить пользовательские данные.

Сначала мы будем использовать 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 к приложению для сбора данных можно в два этапа.

  1. Запуск API в консоли облачного сервиса Google: перейдите по этой ссылке и запустите API Google Sheets.

Должно появиться следующее окно:

Запуск 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-ключа для сервисного аккаунта

Теперь вы получите 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.

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Yash Prakash, The Quick Guide To Making Your Own Dataset With Python

Предыдущая статья8 показателей эффективности классификации
Следующая статьяСтруктуры данных: основы алгоритмов