如何在CSV数据上执行关联挖掘?

时间:2014-07-24 15:36:27

标签: python associations data-mining associative

我有以下CSV数据集。数据表示:A,B,C,D和F - 实体。第2列是规则,最后一列是特定规则的该实体的排名。

A,Rule_1,1
B,Rule_1,1
C,Rule_1,2
D,Rule_1,1
E,Rule_1,2
F,Rule_1,3
A,Rule_2,3
B,Rule_2,1
C,Rule_2,2
D,Rule_2,1
E,Rule_2,2
F,Rule_2,1

我基本上想要对具有规则i和j等级的实体数进行关联挖掘(最多3个实体),并创建一个bucket_ij。基于此,我想找出给定等级为1的实体,哪些实体最有可能有等级2.所以当A,B,D = 1然后是C,E = 2.如何执行这种关联挖掘当某些实体的排名为1时,具有排名2的实体是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用pandas。 首先,您必须在csv文件上命名列:

Entities,Rule,Rank
A,Rule_1,1
B,Rule_1,1
C,Rule_1,2
D,Rule_1,1
E,Rule_1,2
F,Rule_1,3
A,Rule_2,3
B,Rule_2,1
C,Rule_2,2
D,Rule_2,1
E,Rule_2,2
F,Rule_2,1

然后把它保存到某处。

import pandas

pathToCsvFile = 'C:\\file.csv' #for example

df = pandas.DataFrame.from_csv(pathToCsvFile,index_col=None)
df.groupby(('Entities','Rank')).count()

我认为你可以得到你想要的东西。它将计算每个实体排名的次数。 输出:

Entities  Rank
A         1       1
          3       1
B         1       2
C         2       2
D         1       2
E         2       2
F         1       1
          3       1

或者:

from scipy import stats
df.groupby(('Entities')).agg(lambda x:stats.mode(x)[0]).Rank

将获得每个实体的模式。 输出:

Entities
A           1
B           1
C           2
D           1
E           2
F           1