Tag: 大数据

计算大数字列表的加权几何平均数

我正在计算一个大的数字列表(约115k数字)的加权几何平均数。 每个号码的权重值分配为1,2或3。 似乎有很多方法可以计算几何平均值(非加权),而我之前遇到过的一个问题是: EXP(AVERAGE(LN(<值列表>))) 对于大型列表来说是一个好得多的方法: PRODUCT(nTH_ROOT()),其中n是列表中值的数量 nTH_ROOT(PRODUCT()),其中n是列表中值的数量 我可以find的计算加权几何平均值的参考文献都使用了最后两种方法。 在我有限的经验中,这些方法几乎总是在试图在很长的列表中运行时导致错误。 对于115k的列表,方法2计算一个不规则的中间数字。 Excel是不能够取得数字的115000根,我不知道是否像Python或R的东西可以做到这一点。 无论如何,我的目标是根据上面的方法1提出一个加权几何平均公式。 我build议的解决scheme如下。 一个注意:我主要是在Excel中这样做,尽pipe我先计算了Python中列表中每个值的日志。 我的问题不是关于excel的编程,更多的是关于加权几何平均数的后面的math。 我提出的Excel,因为我build议的解决scheme下面是基于使用Excel数据透视表输出根据权重分组列表值。 我最终的输出需要在excel中,所以excel友好的解决scheme是首选。 它的testing出色,但我想要求确认。 加权几何平均数= EXP( AVERAGE ( LN ( <list values where weight is 1> ) ) * ( 1 / 6 ) + AVERAGE ( LN ( <list values where weight is 2> ) ) * ( 2 / […]

在Apachi POI Java中将大型数据转换为Excel

我正在处理一个大的CSV (〜200 MB的文本文件) ,我想转换成Excel工作表,但工作簿变得如此消耗内存,在这个过程中,Java会抛出“ 超出GC上限 ”! 我检查了代码,如果我生成虚拟参考,但我认为不存在。 在我看来,这些来自Apachi – POI的库调用可能会产生一些引用,使垃圾收集器如此繁忙。 我的问题是,如果我可以通过像文本文件这样的块来将工作簿写入文件块,如附加到文本文件而不将其带入内存。 有没有解决scheme,或者我在这里错过了什么? GC在下面的代码中抛出exception: private void updateExcelWorkbook(String input, String fileName, Workbook workbook) { try { Sheet sheet = workbook.createSheet(fileName); // Create a new font and alter it. Font font = workbook.createFont(); font.setFontHeightInPoints((short) 11); font.setBold(true); // Fonts are set into a style so create a new one […]

代码重载内存或不会编译VBA

试图编写一个macros来根据string的长度在文本string中的特定点处插入连字符,或者在所述点之后删除所有文本。 即 – 如果是6个字符,则在char 4 + 5之间插入连字符或在char 4之后删除所有文本 – 如果是7个字符,则在char 5 + 6之间插入连字符或删除char 5之后的所有文本 理想情况下,我希望能够截断string在这一点,而不是连字符的文本,但我不能让我的脑袋周围如何使其工作,所以我决定连字符,然后运行一个查找和replace' – *'删除不需要的字符。 可以得到这个小样本集100-300单元的工作,但我需要的代码能够通过与70,000 +单元格的工作簿。 我试过调整代码来停止内存问题,但现在我似乎无法得到它的工作。 Sub Postcodesplitter() Dim b As Range, w As Long, c As Range, x As Long, d As Range, y As Long For Each b In Selection w = Len(b) If w = 8 And InStr(b, […]

从MacVim删除数据列

我从一个网站下载了地理数据,并将其设置在文本文件中。 当我复制粘贴这些文件到Excel中,他们出现在每个单独的列: 我对excel的主要问题是对大数据很不好。 我的数据文件是100 + MB。 所以我使用MacVim。 MacVim显示如下所示的数据: 如何使用MacVim删除甚至select一列数据。 有没有一种方法来区分使用MacVim的方式与Excel区别他们的方式? 谢谢你的帮助,非常感谢

读/写大量的数据

我正在将大量数据从一个电子表格复制到工作簿中的其他160个电子表格。 目前,Excel(2013)遇到错误,因为它没有足够的资源来完成操作。 我的目标是将表格4中的范围V13:XI1150中的数据复制到表格5-160中。 我尝试分解代码存储的范围(参见variablesrng1和rng2),以及将10个工作表组合在一起(尽pipe我认识到这一点效果不大)。 有没有办法简化我在这里工作的代码,所以我可以成功地复制这些数据? 提前致谢。 Sub copypaste() '''''''''Globals''''''''''''' Dim j As Long 'Loop control variable Dim sheetstart As Integer 'starting sheet variable Dim sheetend As Integer 'ending sheet variable Dim rng1 As Range 'range to copy Dim rng2 As Range 'Second range Application.Calculation = xlCalculationManual 'Sets manual calculation Application.ScreenUpdating = False 'Turns off screen […]

MemoryError使用openpyxl写入500k +行

我有一个脚本,它使用openpyxl打开一个模板xlsx文件,然后跨越六个工作表中的每一个,添加脚本中早先生成的列表中的一些数据,并更改单元格的格式。 我遇到的问题是,在一张纸上,我需要写9列和500k +行,这给我一个MemoryError 。 Traceback (most recent call last): File "C:\python27\labs\labs\sqrdist\new_main_ui.py", line 667, in request_and_send_reports x = sqr_pull.main() File "C:\Python27\lib\site-packages\memory_profiler-0.32-py2.7.egg\memory_profiler.py", line 801, in wrapper val = prof(func)(*args, **kwargs) File "C:\Python27\lib\site-packages\memory_profiler-0.32-py2.7.egg\memory_profiler.py", line 445, in f result = func(*args, **kwds) File "C:\python27\labs\labs\sqrdist\sqr_pull.py", line 327, in main os.remove(temp_attach_filepath) File "build\bdist.win32\egg\openpyxl\workbook\workbook.py", line 281, in save File "build\bdist.win32\egg\openpyxl\writer\excel.py", line 214, […]

如何在每半小时后取得最近的date

我有一个非常大的数据集,看起来像这样 Column A Date 2016-02-29 15:59:59.674 2016-02-29 15:59:59.695 2016-02-29 15:59:59.716 2016-02-29 15:59:59.752 2016-02-29 15:59:59.804 2016-02-29 15:59:59.869 2016-02-29 15:59:59.888 2016-02-29 15:59:59.941 2016-02-29 16:00:00.081 <– get closest date since .081 < .941 2016-02-29 16:00:00.168 2016-02-29 16:00:00.189 2016-02-29 16:00:00.198 2016-02-29 16:00:00.247 2016-02-29 16:00:00.311 2016-02-29 16:00:00.345 2016-02-29 16:00:00.357 and for the other half an hour 2016-02-29 16:29:58.628 2016-02-29 16:29:58.639 […]

excel限制行限制。 我还可以创build一个大于限制的文件吗?

我看到工作表中的行数限制为1,048,576。 这只是一个优秀的东西? 例如,我可以创build一个csv文件,有更多的行说500万行? 我知道我不能用excel打开它,但我仍然可以拥有该文件并以其他方式访问它(如C ++)。 我认为这是可行的,因为CSV不一定是一个擅长的事情吗? 提前致谢。

Excel VBA:数据处理macros运行时间越来越慢越慢

我正在使用32位Excel 2010中的QuantlibXl库分析大量的历史财务数据。 我的典型工作表包含长达一百万行的经验数据的长列。 我的macros通常需要遍历从顶部到底部的每一行,并执行一些Quantlib典型的财务分析,比如重估安全性,这要求在每一行都创build一个Quantlib对象。 分析的东西包含在单元格中作为公式。 所以在开始的时候,我试着select顶部有公式的单元格,然后把右下angular拖到表单底部来填充它们。 已经在这里,处理时间与所涉及的行数呈指数增长。 所以我想我必须写一个macros,一次处理更小的行块。 macros基本上是照顾一次只填充100行的第一行。 这和一些优化(下面解释)肯定会大大提高速度,但处理时间仍然呈指数级增长。 问题是,尽可能多的我试图优化我的macros,他们越来越慢,他们跑得越来越慢。 我跟踪状态栏中的处理行,例如,如果在启动macros时每分钟处理2000行(计算相当复杂),则在整个运行期间其速度会不断下降,例如每个行只有100行60,000行之后。 在那个节奏下,它永远不会看到工作表的结尾。 所以实际上,在某个时候,最好是放弃它,然后从停止的地方重新开始。 我也分割了这些文件,让他们同时运行在不同的计算机上,这在pipe理上是一个痛苦的屁股。 我已经实现了大量的优化: – 屏幕更新和自动计算closures。 – 我只对正在处理的行进行计算。 – 垃圾收集:Quantlib对象在不再使用后立即被删除。 我以为是他们吃了所有的自由记忆导致了减速。 – 我到目前为止已经将相关结果(单元格)写入文本文件,并删除不再需要的行。 再说一遍,这个macros在开始的时候速度非常快,如果像70,000行之后再没有变得更慢的话,它会在几个小时内运行到最后。 事实上,我曾希望在运行时增加速度,因为行被删除,表单缩小,但是不会发生。 所以我只停留在六万行的过程中,再次启动它,但它却令人厌烦。 我想弄清楚是什么原因导致Excel的行为不能线性处理大量的数据,需要重新启动,以及如何避免它。 如果有人遇到类似的麻烦,并find解决办法,我很高兴听到这个消息。 编辑:每当我停止进程再次加速通过重新开始,我注意到,我必须重新启动Excel,否则恢复就像以前一样慢。 我目前的假设是在某些时候数据没有被正确清理。 如果是这样的话,你的解决scheme会给我带来更多。 Quantlib库有一个方法来查看有多less对象仍然驻留在称为ohRepositoryObjectCount()的内存中。 在每次计算之后,我都会调用ohRepositoryDe​​leteAllObjects()函数,并根据其他方法有效删除它们,但可能仍然有一些泄漏未被发现。 编辑2:我现在确信存在内存泄漏,因为在长时间批处理后,任务pipe理器显示3或4个Excel进程占用大约1.5 GB的内存。 当退出Excel,它崩溃(与“Excel不再工作了”的消息),并进程持续,所以我不得不杀死他们手动。

将Excel表格数据传输到SQL 2008R2的最快方法

有没有人知道最快的方式从SQL 2008中获取数据和Excel表(VBA数组)到一个表, 而不使用外部工具(即BCP)? 请记住我的数据集通常是6500-15000行,大约150-250列; 最终我在一个自动化的VBA批处理脚本中传输了大约20-150个。 我已经尝试了从Excel表格(VBA)中获取大量数据到SQL 2008的几种方法。我已经列出了以下内容: 方法1.将表传递到VBA数组并发送到存储过程(ADO) – 发送到SQL是SLOW 方法2.创build断开的RecordSet加载它,然后同步。 – 发送到SQL非常慢 方法3.将表放入VBA数组,循环数组并循环(使用分隔符),然后发送到存储过程。 – 发送到SQL SLOW,但比方法1或2快。 方法4.将表放到VBA数组中,循环数组并循环(使用分隔符),然后用ADOlogging集.addnew命令放置每一行。 – 发送到SQL非常快(比方法1-3快大约20倍),但是现在我需要使用单独的过程来拆分这些数据,这将增加显着的等待时间。 方法5.将表放在VBA数组中,序列化成XML,作为VARCHAR发送到存储过程,并在存储过程中指定XML。 – 发送到SQL INCREDIBLY SLOW(比方法1或2慢大约100倍) 我错过了什么?