Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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
使用Python或R在CSV中标识和写入丢失的小时数据的丢失时间戳的代码_Python_R_Timestamp - Fatal编程技术网

使用Python或R在CSV中标识和写入丢失的小时数据的丢失时间戳的代码

使用Python或R在CSV中标识和写入丢失的小时数据的丢失时间戳的代码,python,r,timestamp,Python,R,Timestamp,我有一些使用Python和R的经验。我面临的问题是,对于各个站点丢失的每小时数据,时间戳也丢失了。由于文件很大(从2017年到2020年),手动操作将非常繁琐。我正在尝试编写一个代码,它将在CSV文件中运行,为丢失的数据识别丢失的时间戳,并插入带有NA或blank作为值的时间戳。有人能帮我吗?我已经附上了原始数据的样本图片,以及我希望它是怎样的。我将非常感谢任何帮助 在R中,您可以使用dplyr::complete()实现此目的: library(tidyverse) #includes dpl

我有一些使用Python和R的经验。我面临的问题是,对于各个站点丢失的每小时数据,时间戳也丢失了。由于文件很大(从2017年到2020年),手动操作将非常繁琐。我正在尝试编写一个代码,它将在CSV文件中运行,为丢失的数据识别丢失的时间戳,并插入带有NA或blank作为值的时间戳。有人能帮我吗?我已经附上了原始数据的样本图片,以及我希望它是怎样的。我将非常感谢任何帮助


在R中,您可以使用
dplyr::complete()
实现此目的:

library(tidyverse) #includes dplyr

# generate dummy full dataset
full_data <- tibble(Date = as.Date(1:24),
              Hour = 1:24) %>%
  expand(Date, Hour) %>%
  mutate(Acc = rnorm(nrow(.)))
full_data
# A tibble: 576 x 3
#   Date        Hour     Acc
#   <date>     <int>   <dbl>
# 1 1970-01-02     1  0.453 
# 2 1970-01-02     2 -0.0518
# 3 1970-01-02     3  0.882 
# 4 1970-01-02     4 -0.386 
# 5 1970-01-02     5 -0.284 
# 6 1970-01-02     6  0.454 
# 7 1970-01-02     7 -0.754 
# 8 1970-01-02     8 -0.213 
# 9 1970-01-02     9  0.610 
# 10 1970-01-02    10  1.29  

# remove some timestamps that are missing
data_with_missing <- full_data %>%
  slice_sample(n=200)

data_with_missing 
# A tibble: 200 x 3
# Date        Hour      Acc
# <date>     <int>    <dbl>
#   1 1970-01-04     4  0.683  
# 2 1970-01-02     6  0.454  
# 3 1970-01-24    10 -1.67   
# 4 1970-01-12     6  1.12   
# 5 1970-01-13     5 -0.786  
# 6 1970-01-04     3 -2.03   
# 7 1970-01-11    22  1.02   
# 8 1970-01-11    15  1.11   
# 9 1970-01-18    22  0.688  
# 10 1970-01-24    14 -0.00612
# ... with 190 more rows

# Now use complete to fill in the missing data
recompleted_data <- data_with_missing %>%
  complete(Date, Hour)

recompleted_data 

# A tibble: 576 x 3
# Date        Hour    Acc
# <date>     <int>  <dbl>
#   1 1970-01-02     1 NA    
# 2 1970-01-02     2 NA    
# 3 1970-01-02     3 NA    
# 4 1970-01-02     4 -0.386
# 5 1970-01-02     5 -0.284
# 6 1970-01-02     6  0.454
# 7 1970-01-02     7 -0.754
# 8 1970-01-02     8 -0.213
# 9 1970-01-02     9 NA    
# 10 1970-01-02    10 NA    
# ... with 566 more rows

# Check that we have the same combinations as in the full dataset
all.equal(full_data[,1:2], recompleted_data[,1:2])
# TRUE
library(tidyverse)#包括dplyr
#生成虚拟完整数据集
完整数据%
展开(日期,小时)%>%
突变(Acc=rnorm(nrow())
完整数据
#一个tibble:576x3
#日期小时Acc
#           
# 1 1970-01-02     1  0.453 
# 2 1970-01-02     2 -0.0518
# 3 1970-01-02     3  0.882 
# 4 1970-01-02     4 -0.386 
# 5 1970-01-02     5 -0.284 
# 6 1970-01-02     6  0.454 
# 7 1970-01-02     7 -0.754 
# 8 1970-01-02     8 -0.213 
# 9 1970-01-02     9  0.610 
# 10 1970-01-02    10  1.29  
#删除丢失的一些时间戳
缺少%u的数据\u
切片样本(n=200)
数据_,缺少_
#一个tibble:200x3
#日期小时Acc
#          
#   1 1970-01-04     4  0.683  
# 2 1970-01-02     6  0.454  
# 3 1970-01-24    10 -1.67   
# 4 1970-01-12     6  1.12   
# 5 1970-01-13     5 -0.786  
# 6 1970-01-04     3 -2.03   
# 7 1970-01-11    22  1.02   
# 8 1970-01-11    15  1.11   
# 9 1970-01-18    22  0.688  
# 10 1970-01-24    14 -0.00612
# ... 还有190行
#现在使用complete来填充缺少的数据
重新完成的_数据%
完成(日期、小时)
重新完成的_数据
#一个tibble:576x3
#日期小时Acc
#        
#1 1970-01-02 1 NA
#2 1970-01-02 2 NA
#3 1970-01-02 3 NA
# 4 1970-01-02     4 -0.386
# 5 1970-01-02     5 -0.284
# 6 1970-01-02     6  0.454
# 7 1970-01-02     7 -0.754
# 8 1970-01-02     8 -0.213
#9 1970-01-02 9 NA
#10 1970-01-02 10北美
# ... 还有566行
#检查我们的组合是否与完整数据集中的组合相同
全部相等(完整数据[,1:2],重新完成数据[,1:2])
#真的

在R中,您可以使用
dplyr::complete()

library(tidyverse) #includes dplyr

# generate dummy full dataset
full_data <- tibble(Date = as.Date(1:24),
              Hour = 1:24) %>%
  expand(Date, Hour) %>%
  mutate(Acc = rnorm(nrow(.)))
full_data
# A tibble: 576 x 3
#   Date        Hour     Acc
#   <date>     <int>   <dbl>
# 1 1970-01-02     1  0.453 
# 2 1970-01-02     2 -0.0518
# 3 1970-01-02     3  0.882 
# 4 1970-01-02     4 -0.386 
# 5 1970-01-02     5 -0.284 
# 6 1970-01-02     6  0.454 
# 7 1970-01-02     7 -0.754 
# 8 1970-01-02     8 -0.213 
# 9 1970-01-02     9  0.610 
# 10 1970-01-02    10  1.29  

# remove some timestamps that are missing
data_with_missing <- full_data %>%
  slice_sample(n=200)

data_with_missing 
# A tibble: 200 x 3
# Date        Hour      Acc
# <date>     <int>    <dbl>
#   1 1970-01-04     4  0.683  
# 2 1970-01-02     6  0.454  
# 3 1970-01-24    10 -1.67   
# 4 1970-01-12     6  1.12   
# 5 1970-01-13     5 -0.786  
# 6 1970-01-04     3 -2.03   
# 7 1970-01-11    22  1.02   
# 8 1970-01-11    15  1.11   
# 9 1970-01-18    22  0.688  
# 10 1970-01-24    14 -0.00612
# ... with 190 more rows

# Now use complete to fill in the missing data
recompleted_data <- data_with_missing %>%
  complete(Date, Hour)

recompleted_data 

# A tibble: 576 x 3
# Date        Hour    Acc
# <date>     <int>  <dbl>
#   1 1970-01-02     1 NA    
# 2 1970-01-02     2 NA    
# 3 1970-01-02     3 NA    
# 4 1970-01-02     4 -0.386
# 5 1970-01-02     5 -0.284
# 6 1970-01-02     6  0.454
# 7 1970-01-02     7 -0.754
# 8 1970-01-02     8 -0.213
# 9 1970-01-02     9 NA    
# 10 1970-01-02    10 NA    
# ... with 566 more rows

# Check that we have the same combinations as in the full dataset
all.equal(full_data[,1:2], recompleted_data[,1:2])
# TRUE
library(tidyverse)#包括dplyr
#生成虚拟完整数据集
完整数据%
展开(日期,小时)%>%
突变(Acc=rnorm(nrow())
完整数据
#一个tibble:576x3
#日期小时Acc
#           
# 1 1970-01-02     1  0.453 
# 2 1970-01-02     2 -0.0518
# 3 1970-01-02     3  0.882 
# 4 1970-01-02     4 -0.386 
# 5 1970-01-02     5 -0.284 
# 6 1970-01-02     6  0.454 
# 7 1970-01-02     7 -0.754 
# 8 1970-01-02     8 -0.213 
# 9 1970-01-02     9  0.610 
# 10 1970-01-02    10  1.29  
#删除丢失的一些时间戳
缺少%u的数据\u
切片样本(n=200)
数据_,缺少_
#一个tibble:200x3
#日期小时Acc
#          
#   1 1970-01-04     4  0.683  
# 2 1970-01-02     6  0.454  
# 3 1970-01-24    10 -1.67   
# 4 1970-01-12     6  1.12   
# 5 1970-01-13     5 -0.786  
# 6 1970-01-04     3 -2.03   
# 7 1970-01-11    22  1.02   
# 8 1970-01-11    15  1.11   
# 9 1970-01-18    22  0.688  
# 10 1970-01-24    14 -0.00612
# ... 还有190行
#现在使用complete来填充缺少的数据
重新完成的_数据%
完成(日期、小时)
重新完成的_数据
#一个tibble:576x3
#日期小时Acc
#        
#1 1970-01-02 1 NA
#2 1970-01-02 2 NA
#3 1970-01-02 3 NA
# 4 1970-01-02     4 -0.386
# 5 1970-01-02     5 -0.284
# 6 1970-01-02     6  0.454
# 7 1970-01-02     7 -0.754
# 8 1970-01-02     8 -0.213
#9 1970-01-02 9 NA
#10 1970-01-02 10北美
# ... 还有566行
#检查我们的组合是否与完整数据集中的组合相同
全部相等(完整数据[,1:2],重新完成数据[,1:2])
#真的

您写道您正在“尝试编写代码”。请将其张贴在此处,以便有人可以帮助您调试。老实说,我不知道如何开始编写此问题的代码。我刚刚根据pandas教程编写了一个基本的python代码。丢失数据是什么意思?这是否意味着你有一个带有“间隙”的时间序列?原则上,我建议将
csv
加载到
pandas.DataFrame
中,进行处理并返回到csv(或任何您需要的内容)。只需谷歌“读取熊猫的csv文件”就可以开始了……作为提示,您可能希望查找的是
重新采样(在您的情况下为每小时一次),如图所示。谢谢。我会尝试使用重采样,你写的,你是“试图写代码”。张贴在这里,这样有人可以帮助你调试它。老实说,我不知道如何开始写这个问题的代码。我刚刚根据pandas教程编写了一个基本的python代码。丢失数据是什么意思?这是否意味着你有一个带有“间隙”的时间序列?原则上,我建议将
csv
加载到
pandas.DataFrame
中,进行处理并返回到csv(或任何您需要的内容)。只需谷歌“读取熊猫的csv文件”就可以开始了……作为提示,您可能希望查找的是
重新采样(在您的情况下为每小时一次),如图所示。谢谢。我会试着用重采样,阿列克斯洛克!有了这些代码,我可以在最初列出的日期中填写缺失的小时数。但是,如果日期完全丢失,代码将无法检测到丢失的日期和小时。因此,由于缺少日期,我有很多空白。如何修改代码以检测丢失的日期?在定义初始TIBLE时,您可以使用任何对您实用的规范,而不是我的示例中的
date=as.date(1:24)
。例如:
beg Hi Alexlok!有了代码,我可以在dat中填写缺失的小时数