我目前正在编写一个代码,其中包含一个.csv文件,如下所示:
724070 93730 19800101 0 330 1.5 22000 -1.7 -5 1013.6 78
724070 93730 19800101 100 230 1.5 22000 -2.7 -5.5 1013.7 81
724070 93730 19800101 200 0 0 22000 -3.8 -4.9 1013.9 92
724070 93730 19800101 300 340 1.5 22000 -5.6 -6.1 1013.6 96
724070 93730 19800101 400 0 0 22000 -6.6 -7.7 1013.6 92
724070 93730 19800101 500 330 1.5 22000 -7.1 -8.8 1013.6 88
如果前两列是标识符,则第三列是日期,第四列是小时,最后七列是感兴趣的值。我的最终目标是为一年中的每一天提供最后七列的每日平均值。
我试图通过仅操作数组中的数据来解决问题,但我确信要走大熊猫的路线,所以我的代码相当新。到目前为止,我有:
import pandas as pd
csv = raw_input('What is the name of your file? ')
cols = ['USAF','NCDC','DATE','HR','WND DIR','WND SPD', 'SKY CVR','TMPC','TMDC','PRES','RH']
data = pd.read_csv(csv, header = None, parse_dates = [['DATE', 'HR']], names = cols)
因为我刚刚学习大熊猫,所以我很难离开这里,我会感激一些帮助 - 我看到的其他问题还没有帮助。
1st).csv文件中有三个唯一的“USAF”标识符,有什么方法可以将这个数据帧分成三个数据帧,这些数据帧由USAF专栏确定?
第二)大熊猫很难识别我的日期和时间格式,这不允许我进一步计算平均值。我该如何缓解这种情况?
提前致谢
答案 0 :(得分:2)
通过观察创建平均值非常简单。请注意,这不是特定于日期的概念,您基本上希望使用某些值作为组标识符创建平均值。标准代码是
df = pd.DataFrame(data)
means = df.groupby('DATE').mean()
如果您想根据名为“A”的列的三个值“a1”,“a2”,“a3”分隔您的数据,一种方法是
data1 = df[df['A'] == 'a1']
data2 = df[df['A'] == 'a2']
data3 = df[df['A'] == 'a3']
你可以在任何数据帧上执行此操作 - 也就是我之前称为means
的数据帧。但是,如果您要对不同的stations
执行的计算相同,则分隔数据集没有意义。我宁愿做的是将数据集保持在一起,完成所有操作,并且在查看结果和/或绘图之前不要拆分。那是更清洁,imo。
至于将列标识为日期,我相信这是一个经常在这里被提及(和回答)的问题。