合并两个CSV并整理数据

时间:2018-04-26 01:45:43

标签: sql excel powerbi data-manipulation alteryx

我有两个CSV文件,第一个是这样的:

第一册:

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是两者之间的公共属性。

第二册:

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

真正的数据集是数百万条记录,所以我很抱歉提前做了一个简单的例子。

我需要解决的问题是以一种方式合并和整理数据,我可以看到哪些项目分组最常出现在同一个ID上。 (例如GRAPE,GUM,SEASHELL一起出现340次,ORANGE和STICK出现89次等等)

然后,当按SUBJECT分组时,我需要查看共同外观的一般结果是否有任何变化/偏差。

我熟悉的工具是Excel和SQL,但我也有PowerBI和Alteryx。

完全披露:不是家庭作业或工作,而是志愿者项目,因此我不熟悉这种数据操作。

提前致谢。

4 个答案:

答案 0 :(得分:1)

An Alteryx solution:

  1. Drag the two .csv files onto your canvas (seen as book1.csv and book2.csv in my picture; Alteryx will create "Input" tools for you.
  2. Drag a "Join" tool on and connect the two .csv files to its inputs; select "ID" as the join field; unselect the "Right_ID" as output since it's merely a duplicate of "ID"
  3. Drag a "Summary" tool on and connect the Join tool's output to the Summary tool's input; select all three of the outputs and add as a "group by"... then add the ID column with a "count"
  4. Drag a browse tool on and connect the summary's output to the browse tool's input.
  5. run the workflow

After all that, click on the browse tool and you should see what is seen in my screenshot: (which is showing just the first ten rows of output):

enter image description here

答案 1 :(得分:0)

+1参与志愿者项目 - 我认为任何了解数据的人都会对支持他们喜爱的群体或事业产生重大影响。

我只是将2个文件作为2个单独的表(Get Data / From File)拉入Power BI。根据ID在2个表之间创建关系(可能会自动生成)。应该是一对多。

然后我会在Book1表中添加一个计算列来连接相关的ITEM值,例如

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

现在,您可以在视觉效果(例如表格)中使用项目字段,以及 ID ID 来获取频率。

根据表格的副本添加主题(例如,添加到Matrix的列中)将生成您的分组方案,或者您可以添加主题切片器。

由于您将比较不同大小的子集,我会将 ID的数量更改为显示值 - 总计的百分比

答案 2 :(得分:0)

使用Alteryx的解决方案略有不同。

使用此数据集,很少有重复的3个或4个项目组。您可以执行两项关联性分析并获得3个或4个项目组的概率,或者您可以单独计算3个和4个项目组。我相信你想要的是后者,因为无论你是否在购物车中加入香蕉,都可能会改变你获取葡萄与橘子的可能性。

无论如何,在找到我的所有组合之前,我没有加入这个主题。我通过采用笛卡尔连接的两个,然后是三个,然后是原始集合中的四个来找到所有组合。然后我通过确保每行中的项目始终按字母顺序删除所有重复项。然后我计算了每种组合的出现次数。可以在同一模式中添加更多联接以计算5,6,7 ...

一旦你有了发生次数,那么我会和受试者一起加入并对每个组进行分析并与总体结果进行比较。

Affinity analysis using Alteryx

  • 我应该透露我是为Alteryx工作的。

答案 3 :(得分:0)

首先,如果您使用的是Windows 只需导航到包含CSV的目录并编写以下命令即可:

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

现在您创建了一个csv文件,该文件太大了,您现在无法处理它,具体取决于您的编程语言,您可以使用适当的方式,对于python,您可以使用生成器逐行处理,或者您可以对熊猫进行处理可以逐块读取它,这很容易。

希望对您有帮助。