gpt4 book ai didi

python - 重新采样数据时为什么它没有在 csv 文件中连续重新采样

转载 作者:行者123 更新时间:2023-12-01 07:40:14 25 4
gpt4 key购买 nike

我的 csv 文件中有温度。我的文件随着时间的推移而更新。我已将此数据加载到 pandas DataFrame 中。我把开始时间改为0分钟

我想做的是将这些数据从 0 分钟转换为 60 分钟 60 分钟对数据进行重新采样。我需要做的是从起始行添加时间并连续将文件的其余部分读取到数据帧,而不添加 start_time 和 end_time。

当我编写重新采样数据的代码时。它只能正常运行一天的时间段。它没有按照第二天的时间值运行。谁能帮我解决这个问题吗?

dataset = pd.read_csv('n.csv')
data= pd.DataFrame(dataset,columns= ['date','time','temperature','humidity','wind'])
data['time'] = pd.to_timedelta(data['time'])
data['time'] -= data.at[0, 'time']
data['time'] = data['time'].dt.total_seconds()
data['time']= pd.to_datetime(data['time'], unit='s')

data = (data.set_index('time')
.resample('60T').first()
.reset_index()
.reindex(columns=data.columns))
data['time'] = data['time'].astype(np.int64) // 10**9

print(data)

我的 csv 文件:

enter image description here

第一次替换成0秒后结果:

enter image description here

在此处替换时间后,我想每 60 分钟重新采样一次数据。因为这里我测量的是5分钟、10分钟、15分钟后的值。所以我想每 60 分钟重新采样一次数据。

所以我编写了该代码,输出显示如下:

输出:

    date             time   temperature  humidity  wind
0 10/3/2018 0 63 0 0
1 10/3/2018 3600 63 0 2
2 10/3/2018 7200 104 11 0
3 10/3/2018 10800 93 0 50
4 10/3/2018 14400 177 0 2
5 10/3/2018 18000 133 0 0
6 10/3/2018 21600 70 0 0
7 10/4/2018 25200 210 50 20
8 10/5/2018 28800 170 20 40
9 10/3/2018 32400 127 0 50
10 10/3/2018 36000 205 0 0
11 10/3/2018 39600 298 0 0
12 10/3/2018 43200 234 0 0
13 10/3/2018 46800 148 0 20
14 10/3/2018 50400 135 0 0
15 10/3/2018 54000 100 0 50

但是我的代码对我的 csv 文件数据没有很好的响应。因为它只响应一天的数据。但我想每 60 分钟对每天的数据重新采样一次。

预期输出:

enter image description here.csv 文件: My csv file.

最佳答案

您的问题是,您尝试使用没有唯一值的列作为索引,并用它重新采样,并截断一天的数据帧。

您必须使用包含日期和时间的 true DatetimeIndex 来重新采样,然后根据需要使用时间:

dataset = pd.read_csv('n.csv')
data= pd.DataFrame(dataset.values, columns=['date','time','temperature',
'humidity','wind'],
index=pd.to_datetime(dataset['date']
+dataset['time'].str.rjust(9),
format='%m/%d/%Y %H:%M:%S'))
data = (data.resample('60T').first())
data['time'] = pd.to_timedelta(data.index - data.index[0]).seconds

data.reset_index(drop=True, inplace=True)

简单地,上面的代码没有处理date列 - 不管怎样,我真的不知道它现在代表什么,time列在一天内没有重置边界。

生成的数据框是

         date   time  temperature  humidity  wind
0 10/3/2018 0 63.0 0.0 0.0
1 10/3/2018 3600 63.0 0.0 2.0
2 10/3/2018 7200 104.0 11.0 0.0
3 10/3/2018 10800 93.0 0.0 50.0
4 10/3/2018 14400 177.0 0.0 2.0
5 10/3/2018 18000 133.0 0.0 0.0
6 10/3/2018 21600 70.0 0.0 0.0
7 10/3/2018 25200 83.0 0.0 60.0
8 NaN 28800 NaN NaN NaN
9 10/3/2018 32400 127.0 0.0 50.0
10 10/3/2018 36000 205.0 0.0 0.0
11 10/3/2018 39600 298.0 0.0 0.0
12 10/3/2018 43200 234.0 0.0 0.0
13 10/3/2018 46800 148.0 0.0 20.0
14 10/3/2018 50400 135.0 0.0 0.0
15 10/3/2018 54000 100.0 0.0 50.0
16 NaN 57600 NaN NaN NaN
17 NaN 61200 NaN NaN NaN
18 NaN 64800 NaN NaN NaN
19 NaN 68400 NaN NaN NaN
20 NaN 72000 NaN NaN NaN
21 NaN 75600 NaN NaN NaN
22 NaN 79200 NaN NaN NaN
23 NaN 82800 NaN NaN NaN
24 10/4/2018 0 166.0 0.0 0.0
25 10/4/2018 3600 130.0 0.0 0.0
26 10/4/2018 7200 120.0 10.0 10.0
27 10/4/2018 10800 80.0 40.0 20.0
28 NaN 14400 NaN NaN NaN
29 10/4/2018 18000 60.0 70.0 50.0
... ... ... ... ... ...

关于python - 重新采样数据时为什么它没有在 csv 文件中连续重新采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56757293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com