python - 从大型数据集中提取唯一数据

标签 python python-2.7 csv pandas scikit-learn

我有一个非常大的 CSV 数据集(9 亿条记录),它包含以下格式:

URL | IP | ActivityId

示例数据:

http://google.com/ | 127.0.0.1 | 2
http://google.com/ | 12.3.3.1 | 1

对于这种格式,我希望获得每个 URL 的所有唯一事件,这些事件不会出现在其他 URL 中。

例如,让我们在我上面提供的数据中再添加一个样本

http://yahoo.com/ | 123.4.5.1 | 2

现在 ActivityId 2 被完全排除,因为它属于两个 url:Google 和 Yahoo。所以我想要的是只找到属于单个 URL 的所有事件,并且我想知道它们属于哪个 URL。

我尝试做的事情:

创建字典

URL => set(activity1, activity2, ... , activityN)

(这部分比较慢,这里回答了Parse a very large CSV dataset)

使用这本字典,我将每个条目相互比较,发现集合之间的差异,并用差异结果更新相应的集合。

我怎样才能使用 pandas 完成我想要的事情?

最佳答案

另一种解决方案 nunique :

df.groupby('ActivityId')['URL'].filter(lambda x: x.nunique() == 1)

更快的解决方案 transformboolean indexing :

df[df.groupby('ActivityId')['URL'].transform('nunique') == 1]

关于python - 从大型数据集中提取唯一数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43889690/

相关文章:

Python 相当于 Scala 的 lazy val

python - R在python中的顺序等效

python - 类型错误 : decoding Unicode is not supported python

c# - 将 DataTable 转换为 CSV 流

MySQL CSV 文件导入日期时间

python - 从Django中具有外键关系的两个表中检索数据?

python - 无法使用 mysql-connector-python 连接到本地主机,错误 1130

python - 如何修复重音字符串 [python]

Python - 在多线程中使用随机数

mysql - 从我的 .csv URL 列表中删除 Wordpress 帖子