Как предварительно обработать данные CSV для анализа ассоциации с помощью панд - PullRequest
0 голосов
/ 08 ноября 2018

Я работаю над задачей предварительной обработки CSV-файла с помощью Python.Задача - прочитать файл original.csv, содержащий товары, купленные за одну транзакцию на строку.Мне нужно создать еще один CSV-файл, который должен выглядеть аналогично файлу target.csv, который будет отображать все данные в одной транзакции на строку.

original.csv (Здесь для каждой отдельно купленной позиции транзакции указан список на строку)

original.csv file contents

пример данных, которые выглядят как содержимое файла original.csv

 Transaction Id  Items
  1               Eggs
  1               Yogurt
  1               Apple
  2               Tea
  2               Rice   

В target.csv все данные в одной транзакцииперечисленные в одной строке. Так строка 1 содержит все товары, приобретенные в транзакции № 1.

target.csv file contents

пример данных, которые выглядят как содержимое файла target.csv

1 Eggs,Yogurt,Apple
2 Tea Rice

Я использую приведенный ниже код Python для преобразования файла original.csv в target.csv

#reading csv file
newdf = pd.read_csv('original.csv',header=None)

#creating an empty list
basket = []

'''
this code will enumerate through all transaction number in original csv file 
and create a list with items belonging to one transaction. After for loop 
execution gets completed list 'basket' will contain list of list containing 
items of all transactions
'''

for id in newdf[1].unique():
    a = [newdf[2][i] for i, j in enumerate(newdf[1]) if j == id]
    basket.append(a)

'''
Now a new csv file is created with all items of one transaction in one 
row getting written in this file.
'''
with open('target.csv','w',newline='') as writeFile:
    writer = csv.writer(writeFile)
    writer.writerows(basket)
writeFile.close()

Транзакция № 17 из выходного файла CSV

Transaction number 17 in output csv file

17    milk  hand soap   pasta   individual meals    spaghetti sauce cereals sandwich loaves hand soap

Транзакция № 17 в оригинальном CSV-файле

X

 Transaction Id  Items
  17               Yogurt
  17               Milk
  17               hand soap
  17               pasta
  17               individual meals 
  ...

Для транзакции № 17 одна позиция«Йогурт» отсутствует в файле target.csv.Я также проверил некоторые другие номера транзакций и обнаружил, что элементы отсутствуют.

Как отобразить все данные одной транзакции в одной строке в новом CSV-файле?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...