Позвольте мне предварить это, сказав, что это просто еще одно упражнение по визуализации данных. Это неудивительно, но мне явно нужно сократить использование интернета!
Несколько недель назад я наткнулся на статью Картика Годавата, в которой он анализировал историю посещений Интернета. Имея немного свободного времени на выходных, я подумал, что это будет забавное упражнение. Мне, как самопровозглашенному хакеру по продуктивности, было любопытно, как я провожу время в сети. В частности, я попытался ответить на следующие вопросы:
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
результаты.
Спасибо за чтение!