【问题标题】:Good libraries in R or Python for analytics of network/graph data [closed]R 或 Python 中用于分析网络/图形数据的优秀库 [关闭]
【发布时间】:2013-04-24 21:34:33
【问题描述】:

免责声明:我有相当直接/蛮力的方法来解决我的问题;该问题的目标是学习有助于这些计算的更好的方法和库。

我有一个相当大的 csv(100k+ 行),其中包含人员、位置、时间数据和花费的金钱等。比如说:

thomas, park, noon, 0
jim, pool, afternoon, 5
sandy, school, noon, 0
alex, mall, night, 20

当我接近这个数据集时,我想发现一些有趣的事情,以及我将如何去做。目前,我使用 R 和 Python(以及 RPy2)混合实现。

  1. 最活跃的人?最常去的地方?最忙的时候?我通过 for 循环统计的事件的简单统计。
  2. 相似性 - 访问 X 的人也访问 Y - 给定访问公园的一部分人,他们访问的其他位置是什么?也可以应用于其他维度。目前,我通过迭代子集并统计事情来实现这一点。什么更好?

    3-4 稍微题外话;找到了库,但希望听到更好的方法/库

  3. 通过网络图进行可视化以查看集群/集中度——每个人都被定义为一个顶点,共享位置被定义为一条彩色边。由于我的数据格式,数据的预处理有点痛苦;我也可以通过让边缘既是人又是位置+时间来“作弊”,因为这涉及较少的预处理。目前在 R(igraph 库)中使用加权图。
  4. 聚类分析以查看数据是否属于特定的 bin;现在我只是在使用 k-means 聚类。

因此,重申一下,鉴于我的查询的性质,具有预构建和优化功能来回答我的一些问题的好的库是什么?似乎使用一堆 for 循环是一种非常低效且不雅的方式来收集洞察力。

【问题讨论】:

  • 投票不具建设性。请阅读网站常见问题解答,尤其是stackoverflow.com/faq#dontask。您可以通过浏览本网站来回答您的一些问题。其他人值得在这里提问,但前提是您发布了一个很好的可重复问题。

标签: python r graph analytics data-mining


【解决方案1】:

Python 有很多内置的好东西。

假设您将数据存储在元组列表中。 (我认为实际上使用collections.namedtuple 会使代码更容易理解)。借助推导,您可以构建单个项目的列表。然后你可以使用collections.Counter 来计算它们

In [1]: import collections

In [2]: Record = collections.namedtuple('Record', ['person', 'location', 'time', 'amount'])

In [3]: allrecords = []

您应该改为从此处读取 CSV 文件中的记录...

In [4]: allrecords.append(Record('thomas', 'park', 'noon', 0))

In [5]: allrecords.append(Record('jim', 'pool', 'afternoon', 5))

In [6]: allrecords.append(Record('sandy', 'school', 'noon', 0))

In [7]: allrecords.append(Record('alex', 'mall', 'night', 20))

现在您可以过滤数据了;

In [8]: times = collections.Counter([j.time for j in allrecords])

In [9]: print times
Counter({'noon': 2, 'afternoon': 1, 'night': 1})

In [10]: amounts =  collections.Counter([j.amount for j in allrecords])

In [11]: print amounts
Counter({0: 2, 20: 1, 5: 1})

请注意,您可以在列表推导中使用 if 语句。

In [12]: query = collections.Counter([j.amount for j in allrecords if j.time in ('afternoon', 'night')])

In [13]: print query
Counter({20: 1, 5: 1})

【讨论】:

  • 非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 2010-11-29
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 2011-01-23
  • 2011-12-03
相关资源
最近更新 更多