gpt4 book ai didi

ruby - 如何在 Excel 或 Ruby 中过滤 CSV 文件中的数据?

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:15 25 4
gpt4 key购买 nike

我有一个巨大的 CSV 文件(超过 57,000 行和 50 列)需要分析。

编辑:大家好,感谢您的回答和评论,但我仍然对如何在 Ruby 中执行此操作感到困惑,而且我不知道如何使用 MySQL。我将尝试更具体:

CSV 文件:

CSV on Storm Data Details for 2015

CSV on Storm Data Details for 2000

问题:在问题开始之前,对于所有答案,排除县/教区、区域或海洋名称以字母 A、B 或 C 开头的所有行。

  1. 找出 2015 年华盛顿州发生 Storm 事件最多的月份。该月有多少天无 Storm 天气?
  2. 2000 年美国东部时间晚上 8 点到早上 8 点之间发生了多少次影响树木的 Storm ?
  3. Storm 在哪一年(2000 年或 2015 年)对 13 个原始殖民地边界内的货币产生了更大的影响?

问题:

1) 我能够使用 Excel 中的筛选器确定华盛顿最多的“雷暴风”事件发生在 7 月(6 个条目),并且有 27 天没有 Storm 天气。然而,当我试图在 Spotfire 中检查我的工作时,我得到了完全不同的结果。 (5 月有 7 个条目,5 月有 28 天无 Storm 天气。Excel 仅在 5 月发现了两个雷暴风事件。)您知道导致这种差异的原因吗?

2) 有两列可能会提到对树木的破坏:Event_Narrative 和 Episode_Narrative。是否可以在两列中搜索“树”并将电子表格过滤为仅这些结果?在 Excel 中显然不可能进行多列过滤。我还需要找到一种方法来在结果中省略“街道”一词(因为它包含“树”一词)。

我为时间范围想出的方法是只筛选 EST 和 AST 结果,然后将 Begin_Time 筛选为 2000 到 2359 和 0 到 759,然后重复这些范围以筛选 End_Time。这似乎有效。

3) 我能够筛选出特拉华州、宾夕法尼亚州、新泽西州、佐治亚州、康涅狄格州、马萨诸塞州、马里兰州、南卡罗来纳州、新罕布什尔州、弗吉尼亚州、纽约州、北卡罗来纳州和罗德岛州。将 Y 列和 Z 列(Damage_Property、Damage_Crops)中的所有值相加并在两年之间进行比较似乎是一项简单的任务,但这些值是以“32.79K”的形式编写的,我无法弄清楚如何进行添加等式以该格式工作或将值转换为整数。

此外,问题是要求殖民地的原始领土,这与这些国家现在占据的领土不同。你知道解决这个问题的方法吗?就算我有空去查每一个列出的城市,网上好像也没有原来13个殖民地的城市数据库,即使有,现在城市的名字也可能不一样了。


我正在学习 Ruby,有些人建议我尝试使用 Ruby CSV 库将数据放入数组中。我看过一些描述如何做到这一点的教程,但我仍然不明白如何将数据过滤到我需要的。

有人能帮忙吗?

谢谢!

最佳答案

我下载了数据,这样我就可以玩了。在 Ruby 中,您可以很容易地获得记录数。我刚刚在 irb 中做了:

require 'csv'

details = []
CSV.foreach("StormEvents_details-ftp_v1.0_d2015_c20160818.csv") do |row|
details << row
end

results = details.select do |field|
[field[-2], field[-3]].any? { |el| el[/\btree\b/i] } && field[8] == "CALIFORNIA"
end

results.count
=> 125

我只是使用数组索引。您可以将内容压缩在一起并进行散列以提高可读性。

关于ruby - 如何在 Excel 或 Ruby 中过滤 CSV 文件中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39114419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com