У меня есть большой список адресов электронной почты, на который я веду трансляции, и у каждого подписчика есть несколько тегов. Моя система рассылки электронной почты позволяет мне загружать каждый тег в виде отдельного CSV-файла, содержащего все адреса электронной почты с тегами* и не содержащего адреса без тега.
Мне нужно комбинировать эти теги сложным образом, чтобы я мог по существу создать новый набор тегов для загрузки обратно на сайт в виде нового импортируемого файла CSV.
Программное обеспечение будет работать либо с исходными файлами CSV (что было бы менее трудоемко для меня), либо с результирующим файлом, который я создал бы, объединив их все в файл CSV с электронными письмами в качестве первого столбца и тегами во всех остальных столбцах. , с некоторым логическим значением 1/0 или да/нет и т. д.
Это не будет одноразовым, поэтому часто необходимо наличие системы для выполнения этих процессов.
Анализ данных для создания нового файла
Я хотел бы взять данные (будь то из отдельных файлов CSV с одним столбцом или просто из полученного нового одного файла CSV с несколькими столбцами) и сравнить комбинации да/нет тегов для каждого электронного письма и на основе комбинаций (см. ниже), решите, будет ли это письмо включено или проигнорировано.
Это может быть простой случай добавления нового столбца 0 или 1 в тот же «большой» CSV-файл (который затем я мог бы добавить дополнительный шаг фильтрации только «1» в окончательный CSV-файл) или добавление/не добавление этого электронного письма в окончательный файл CSV.
Нужны сложные операции
Вот пример процессов, которые мне нужно запустить:
Из некоторых исследований в Интернете я вижу, что решение моей проблемы, скорее всего, включает в себя написание кода на Python или аналогичном, но я надеюсь, что есть удобное программное приложение, которое может это сделать, чтобы я мог достичь того, что я' хотелось бы без кодирования.
Если требуется кодирование, в идеале оно должно быть сведено к минимуму, или у меня был бы готовый сценарий, в котором мне нужно было бы только изменить источники файлов и запросы if . Мне удобно писать структуры if . В противном случае у меня есть базовый опыт кодирования, и я могу узнать, что мне нужно делать в этой программной среде.
У меня есть Excel 2017 (может быть, есть подключаемый модуль, о котором я не знаю, для моих сложных фильтров), и я могу заплатить за программное обеспечение, чтобы сделать это, если это необходимо, в зависимости от его функциональности, хотя функции, выходящие за рамки того, что я описал здесь, не т необходимо.
Спасибо за любые рекомендации!!
* Загруженный файл CSV также имеет свое имя в другом столбце, но я бы удалил его для целей этого процесса.
Я бы загрузил его в PostgreSQL, а затем использовал бы SQL для запроса. Это довольно сложные операции.
Я задавал аналогичный вопрос, связанный с той же проблемой , и в конце концов пришел к ответу, который я могу применить прямо здесь.
Простая программа для выполнения этого в графическом или ином очень простом интерфейсе может существовать, а может и не существовать, но по сути кажется, что проще всего это сделать на сегодняшний день с помощью библиотеки pandas в Python . Вот документация по настройке .
Одна из основных причин заключается в том, что этот язык программирования очень прост в изучении (в большей степени, чем SQL, предложенный другим ответчиком, и я не согласен с тем, что операции настолько сложны), и я бы сказал, что вы могли бы справиться с это с днем изучения основ программирования на Python (особенно если вы изучали какую-либо форму программирования в прошлом) и понимания базовой логической логики.
Взяв первый пример, который я привел, и то, как он будет реализован в Python, с импортированной библиотекой pandas (и удалением некоторого другого кода, такого как настройка баз данных и т. д.), его можно будет отобразить примерно следующим образом, предполагая, что таблица с заполненными столбцами с этими тегами и значениями в ячейках как True или False:
result = alldata[(alldata[tag1] & alldata[tag7] & alldata[tag8]) & ~(alldata[tag2] | alldata[tag20])]
Чтобы объяснить это вкратце, если ваши данные импортированы в фрейм данных со значениями под названием «alldata», то вызов «alldata[tag1]» вернет список переменных True и False в одномерном массиве, соответствующих точкам в кадр данных, где tag1 является истинным или ложным. Затем
alldata[tag1] & alldata[tag7] & alldata[tag8]
объединит каждый из этих трех тегов, так что вы получите массив одинаковой длины, но теперь он получает значения True только тогда, когда все три из них были True, и false в противном случае.
Сходным образом,
alldata[tag2] | alldata[tag20]
объединит массив True/False для tag2 и tag20 и вернет значения True, если одно из них истинно, и False, только если оба являются False.
Операция ~ инвертирует это и превращает все True в False и все False в True.
Затем & между первой и второй частями объединит их так, что результирующие части массива останутся истинными, только если ответ был истинным как в первой, так и во второй.
Это оставляет вас с результирующим массивом значений True и False, где «True» соответствует точке, где все tag1, tag7 и tag8 являются истинными, а tag2 или tag20 — ложными.
Но если вы вернете этот новый массив обратно как вызов между квадратными скобками (до сих пор мы передавали только tagX в квадратные скобки), тогда
alldata[ ## the resulting combination we have ## ]
фактически удалит значения «False» из фрейма данных alldata в результате, и у вас будет новый фрейм данных, который имеет только оставшиеся значения, чего мы и хотели!
Затем вы экспортируете это как новый файл CSV. Вы можете применить аналогичные операции или варианты в python, чтобы получить все остальные, которые я предложил в своем исходном вопросе.
Мне было очень весело изучать pandas и Python (у меня есть базовый опыт программирования в колледже), но я понимаю, что некоторые из них могут показаться пугающими. Я надеюсь, что это не так, и этот ответ поможет кому-то в ситуации, похожей на ту, в которой я был!