Я полагаю, что если вы находитесь в длительных отношениях, вы в какой-то момент задавались вопросом, какова ваша общая частота сексуальных отношений с вашим партнером. Это падает? Это повышение? Сколько раз вы занимались любовью в прошлом году по сравнению с текущим годом? Здоровы ли мои отношения?

В этой статье я поделюсь тем, как я проанализировал свои сексуальные отношения с моим 4-летним партнером с помощью Python.

Введение

В этот самый момент я нахожусь в потрясающих и стабильных отношениях, которые длились 4 года, и с тех пор, как мы впервые переспали вместе, я записываю их с помощью Календаря Google, поначалу без какой-либо цели. К тому моменту я еще ничего не знал о Python, так как начал изучать его только в декабре 2019 года. Узнав, что такое API, как я могу взаимодействовать с ними с помощью Python и что Календарь Google имеет собственный бесплатный API, Я понял, что могу применить полученные знания в новом проекте.

Материалы и методы

Я разделил этот раздел еще на два подраздела, чтобы сделать его более понятным: в первом я объясню, как я записал наши разговоры в Google Calendar так, чтобы их можно было потом проанализировать; а во втором разделе я рассмотрю часть технической части, то есть код, который сделал возможным этот анализ.

Запись разговоров в Google Calendar

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

Поскольку мы с моей девушкой никогда не жили вместе, каждый раз, когда мы проводили какое-то время в уединенном месте (мой дом, ее дом или даже палатка во время каких-то университетских поездок), я создавал событие в Календаре Google по шаблону. Всю важную информацию по каждому событию можно получить, прочитав его заголовок, который можно разделить на 3 или 4 части, в зависимости от того, кто на чье место пришел, но это я объясню позже.

Если у нас был секс, название события должно содержать ее псевдоним, а если нет, название события должно содержать второй другой псевдоним для нее. Местоположение также всегда является частью заголовка и должно состоять из одного слова. Последняя часть — это число, представляющее счетчик для этого конкретного местоположения. Также важно сказать, что все события должны иметь красный помидорный цвет.

Возьмите это событие в качестве примера:

  • Первое слово - это вторая версия ее ника (что означает, что у нас не было секса)
  • Второе слово говорит нам, что это место было у меня дома.
  • Число представляет собой счетчик для этого места, поэтому это означает, что это 10-е событие в моем доме.

Поскольку слово «дом» может означать мой дом или ее дом, я добавляю приставку к слову «я», чтобы прямо сказать, что я пошел к ней домой, а не наоборот. Иногда я также добавлял приблизительное время начала и окончания каждого события, но я не всегда так делал.

Глядя в код

В этом проекте я использовал Python с некоторыми библиотеками, такими как pandas для анализа данных и matplotlib для визуализации данных с помощью диаграмм.

Первая часть проекта заключалась в загрузке всех данных из моей личной учетной записи Google Calendar. Для этого я прочитал следующее Python Quickstart Guide on Google Calendar API. Я немного адаптировал код, используя принципы POO, чтобы достичь удовлетворительного уровня абстракции, чтобы мне было немного легче взаимодействовать с моим кодом. Следующий CalendarEventsDownloader содержит реализацию для загрузки всех событий моего календаря.

Итак, чтобы загрузить данные моего календаря, мне достаточно вызвать CalendarEventsDownloader().download_csv('events.csv') и указать путь, по которому я хочу сохранить файл.

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

Он преобразует данные ниже столбцов «начало» и «конец» в объекты даты и времени Python, удаляет все события, которые не соответствуют красному цвету помидора, удаляет ненужные столбцы, добавляет столбец, содержащий логические значения, чтобы представить, был ли половой акт или нет, добавляет столбец для местоположения и, наконец, заменяет стандартный добавочный индекс временем начала события.

Третьим и последним шагом было манипулирование всеми этими данными с помощью pandas и matplotlib, поэтому для этого я создал еще одну абстракцию под названием IntercourseTable, которая содержит основную логику этого приложения. Мы взаимодействуем с этим классом, чтобы получить все подтаблицы и, при желании, показать диаграммы или экспортировать их в другой файл .csv.

Подтаблицы также хранятся в отдельных файлах и содержат реализацию для построения соответствующего кадра данных pandas, а также для отображения соответствующей диаграммы для него. Каждая подтаблица реализует интерфейс IntercourseSubTable:

Ниже вы можете увидеть реализацию подтаблицы, которая группирует события по местоположению:

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

Запуск программы

Для запуска программы были добавлены некоторые дополнительные функции за счет разрешения аргументов командной строки при ее выполнении. Запустив python main.py -f data/events.csv —-download, я указываю путь, по которому можно найти файл .csv, и, если файла там нет, программа должна загрузить новый.

Основная функция

С учетом всего сказанного мы наконец-то можем взглянуть на функцию main и посмотреть, как она будет взаимодействовать с кодом, чтобы получить подтаблицу, сгруппированную по дате, и отобразить соответствующую ей диаграмму:

Результаты и обсуждение

В этом разделе давайте сначала начнем с нескольких цифр, которые дают нам обзор всех данных.

За весь период (с сентября 2017 г. по сентябрь 2021 г.) у нас было 85 половых актов из 160 полных событий. В процентном отношении это будет составлять примерно 53,1%.

Если мы хотим узнать количество половых актов в год, мы также можем получить следующую таблицу и отобразить соответствующий график:

На этом этапе важно отметить, что, хотя и 2017, и 2021 год содержат 8 половых актов, первый учитывает только 4 месяца (с сентября 2017 года по декабрь 2017 года), а второй — 9 месяцев (с января 2021 года по сентябрь). 2021).

"Но почему вы написали это в 2022 году, а есть события только до 2021 года?".

Это также имеет свои причины и поэтому будет объяснено в другом разделе ;)

Распределение половых актов в год

Еще одна интересная диаграмма — распределение половых контактов по годам:

Это следует той же схеме, что и предыдущий график, но дает нам другую интересную информацию. Глядя на эту диаграмму, мы видим, что 45,9 % всех половых актов произошли в 2018 году, поэтому мы можем сделать вывод, что 2018 год был нашим самым активным годом.

Но проблема с этими предыдущими диаграммами заключается в том, что мы просто сравниваем абсолютное количество половых актов в каждом периоде, не учитывая количество времени, которое мы провели или даже спали вместе. Другими словами, мы не рассматриваем события без общения.

Количество половых актов в год

Для этого мы можем разделить количество половых актов в каждом году на количество событий в соответствующие годы. Делая это, мы получаем ежегодную частоту половых актов, а также можем отобразить ее график:

На первый взгляд уже можно сказать, что этот график отличается от других тем, что он постоянно падает. И помните, что количество половых актов в 2017 и 2021 годах было равно 8? Теперь мы также можем визуализировать разницу между теми годами.

Уровень полового акта в 100% в 2017 году означает, что каждый раз, когда мы проводили время или спали вместе, мы занимались сексом, хотя делали это только 8 раз. С другой стороны, уровень половых актов в 28 % в 2021 году означает, что мы проводили гораздо больше времени вместе, не вступая в половые отношения. Точнее, у нас было половое сношение 8 раз из 29 всего.

Принимая как должное, что показатели между 2020 и 2021 годами почти одинаковы (разница ~ 1%) и что в 2021 году события происходят только до сентября, вероятно, 2021 год представляет собой более активный год, чем предыдущий.

Скорость распада половых актов

Последняя информация, которую мы можем извлечь из этой диаграммы частоты половых актов, — это скорость затухания частоты половых актов. Наблюдая за значениями с 2017 по 2020 год, мы видим, что она почти образует прямую линию. Используя линейную регрессию, мы можем рассчитать наклон этой линии и получить скорость затухания, которая равна примерно -0,236 или -23,6%. Это означает, что каждый год частота наших сексуальных отношений снижалась на 23,6%.

Данные сгруппированы по дате и месяцу

Если сгруппировать все данные по месяцам и годам, то получится следующая таблица с подсчетом половых актов:

И соответствующий ему график:

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

Данные сгруппированы по месту

Теперь, если мы сгруппируем все данные по местам (и заменим места буквами алфавита), мы получим следующую диаграмму:

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

Важное соображение!

Одиночный половой акт не обязательно означает, что у нас был секс только один раз. Например, у нас мог быть секс 3 или более раз в течение двухдневного события, особенно на ранней стадии отношений. Имея это в виду, реальное количество половых актов на самом деле выше, чем показано здесь.

Отношение

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

Мы не живем под одной крышей

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

Сценарий пандемии

Как и все остальные, мы также пострадали от пандемии Covid-19, а также от нашей сексуальной активности. В 2020 году был наименьший уровень половых актов, если мы оглянемся на диаграмму и учтем, что в 2021 году уровень был бы выше, если бы данные были доступны с сентября.

Причина событий до сентября 2021 года

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

Прием противозачаточных средств

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

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

Изменения в распорядке дня

Со временем мы постоянно становились все более занятыми учебой, работой и параллельной деятельностью. К 2017 году, когда начались отношения, у нас было гораздо больше свободного времени, чтобы проводить вместе, так как мы учились на первом курсе университета и не имели работы, так что это также могло представлять собой важный фактор в нашей общей сексуальной активности.

Заключение

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

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

Одна идея, которая недавно пришла мне в голову, заключается в том, что, возможно, есть способ измерить чувства, о которых я упоминал выше: анализ всех наших чатов в WhatsApp и Telegram.

Но это будет тема для другого проекта.