【问题标题】:Parsing and extracting data from a file in python在python中解析和提取文件中的数据
【发布时间】:2013-04-23 10:06:42
【问题描述】:

我已经搜索了很多关于这个主题的内容,并且到目前为止已经学到了很多东西。我还是 python 新手,我知道有一种简单的方法可以使用 csv 模块解析数据。所以,我的数据看起来像这样:

Date        MaxT  MinT  Pcpn  Snow  Snwg  
01/01/1948    34    13  0.00   0.0     T  
01/02/1948    46    29  0.01   0.0     T  
01/03/1948    38    16     T     T     T  
01/04/1948    38    15  0.00   0.0     T  
01/05/1948    44    15  0.00   0.0     T  
01/06/1948    42    23  0.00   0.0     T 

这是一年中每一天的每日天气数据,直到记录结束。大多数时候,记录的结尾是现在。我可以解析出来并从中提取数据,但我的主要问题和问题原因是如何根据特定日期提取和保存数据?

例如,如果我想要记录中所有年份中 4 月 25 日发生的最高温度,以及它发生的年份,我该如何准确地隔离特定日期并仅使用 max() 或 min()那个日期,不是一年中的所有日子?我希望我的程序搜索一年中的每个日期,并找到每个日期的最大值和最小值以及它发生的年份,并将它们保存以备后用。

最终,我想获得每个位置的最高和最低 maxT 和 minT(最高 maxT、最低 minT、最高 minT、最低 minT)、每个值出现的年份,并将特定日期组合在一起。这样我就有一个包含一年中所有 365 天的文件,其中包含位置和每个发生年份的 4 个极值。我可以处理将位置放在一起并制作新文件,但现在,我需要弄清楚如何获取一年中每一天的极端情况。

当一切都说完了,我的输出标题应该是这样的,并且一年中的每一天都有一个文件:

Location HighMax year LowMax year HighMin year LowMin year

【问题讨论】:

  • Pandas 模块就是你想要的
  • 为什么不能使用数据库?看来这是满足您要求的不错选择。
  • 我同意@thavan。或者,更简单的是,您可以将数据导入电子表格应用程序。
  • 但是我有数百个地点拥有长达 125 年的数据,我想找到每个地点的值,然后将结果合并到 366 个不同的文件中,以获取每日极值。跨度>

标签: python parsing csv


【解决方案1】:

试试pandas

test.csv:

Date,MaxT,MinT,Pcpn,Snow,Snwg
01/01/1948,34,13,0.00,0.0,T
01/02/1948,46,29,0.01,0.0,T
01/03/1948,38,16,T,T,T
01/04/1948,38,15,0.00,0.0,T
01/05/1948,44,15,0.00,0.0,T
01/06/1948,42,23,0.00,0.0,T

读取csv,设置Date为索引

In [1]: import pandas as pd
In [4]: df = pd.read_csv('test.csv').set_index('Date')

In [5]: df
Out[5]: 
            MaxT  MinT  Pcpn Snow Snwg
Date                                  
01/01/1948    34    13  0.00  0.0    T   
01/02/1948    46    29  0.01  0.0    T   
01/03/1948    38    16     T    T    T   
01/04/1948    38    15  0.00  0.0    T   
01/05/1948    44    15  0.00  0.0    T   
01/06/1948    42    23  0.00  0.0    T   

Pandas 提供了一个很好的结构 DataFrame 来操作您的数据。例如,要获取最大值MaxT

In [9]: index = df['MaxT'].idxmax() 
In [11]: index, df['MaxT'][index]
Out[11]: ('01/02/1948', 46) 

您应该需要一些时间来学习pandas。 如果您的工作在这类数据上非常可靠,那么值得学习。

【讨论】:

  • 您可以修改您的示例以使用 OP 的分隔符。
猜你喜欢
  • 1970-01-01
  • 2020-03-08
  • 2017-02-06
  • 2015-02-14
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
相关资源
最近更新 更多