问题标签 [data-processing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 读取大量 ASCII 数字并以二进制形式写入
我有大约 1.5 Gb 的浮点数的数据文件,它们存储为 ASCII 文本,由空格分隔,例如,1.2334 2.3456 3.4567
等等。
在处理这些数字之前,我首先将原始文件转换为二进制格式。这很有帮助,因为我可以选择是否使用float
或double
,减小文件大小(大约 800 MBdouble
和 400 MB float
),并在处理数据后读取适当大小的块。
我编写了以下函数来进行 ASCII 到二进制的转换:
我想加快速度acii_to_binary
,但我似乎无法提出任何建议。我尝试以 8192 字节的块读取文件,然后尝试在另一个子例程中处理缓冲区。这似乎很复杂,因为缓冲区中的最后几个字符可能是空格(在这种情况下一切都很好),或者是一个截断的数字(这非常糟糕)——处理可能的截断的逻辑似乎不值得。
你会怎么做来加速这个功能?我宁愿依赖标准 C++(C++11 也可以),没有额外的依赖,比如 boost。
谢谢你。
编辑:
@大卫施瓦茨:
我尝试按如下方式实施您的建议:
但它似乎没有写入数据!我在做这个工作...
arrays - 根据几个条件从数据数组返回值
我有一个包含 3 列的数据表(为了清晰起见,外观被简化,但保留了排列和数据格式,第一列A
是Date
用我的区域设置格式化的,但它不是文本):
该列表可能很长并且会定期更新。我需要实现的是:在同一张纸上,我将以下计算单元格放置在 E 列的起始位置(即数据和计算区域之间有一个空白列 D):
基本上我需要从以下数据数组中找出A:C
:
- 对于中的值列表
E
(对应于中的模块名称B
)日期和对应的值,该值在同一模块的值中最大,但应返回从今天开始的最后一周。 - 如果在上周没有此模块的记录 - Date 应该是空的,并且Value 应该是“No change”字符串(与
xxxxx
上面的示例一样,与初始数组相关并假设今天是 2 月 9 日)。
至于#2,我最终得到以下结果:
- 对于
Date
:=IF(SUMPRODUCT(--(A:A>TODAY()-7),--(A:A="xxxxx"))=0,"")
- 对于
Value
:(=IF(F5="","No change")
我在这里检查左侧的相应日期)
至于#1 - 我被困住了,这就是我需要指导或建议的地方。我尝试了不同的东西MATCH
,VLOOKUP
和类似的东西,但甚至没有接近成功:我要么有错误,要么没有相关的结果。
如果这很重要 - 日期总是被排序,最近的日期在列表的末尾,即新记录被添加到底部。对于同一模块,同一天可能有多个记录。如果示例或解释不清楚 - 请在评论中回复,我会添加更多详细信息。谢谢!
python - 寻找一种更有效的方法来在 Python 中重组大量 CSV
我一直在解决一个问题,即我有来自大型输出 .txt 文件的数据,现在必须以 .csv 的形式解析和重新组织某些值。
我已经编写了一个脚本,根据数据类型(航班 ID、纬度、经度等)将所有数据输入到列中的 .csv 中,但顺序不正确。所有值都应根据相同的航班 ID 进行分组,从最早的时间戳到最晚的时间戳。幸运的是,我的 .csv 中的所有值都按正确的时间顺序排列,但没有根据航班 ID 适当地组合在一起。
为了澄清我的描述,它现在看起来像这样,
(“时间 x”只是为了说明):
它应该像这样订购:
为了让事情变得更容易,我输出的 .csv 中有 130 万行。我 99% 确信我编写的下一个用于修复排序的脚本中的逻辑是正确的,但我担心它的效率极低。我最终添加了一个进度条,只是为了看看它是否取得了任何进展,不幸的是,这就是我所看到的:
这是我处理处理的代码(如果您愿意,可以跳到问题区域):
到目前为止一切都很好,但是在下一部分中,我的计算机要么窒息,要么我的代码很烂:
这个想法是,对于每个唯一值,按顺序迭代 130 万个值并按顺序返回每个出现的索引,并将这些值附加到列表中。在那之后,我将读取那个大的索引列表并将该行数据的内容写入另一个 .csv 文件。达达!可能效率非常低。
这里有什么问题?有没有更有效的方法来解决这个问题?我的代码有缺陷,还是我对笔记本电脑太残忍了?
更新:
我发现,根据我处理的数据量,需要 9 到 10 个小时。我在 4.5 中正确吐出了一半。我现在可以摆脱一夜之间的紧缩,但下次可能会考虑使用数据库或其他语言。如果我提前知道我要做什么,我会的,哈哈。
为我的 SSD 调整睡眠设置后,只用了 3 个小时就可以搞定。
machine-learning - 解析非均匀数据
我正在尝试解析具有两个(或一个)有用部分的数据集合,但可能以许多不同的方式组织:
我不想使用大量的正则表达式,因为没有办法预测事物的组织方式的所有组合(也有一些会有无关的文本)。我觉得机器学习的一个分支可能非常适合这一点,但我在这方面的经验不足以知道。
php - 使用php中的作业处理大量数据
我们有一个网站,上面有“项目”,每个项目都有给定数量的人订阅。
在项目“结束”时,所有订阅者都被收集和处理。在这种情况下,大约有 1,000 个订阅者的数据需要被提取和处理。还有一些相关数据与每个数据集一起存储在一个数组中。
上次我们处理大订单时,大约 300 件商品,PHP 内存不足。我们提升了内存,它能够处理它。我不认为这次会是这样。
我们目前使用拉动项目的作业来处理订阅者。在此作业中,执行 SQL 查询以提取所有“订阅者”并将它们及其相关数据存储在数组中。然后迭代该数组以创建单独的作业来处理各个订阅者。
我的问题是:
有没有办法在“块”或其他东西中做到这一点?或者有什么更好的方法可以减少对记忆的影响?如果我们有成千上万的订阅者,我希望它可以扩展。
现在这是流程:
- 项目“结束”
- 作业开始设置一些标志,并拉动所有订阅者
- 循环来自 MySQL(订阅者)的数据数组,并为每个订阅者创建一个单独的作业。
- 每个订阅者作业都由引擎处理。
我只是很难确定执行此操作的最佳过程。
c# - 基于平均值预测数据
我每秒都有 GPS 数据进入我的 PC 上的串行端口。我已经成功处理了 GPS 数据,并且纬度和经度作为浮点数存储在单独的数组中。
大多数时候,纬度和经度数字保持不变,因为 GPS 位置仅每 5 米变化一次。当数组中的纬度或经度值发生变化时,我希望我的程序根据变化之间存储的数据点的纬度或经度的平均值进行预测。例如:
假设这是latitude
数组的内容:
我希望我的程序将数组中的内容更改为:
我已经尝试解决这个问题,但我的方法不起作用:-/我是 C# 新手;必须有更好的方法来做到这一点。这是我尝试进行预测的代码片段(后面---GPS coordinate prediction---
的位是不起作用的位):
r - 为层次聚类准备分类数据
我想使用 R 对数据进行层次聚类,如下所示:
这应该意味着 L2 与 L1 和 L3 共享特征 W1,而特征 W2 存在于 L1 和 L3 中,但具有不同的值,并且在 L2 中缺失。(编辑L 是语言,W 是这些语言中的词干,值(p、r 等)描述了这些词如何在特定语言中派生出来。我相信一个词在不同的语言可能暗示共同的起源。当它丢失时,不清楚:它可能意味着什么,或者我的来源可能不完整,但我想我必须谨慎地假设第一个选项。最终目标是根据什么对语言进行分类茎存在于它们中,以及它们的行为方式。结束编辑)
您能否解释一下我如何转换这些数据以便能够对它们进行分类,并建议我应该使用什么相似度指数?
r - 治疗随机化
我有一个 8 行 12 列的矩阵,随机分布 10 个不同的处理,9 个重复,最后一个处理只有 6 个重复。代码可能是多余的,但它是第一个想到并起作用的想法。我只是想制定一个计划,以便我在实验室之后可以轻松地遵循,以避免错误:
但是,现在假设我多次测量随机矩阵。对于数据处理,我需要确定矩阵中的处理和复制。我可以将数据放在最后一个列中:
. . .
或按行时尚:
...
R中是否有一种方法可以将随机矩阵与我收集的数据联系起来,我什至不知道如何开始。我真的很抱歉没有尝试,但老实说我不知道如何开始
statistics - 确定某些函数的系数
我有一个可能与数据分析甚至神经网络有关的任务。
我们有合作伙伴的数据源,工作门户。源值是与特定员工相关的不同属性的数组:
- 他\她的性别,
- 年龄,
- 多年经验,
- 投资组合(完成的项目数量),
- 专业和专业(网页设计,网页编程,管理等),
- 许多其他(总共大约 20-30 个)
每个员工都有自己的工资(小时)率。所以,在数学上,我们有一些函数
F(attr1, attr2, attr3, ...) = A*attr1 + B*attr2 + C*attr3 + ...
系数未知。但是我们知道函数对指定参数的结果(假设我们知道一个有 20 年经验和 10 个作品集的男性程序员的工资是每小时 40 美元)。
所以我们必须以某种方式找到这些系数(A、B、C...),这样我们才能预测任何员工的薪水。这是最重要的目标。
另一个目标是找出哪些参数是最重要的——换句话说,哪些参数会导致函数结果发生重大变化。所以最后我们必须有这样的东西:“最重要的属性是多年的经验;然后是投资组合;然后是年龄等”。
可能存在不同职业之间差异太大的情况 - 例如,我们可能根本无法将网页设计师与经理进行比较。在这种情况下,我们必须将它们按组拆分,并分别为每个组计算这些评分。但最终我们需要找到对每个群体都通用的“共享”论点。
我正在考虑神经网络,因为这是他们可能处理的事情。但我对他们完全陌生,完全不知道该怎么做。
我非常感谢任何帮助——使用哪些工具、哪些算法,甚至是伪代码示例等。
非常感谢。
preprocessor - 调整数据向量具有一定的方差
我有一组整数 x, 0<=x<=255 我需要以这种方式转换这些数据:
- 集合中值的平均值 == 0
- 方差 == 1
我可以满足第一个条件:
但我不知道,如何遇见第二个。
我有最好的主意:计算当前方差并将所有整数除以或乘以 A 以更接近所需的方差。然后 A=A/2 并重复直到误差很小。
(类似于估计 x 平方根的基本算法。)
是否有另一种(更有效的)方法来实现这一目标?