В какой-то момент моего путешествия по Python ООП я наткнулся на классы данных . Я смутно припоминаю, что это происходило при генерации, казалось бы, повторяющегося шаблонного кода для класса, который делал лишь немного больше, чем содержал довольно длинную запись данных. Надеясь, что есть лучший способ сделать это, я открыл для себя классы данных, которые были введены в Python 3.7 (через PEP 557 ).
Короче говоря, классы данных упрощают разработку и поддержку классов, ориентированных на данные.
В этом посте я хотел поделиться некоторыми открытиями, касающимися более интересных реализаций классов, а также тем, как такие «интересные» классы данных могут быть легко использованы модулем анализа данных Python pandas .
Следующий список представляет собой то, что я считаю «интересным» в смысле того, что может произойти в реальной жизни при создании класса данных :
Теперь, когда мы определили наш класс данных с различными «интересными» функциями, давайте посмотрим, насколько легко получить DataFrame pandas, построенный из списка случайных экземпляров DataClass_Modern .
Просматривая приведенный выше код, сразу видно, что это очень просто. Сначала мы сгенерировали список из 100 случайных объектов, используя наш метод rand_factory () . Затем мы просто передаем этот список непосредственно конструктору DataFrame по умолчанию .
Слишком легко!
А как насчет следующего?
Это должно быть сюрпризом? В некотором роде. Как бы это работало, если бы мы не использовали классы данных ?
Приведенный ниже фрагмент кода представляет собой эквивалентное определение класса, ориентированного на данные, со всеми «интересными» функциями, которые нам нужны, с использованием стандартной структуры классов Python, определяемой пользователем. Теперь, если это можно было сделать несколькими способами, но здесь мы сохраним простоту и сделаем это как можно ближе к базовому определяемому пользователем классу.
На первый взгляд ясно, что для этого потребовалось немного больше работы (и на самом деле она неполная, как мы вскоре увидим). Обратите внимание, как нам пришлось обращаться с инициализатором списка и как мы должны были предоставить наш собственный метод __str __ () . Однако нам не нужно было предоставлять фиктивный сеттер для attr5 .
В приведенном выше фрагменте кода видно, что мы используем специальный метод конструктора from_dict . Это происходит потому , что мы используем __dict__ встроенного метода для DataClass_Classic объектов , чтобы получить атрибуты. Это выглядит достаточно просто, но как на самом деле выглядит DataFrame при использовании такого же краткого подхода?
Две проблемы:
Сказав это, чтобы иметь очень расширенный контроль над экспортом определяемого пользователем класса в DataFrame , классический подход все еще более эффективен, если вы хотите делать такие вещи, как контроль, какие атрибуты не включаются во время построения во время выполнения или объект обрабатывается как столбец pandas (но это выходит за рамки данной статьи).
Я обычно помечаю последний раздел любого сообщения в блоге как «Выводы», но в данном случае это будет вводить в заблуждение. Вместо этого мы просто сделали несколько наблюдений:
Во второй части я начал использовать грубое точное сопоставление, пытаясь ответить на свой исследовательский вопрос, который спрашивает, как возможность удаленной работы вместо личной работы влияет на интерес к ней. Сопоставленные переменные, которые я использовал — местоположение, отрасль, размер компании, информация о заработной плате, требуемый опыт работы и возраст должности — по-видимому, прошли долгий путь к устранению типа смещения вверх, на которое указывает простой исследовательский анализ данных, проведенный в части 1. .
В моем последнем сообщении я показал, что удаленность возможности трудоустройства действительно коррелирует с гораздо большим интересом соискателя, но я также показал, почему эта корреляция может вводить в заблуждение или, возможно, по крайней мере, преувеличенное указание на то, что компания может разумно ожидать от соискателя. интерес, если это делает открытие работы удаленным, а не на месте. Объявления о вакансиях с различными рекламируемыми условиями работы — на месте, гибридными или удаленными — также, как правило, различаются, по крайней мере, в моей выборке, с точки зрения других факторов интереса к вакансиям, начиная от требуемого опыта и заканчивая отраслями. они в том, какие титулы они, как правило, имеют.
В сегодняшнем быстро развивающемся бизнес-ландшафте концепция гибридной и удаленной работы приобрела беспрецедентный импульс. Поскольку компании продолжают приспосабливаться к меняющимся потребностям и ожиданиям своих сотрудников, эксперты из разных областей собрались вместе, чтобы обсудить преимущества, проблемы и будущее этого преобразующего способа работы.
Это поражает меня Внезапно, как это часто бывает, Это снова и снова на полпути <Нет, не то, что в Тихом океане, ты темно-бордовый, то, что на карнавале> Каждый громкий заголовок…..
Сколько раз вы, не задумываясь, выбрасывали пластиковую бутылку, стеклянную банку, алюминиевую банку или пакет экологически чистой энергии? Сколько раз вы хотели получить что-то взамен за их переработку? Если вы похожи на большинство людей, ответ, вероятно, много раз. Переработка часто рассматривается как хлопотное дело, рутинная работа или обязанность, не приносящая немедленных или ощутимых выгод.
Любой здравомыслящий человек знает, что в политических и медийных кругах доминируют левые, даже крайне левые, что создает дисбаланс в политическом дискурсе. В области религии этот дисбаланс хорошо виден: левые газеты и сети не спешат защищать христианскую веру.