我有大约8年的日常温度数据,我想首先转换为每月,然后转换为季节性数据(下面的示例)
X date maxtp
1 20-Aug-07 19.1
2 21-Aug-07 17.6
3 22-Aug-07 21.8
4 23-Aug-07 20.0
5 24-Aug-07 22.4
6 25-Aug-07 21.2
7 26-Aug-07 19.3
8 27-Aug-07 17.5
9 28-Aug-07 18.9
10 29-Aug-07 18.3
11 30-Aug-07 19.5
基本上我希望观察到的系列分为四个子系列,包含同一季节的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"
答案 0 :(得分:2)
首先定义月份到
的映射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)
}
现在列出一份清单(每个季节一个清单)
readings_by_season = [[],[],[],[]]
现在你需要打开你的文件,并在将每个值放入其季节时阅读它
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)
现在你应该填充readings_by_season
winter,spring,summer,fall = readings_by_season
print winter
(这是一个过于简单化,在月份开始时均匀分裂季节...使用月中发生的休息会变得有点复杂)
答案 1 :(得分:-2)
通常您要做的就是将数据转换为您实际可以使用的数据,因此请将其存储在数据库中,存储在您可以访问的文件中或使用现在的任何内容。基本上创建一个数据模型。
接下来,您希望以某种方式呈现您拥有的已处理数据,那么您可能想要gui或某些文本(数据库,终端或文件?)
根据您想要呈现数据的方式,您需要一些逻辑来获取数据,处理数据然后输出数据。
我认为在这种情况下你的问题不是很具体,似乎你不知道从哪里开始。我希望你继续这个答案,接下来的步骤只需要一些谷歌搜索。