Объединить два CSV и сопоставить данные - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть два файла CSV, первый из них выглядит так:

Book1:

ID,TITLE,SUBJECT
0001,BLAH,OIL
0002,BLAH,HAMSTER
0003,BLAH,HAMSTER
0004,BLAH,PLANETS
0005,BLAH,JELLO
0006,BLAH,OIL
0007,BLAH,HAMSTER
0008,BLAH,JELLO
0009,BLAH,JELLO
0010,BLAH,HAMSTER
0011,BLAH,OIL
0012,BLAH,OIL
0013,BLAH,OIL
0014,BLAH,JELLO
0015,BLAH,JELLO
0016,BLAH,HAMSTER
0017,BLAH,PLANETS
0018,BLAH,PLANETS
0019,BLAH,HAMSTER
0020,BLAH,HAMSTER

А затем второй CSV с элементами, связанными с первым списком, где ID является общим атрибутоммежду ними.

Book2:

ID,ITEM
0001,PURSE
0001,STEAM
0001,SEASHELL
0002,TRUMPET
0002,TRAMPOLINE
0003,PURSE
0003,DOLPHIN
0003,ENVELOPE
0004,SEASHELL
0004,SERPENT
0004,TRUMPET
0005,CAR
0005,NOODLE
0006,CANNONBALL
0006,NOODLE
0006,ORANGE
0006,SEASHELL
0007,CREAM
0007,CANNONBALL
0007,GUM
0008,SERPENT
0008,NOODLE
0008,CAR
0009,CANNONBALL
0009,SERPENT
0009,GRAPE
0010,SERPENT
0010,CAR
0010,TAPE
0011,CANNONBALL
0011,GRAPE
0012,ORANGE
0012,GUM
0012,SEASHELL
0013,NOODLE
0013,CAR
0014,STICK
0014,ORANGE
0015,GUN
0015,GRAPE
0015,STICK
0016,BASEBALL
0016,SEASHELL
0017,CANNONBALL
0017,ORANGE
0017,TRUMPET
0018,GUM
0018,STICK
0018,GRAPE
0018,CAR
0019,CANNONBALL
0019,TRUMPET
0019,ORANGE
0020,TRUMPET
0020,CHERRY
0020,ORANGE
0020,GUM

Реальные наборы данных - это миллионы записей, поэтому я заранее сожалею о своем простом примере.

Проблема, которую яНеобходимо решить, как объединить и сопоставить данные таким образом, чтобы я мог видеть, какие группы элементов чаще всего появляются вместе на одном и том же идентификаторе.(Например, GRAPE, GUM, SEASHELL появляются вместе 340 раз, ORANGE и STICK 89 раз и т. д.) *

Затем мне нужно проверить, есть ли какие-либо изменения / отклонения общих результатов в общем виде при группированииSUBJECT.

Инструменты, с которыми я знаком, - это Excel и SQL, но в моем распоряжении также PowerBI и Alteryx.

Полное раскрытие: не домашняя работа или работа, а волонтерский проект, поэтому я не знаком с этим видом манипулирования данными.

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 01 августа 2019

Прежде всего, если вы используете Windows, просто перейдите в каталог, содержащий CSV и напишите следующую команду:

copy pattern newfileName.csv
#example 
copy *.csv merged.csv

теперь вы создали один CSV-файл, файл слишком большой, теперь вы можетене обрабатывайте его один раз, в зависимости от вашего языка программирования, который вы можете использовать соответствующим образом, для python вы можете использовать генераторы для обработки построчно, или pandas, вы можете читать chunk by chunk, это будет легко.

Надеюсьэто поможет вам.

0 голосов
/ 26 апреля 2018

Решение Alteryx:

  1. Перетащите два файла .csv на свой холст (на моем рисунке это book1.csv и book2.csv; Alteryx создаст для вас инструменты «Ввод».
  2. Перетащите инструмент «Объединить» и подключите два файла .csv к его входам, выберите «ID» в качестве поля объединения, отмените выбор «Right_ID» в качестве выходного, поскольку это просто дубликат «ID»
  3. Перетащите инструмент «Сводка» и подключите выходные данные инструмента «Соединение» к входу инструмента «Сводка», выберите все три выхода и добавьте их как «сгруппировать по» ... затем добавьте столбец идентификатора со «счетчиком»
  4. Перетащите инструмент просмотра и подключите вывод сводки к входу инструмента просмотра.
  5. запустите рабочий процесс

После всего этого нажмите инструмент просмотра ивы должны увидеть то, что видно на моем скриншоте: (который показывает только первые десять строк вывода):

enter image description here

0 голосов
/ 26 апреля 2018

Немного другое решение с использованием Alteryx.

С этим набором данных очень мало повторяющихся групп из 3 или 4 элементов.Вы можете выполнить анализ сходства двух предметов и получить вероятность 3 или 4 групп предметов, или вы можете сосчитать 3 и 4 группы предметов по отдельности.Я полагаю, что вам нужно последнее, так как вероятность того, что вы получите виноград с апельсинами, может быть изменена в зависимости от того, есть ли у вас бананы в корзине или нет.мои комбинации.Я нашел все комбинации, взяв декартово соединение двух, затем трех, а затем четырех оригинального набора.Затем я удалил все дубликаты, убедившись, что элементы всегда были в алфавитном порядке в каждой строке.Затем я посчитал вхождения каждой комбинации.Можно добавить больше объединений в одном и том же шаблоне для подсчета групп из 5,6,7 ...

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

Affinity analysis using Alteryx

  • Я должен сообщить, что я работаю на Alteryx.
0 голосов
/ 26 апреля 2018

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

Я бы просто перетащил 2 файла в Power BI как 2отдельные таблицы (Получить данные / Из файла).Создайте связь между двумя таблицами на основе идентификатора (он может генерироваться автоматически).Это должно быть одно ко многим.

Тогда я бы добавил вычисляемый столбец в таблицу Book1, чтобы объединить соответствующие значения ITEM, например.

Items =
CALCULATE (
    CONCATENATEX (
        DISTINCT ( 'Book2'[ITEM] ),
        'Book2'[ITEM],
        ", ",
        'Book2'[ITEM], ASC
    )
)

Теперь вы можете использовать это Поле элементов в визуалах (например, таблица) вместе с Количество идентификаторов для получения частоты.

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

Поскольку вы будете сравнивать подмножества различного размера, я бы изменил Количество идентификаторов на Показывать значение как -% от общего итога .

...