按用户盘点存货

时间:2018-11-28 19:16:49

标签: python pandas csv hadoop

有一张表包含2014年的数据,结构如下: 每个用户可以发行不同数量的图书类别。

User-id|Book-Category
1      |Thrill        
2      |Thrill       
3      |Mystery       
3      |Mystery       

要求是为每个用户查找每种已发行书籍类别的类型。此数据已经存在于csv文件中,但是每年可用。 我必须添加所有这些值。 例如:

data for 2014
u-id|book|count
1   |b1  |2  
1   |b2  |4
...  ...  ...

data for 2015
u-id|book|count
1   |b1  |21
2   |b3  |12  
//like the above format,available till 2018.(user1 with book b1 should have a count of 23

现在,我写了一个python脚本,其中我只是制作了一个字典并重复每一行,如果存在键(u-id + book-category),则添加 count 的值,在该字典中插入键值对,并在该脚本中为每年的明智文件添加了此文件,因为某些文件的大小> 1.5GB,该脚本连续运行了7/8小时,因此必须停止运行。

代码:

    import requests
    import csv
    import pandas as pd

    Dict = {}

    with open('data_2012.csv') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            if row['a']+row['b'] not in Dict:
                Dict[row['a']+row['b']] = row['c']
##like this,iterating over the year wise files and finally writing the data to a different file.'a' and 'b' are mentioned at the first line of the data files for an easy access.

有什么方法可以在python中更优雅地实现此功能或编写Map-Reduce作业?

0 个答案:

没有答案