如何解决Python日期时间重新采样结果突然变为NaN值
我尝试将值重新采样为小时。但是,由于我自动更改了带有低数字的月份和日期,因此更改了csv文件中日期的格式(2003-04-01突然是2003-01-04)。现在,日期格式很好(当在Python中显示csv文件时),但是在使用重采样时,这些值将显示为NaN值。
df = pd.read_csv(r'C:\Users\water_level.csv',parse_dates=[0],index_col=0,decimal=",",delimiter=';')
`hour_avg = df_2.resample('H').mean()`
我的数据示例: Raw data with time as index
此后:即使时间是日期时间,它也将99%的数据显示为NaN值(每天显示一个值) Data with NaN values after resample per hours
当我对日值使用重采样时,所有值都返回。因此,看来时间有问题。 当我一开始使用格式时,出现错误“格式不适合”。 我以前尝试过其他方法(不确定有什么不同),但每小时重新采样工作。
我需要更改什么才能再次使用重新采样一小时?
解决方法
您可以共享数据样本吗?假设您的数据包含DateTime功能(即yyyy-mm-dd hh-mm-ss
)和您尝试按小时重新采样的其他功能,则可能由于两个原因出现NaN值:熊猫格式错误或数据中缺少小时值。
(1)可能是熊猫未正确读取您的日期。读取文件后,请确保日期列的格式正确(即yyyy-mm-dd)。
df = pd.read_csv(r'C:\Users\water_level.csv',parse_dates=[0],index_col=0,decimal=",",delimiter=';')
df['date'] = pd.to_datetime(df['date'],format='%Y-%m-%d %H:%M:%S')
(2)如果数据中有任何空白,则会弹出NaN值。例如,假设数据具有以下格式:
2000-01-01 00:00:00 1
2000-01-01 00:01:00 1
2000-01-01 00:03:00 1
2000-01-01 00:04:00 1
2000-01-01 00:06:00 1
如果您尝试hour_avg = df_2.resample('H').mean()
,则输出将如下所示:
2000-01-01 00:00:00 1
2000-01-01 00:01:00 1
2000-01-01 00:02:00 NaN
2000-01-01 00:03:00 1
2000-01-01 00:04:00 1
2000-01-01 00:05:00 NaN
2000-01-01 00:06:00 1
我怀疑问题是后者。如果是后者,则可以使用df_2.dropna()
删除NaN值。否则,如果无论丢失数据而确实需要小时计数,则可以通过先填充缺失值然后尝试获取均值来避免NaN值:
hour_pad = df_2.resample('H').pad()
hour_avg = hour_pad.resample('H').mean()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。