【发布时间】:2016-12-31 01:32:25
【问题描述】:
我需要分析一个巨大的 CSV 文件(超过 57,000 行和 50 列)。
编辑:大家好,感谢您的回答和 cmets,但我仍然对如何在 Ruby 中执行此操作感到非常困惑,而且我不知道如何使用 MySQL。我将尝试更具体:
CSV 文件:
CSV on Storm Data Details for 2015
CSV on Storm Data Details for 2000
问题: 在问题开始之前,对于所有答案,排除县/教区、区域或海洋名称以字母 A、B 或 C 开头的所有行。
- 查找 2015 年华盛顿州发生风暴事件最多的月份。该月有多少天没有暴风雨天气?
- 2000 年美国东部标准时间晚上 8 点到早上 8 点之间发生了多少次影响树木的风暴?
- 哪一年(2000 年或 2015 年)风暴在 13 个原始殖民地的边界内产生了更高的货币影响?
问题:
1) 我能够使用 Excel 中的过滤器确定华盛顿最“雷暴风”事件发生在 7 月(6 个条目),并且有 27 天没有暴风雨天气。但是,当我尝试在 Spotfire 中检查我的工作时,我得到了完全不同的结果。 (5 月份有 7 个条目,5 月份有 28 天无风暴天气。Excel 仅在 5 月份发现了两次雷暴风事件。)您知道导致这种差异的原因是什么吗?
2) 有两列可能会提到对树木的损害:Event_Narrative 和 Episode_Narrative。是否可以在两列中搜索“树”并将电子表格过滤到仅这些结果?在 Excel 中,多列过滤显然是不可能的。我还需要找到一种方法在结果中省略“street”一词(因为它包含“tree”一词)。
我想出的时间范围的方法是仅过滤到 EST 和 AST 结果,然后将 Begin_Time 过滤到 2000 到 2359 和 0 到 759 并重复这些范围以过滤 End_Time。这似乎有效。
3) 我能够将州筛选为特拉华州、宾夕法尼亚州、新泽西州、乔治亚州、康涅狄格州、马萨诸塞州、马里兰州、南卡罗来纳州、新罕布什尔州、弗吉尼亚州、纽约州、北卡罗来纳州和罗德岛州。将 Y 列和 Z 列(Damage_Property,Damage_Crops)中的所有值相加并在两年之间进行比较似乎是一项简单的任务,但是这些值是以“32.79K”的形式编写的,我不知道如何进行添加方程以该格式工作或将值转换为整数。
另外,问题是要问殖民地的原始领土,这与那些国家现在占领的领土不同。您知道解决此问题的方法吗?就算有时间查了每一个列出的城市,网上好像也没有原来13个殖民地城市的数据库,就算有,现在城市的名字也可能不一样了。
我正在学习 Ruby,有人建议我尝试使用 Ruby CSV 库将数据放入数组中。我看过一些描述如何做到这一点的教程,但我仍然不明白如何将数据过滤到我需要的数据。
谁能帮忙?
谢谢!
【问题讨论】:
-
您是否考虑将数据加载到数据库中?感觉 SQL 可能是比 Ruby 和大数组更好的选择。
-
向我们展示你的尝试。
-
为什么只能在 Excel 中筛选一件事?你有一些限制版本的 Excel 吗?
标签: ruby excel csv filtering spreadsheet