Позвольте мне предварить это, сказав, что это просто еще одно упражнение по визуализации данных. Это неудивительно, но мне явно нужно сократить использование интернета!

Несколько недель назад я наткнулся на статью Картика Годавата, в которой он анализировал историю посещений Интернета. Имея немного свободного времени на выходных, я подумал, что это будет забавное упражнение. Мне, как самопровозглашенному хакеру по продуктивности, было любопытно, как я провожу время в сети. В частности, я попытался ответить на следующие вопросы:

1. Как часто я просматривал страницы?

2. Когда я просматривал страницы?

3. Что я искал?

Начиная

Инструменты: этот анализ был выполнен в Jupyter notebook с использованием фрейма данных Pandas. Визуализации выполнялись с помощью matplotlib, seaborn и wordcloud.

1. Получение данных

Все мы знаем, что Google хранит наши данные; однако я не знал, что могу восстановить свою историю! Google Takeout - отличный инструмент, который позволяет загружать ваши данные из любых продуктов Google. Для этого анализа я извлекал и использовал только свои данные История браузера Chrome, которые экспортируются как файл JSON.

2. Понимание данных

Файл JSON выводит следующие данные: client_id, favicon_url, page_transition, time_usec, title, url.

Я проигнорировал client_id и favicon_url, поскольку они не дают достоверной информации об использовании браузера.

page_transition указывает, как пользователь попал на страницу. Например, LINK - это когда пользователь перешел на страницу, щелкнув ссылку на другой странице, тогда как TYPED - когда пользователь получил страницу, набрав URL-адрес в строке URL-адреса. Я сосредоточился на четырех типах page_transition: LINK, TYPED, AUTO_BOOKMARK, GENERATED.

time_usec форматируется как 16-значное время Unix (UTC). Мне пришлось преобразовать его в четкую метку даты и настроить часовой пояс на PST.

df['time_usec2']= pd.to_datetime(df['time_usec'],unit='us',utc=True)
df['PST_time'] = df['time_usec2'].dt.tz_convert('America/Vancouver')
df['month'] = df['PST_time'].dt.month
df['hour'] = df['PST_time'].dt.hour
df['day_of_week'] = df['PST_time'].dt.weekday_name
df['weekday'] = df['PST_time'] \
                    .apply(lambda x: "Y" if x.weekday()<5 else "N")

3. Анализ данных

Последний шаг, который я сделал, - это проанализировать url, чтобы получить информацию о веб-сайте (например, имя домена и категорию). Для получения доменного имени я воспользовался помощью tldextract. Что касается категорий, я сгруппировал известные домены в похожие наборы.

# Parse URL to get domain information
def get_domain(x):
    if x.startswith('chrome-extension://'):
        return "chrome_extension"
    domain = tldextract.extract(x)[1]
    sub_domain = tldextract.extract(x)[0]
    if domain == "google":
        if sub_domain=="www":
            return "google_search"
        else:
            return sub_domain + "." + domain
    return domain
df['domain'] = df['url'].apply(get_domain)

Категории веб-сайтов: кодирование, электронная почта, финансы, развлечения, работа, новости, другое, производительность, поиск, покупки, социальные сети, вкладки, видео, работа.

А теперь самое интересное: визуализация данных.

После очистки и форматирования данных я наконец могу приступить к построению графиков.

1. Ежедневный просмотр

Простое отображение количества веб-сайтов, которые я посещал ежедневно, на самом деле ничего не дает. Отфильтровав категорию search, тоже ничего не видно.

Когда я накладываю соотношение количества поисковых запросов и кликов поверх существующей диаграммы, я вижу соотношение между количеством сделанных мной кликов, связанных с поиском, и общим количеством кликов. Хотя на основании одного только графика нельзя сделать ничего убедительного, в среднем на каждые 10 веб-кликов я выполнял 2 веб-поиска.

2. Просмотр в выходные или в будние дни

Поскольку ежедневные данные не были слишком информативными, я изучил другие группы дат, начав со сравнения данных по выходным и будним дням. Понятно, что у меня есть распорядок дня - работаю с 9 до 6, обедаю с 7 до 9, просматриваю интернет до полуночи, сплю и повторяю. И наоборот, по выходным, похоже, меньше тренда.

3. Просмотр по месяцам

Затем я ежемесячно проверял свое использование. Опять же, похоже, что у меня есть два периода интенсивного использования: с 11 до 15 и с 22 до полуночи. Самым интересным в этом сюжете является то, что с июня по сентябрь я почти не проводил время в Интернете. Это имеет смысл, поскольку я путешествовал большую часть июня, а в летние месяцы я играю в соревновательный Ultimate Frisbee (иногда до 4 дней в неделю). Теперь мне нужно выяснить, как быть более активным круглый год!

Когда я смотрел на разделение по категориям, я заметил несколько вещей. 1) С января по март прошел курс coding. 2) job поиск в феврале и марте привел к work в апреле. 3) productivity и work веб-сайты напрямую связаны. 4) Онлайн shopping происходит в преддверии Рождества.

4. Просмотр по дням недели

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

5. Облака слов

Наконец, я создал облака слов: одно в заголовке search веб-страниц, а другое - в веб-доменах.

Давай кофе и код.

Привет, Google, ты завладел моей жизнью.

Резюме

В наши дни трудно не перейти на Google за всем. Я, конечно, знаю. Фактически, 41% всех моих веб-кликов связаны с Google, от Gmail до Google Docs и Google Search. Поскольку извлеченные данные не содержали информации о сеансе (т. Е. Сколько времени я провел на каждой веб-странице), я не мог проанализировать, сколько времени я провел в Интернете, но, вероятно, лучше не узнать.

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

Спасибо за чтение!