Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R或Python将每日温度数据转换为每月和季节数据_Python_R - Fatal编程技术网

使用R或Python将每日温度数据转换为每月和季节数据

使用R或Python将每日温度数据转换为每月和季节数据,python,r,Python,R,我有大约8年的每日温度数据,我想先将其转换为每月数据,然后再转换为季节数据(以下示例) 基本上,我希望观察到的序列被分为四个子序列,包含同一季节(冬季、春季、夏季、秋季)的3个月区块 每个区块应包括每日温度值(我不想要月平均值等) 我真的很感谢你的帮助,因为我已经被困了很长一段时间了 编辑:使用R: data$date <- as.Date(data$date, format = "%d-%b-%y") #splitting into new variables year = as.num

我有大约8年的每日温度数据,我想先将其转换为每月数据,然后再转换为季节数据(以下示例)

基本上,我希望观察到的序列被分为四个子序列,包含同一季节(冬季、春季、夏季、秋季)的3个月区块

每个区块应包括每日温度值(我不想要月平均值等)

我真的很感谢你的帮助,因为我已经被困了很长一段时间了

编辑:使用R:

data$date <- as.Date(data$date, format = "%d-%b-%y")
#splitting into new variables
year = as.numeric(format(data$date,"%Y"))
month = as.numeric(format(data$date,"%m"))
day = as.numeric(format(data$date,"%d"))

#new dataframe containing these variables and temp data
data <- data.frame(day,month,year,data$maxtp)

#Add 2 extra colums for Season.Year and Season
data <- cbind(data,NA,NA) # NA,NA adds two blank columns to existing csv file
colnames(data) <- c("Day","Month","Year","maxtp","Season.Year","Season") # names them

# Season.Year
data[ ,5] <- ifelse(data[,2] == 12, data[,3]+1, data[,3])    # in column 5, function says: if month = 12 (i.e. dec) then put year + 1, if not keep year

#defines months into seasons, W,SP,SU,A. puts output on column 6
data[,6][data[,2]=="12"|data[,2]=="1"|data[,2]=="2"] <- "W"
data[,6][data[,2]=="3"|data[,2]=="4"|data[,2]=="5"] <- "SP"
data[,6][data[,2]=="6"|data[,2]=="7"|data[,2]=="8"] <- "SU"
data[,6][data[,2]=="9"|data[,2]=="10"|data[,2]=="11"] <- "A"

data$date通常,您要做的是将数据转换为您可以实际使用的数据,因此将其存储在数据库中,存储在您可以访问的文件中,或者使用它现在所在的任何内容。基本上创建一个数据模型

接下来,您希望以某种方式显示已处理的数据,因此可能需要一个gui或某个地方的一些文本(数据库、终端或文件?)

根据您想要显示数据的方式,您需要一些逻辑来获取数据、处理数据,然后输出数据


我认为在这种情况下,你的问题不是很具体,你似乎不知道从哪里开始。我希望你能继续回答这个问题,接下来的步骤只需要几次谷歌搜索。

首先定义一个月到月的映射

months2season = {
       12:0,1:0,2:0, #Dec/Jan/Feb are all winter (season 0)
       3:1,4:1,5:1, #Mar/Apr/May are all spring (season 1)
       6:2,7:2,8:2, #Jun/Jul/Aug are all summer (season 2)
       9:3,10:3,11:3 #sept/oct/nov are all fall (season 3)
}
现在列出清单(每个季度一份清单)

现在,您需要打开文件并在将每个值放入其季节时读取它

import dateutil.parser as p
fh = open("my_text_file.csv")
headers = next(fh).split() #skip the header line
for data in fh:
    data = dict(zip(headers,data.split()))
    data["date"] =  p.parse(data["date"])
    #put it in the right bin
    season_id = months2seasons[data["date"].month]
    readings_by_season[season_id].append(data)
现在,您应该按季节填充
读数

winter,spring,summer,fall = readings_by_season
print winter

(这是一种过于简单的划分季节的方法,在月初将季节平均划分……使用月中的休息时间会变得更复杂一些)

你一直在坚持什么?@Elizion我尝试过使用这种方法,它只给出平均值,实际上并没有划分系列。答案非常模糊。远不止含糊不清。对我来说,这似乎符合这个问题。这个问题显然很糟糕,因为它不是特定于代码的,但它是关于将温度数据与它们的每日值分离成季节数据块的问题。那么基本上你的答案是1。将数据放入可用的表单2中。找到逻辑来展示你的数据3。展示你的数据4。使用谷歌搜索。这很难简单。我想做的是给@Pad一些句柄。对我来说,将它们分开似乎不是问题,而是如何将解决方案转化为代码。引入一些关注点的分离,更好地定义情况和目标,这是唯一可以做的事情,如果你所拥有的只是这里提出的问题。
import dateutil.parser as p
fh = open("my_text_file.csv")
headers = next(fh).split() #skip the header line
for data in fh:
    data = dict(zip(headers,data.split()))
    data["date"] =  p.parse(data["date"])
    #put it in the right bin
    season_id = months2seasons[data["date"].month]
    readings_by_season[season_id].append(data)
winter,spring,summer,fall = readings_by_season
print winter