![](/img/trans.png)
[英]Fill bar plot gaps in matplotlib with pandas resampled time series data
[英]Time Series Data: Fill gaps in timeseries data and aggregate values
我是新手,使用 VBA 在 Excel 工作表中組織一些數據。 如果這更容易的話,我也有一些 Python 經驗。
我有一個來自模型的 .csv 文件,該文件輸出不連續的時間序列(只要有流入,但不是每 1 分鍾的時間步長):
日期/時間排水cm/BRA
5/10/14 11:00 0
5/10/14 11:01 1
5/10/14 11:02 2
5/10/14 11:03 2
5/10/14 11:04 1
5/11/14 7:00 1
5/11/14 7:01 0
5/11/14 7:02 1
5/11/14 7:03 1
5/11/14 7:04 0
5/11/14 7:05 0
我想要的是能夠將數據聚合到 2 分鍾的時間步長。 所以我得到這個:
日期/時間排水cm/BRA
5/10/14 11:00 1
5/10/14 11:02 4
5/10/14 11:04 1
5/10/14 11:06 0
5/10/14 11:08 0
...
...
5/11/14 6:58 0
5/11/14 7:00 1
5/11/14 7:02 2
5/11/14 7:04 0
我已經有了一個代碼,只要我有一個連續的數據文件,它就會為我聚合數據(在這個例子中,填補了 5/10/14 11:04 到 5/11/14 7:00 之間的空白)。 可以想象,對於微小的數據,手動填補空白的工作太多了,更不用說我必須為 70 多個輸出文件重現這一點。
盡管時間序列存在不均勻的差距,但對於創建連續時間序列或聚合到 2 分鍾的任何建議?
試試這個解決方案。 它采用了pandas
和以下技術:
datetime
數據類型datetime
對象重新采樣為 2 分鍾間隔您的 CSV 中有幾個數據質量問題,其中:
給出上述內容,有一段代碼可以解決這些問題。
import pandas as pd
# Read Excel file into DataFrame.
df = pd.read_csv('./drainage.csv', sep=' ')
# Address data quality issues:
# Combine date and time columns.
df['Date/Time Drainage'] = df['Date/Time'] + ' ' + df['Drainage']
# Drop unneeded columns.
df.drop(['Date/Time', 'Drainage'], axis=1, inplace=True)
# Ensure Date/Time column is a datetime datatype.
df['Date/Time Drainage'] = pd.to_datetime(df['Date/Time Drainage'], format='%m/%d/%y %H:%M')
# Resample to 2 second intervals and sum results.
df = df.set_index('Date/Time Drainage').resample('2T').sum().reset_index()
# Show results.
print(df)
Date/Time Drainage cm/BRA
0 2014-05-10 11:00:00 1
1 2014-05-10 11:02:00 4
2 2014-05-10 11:04:00 1
3 2014-05-10 11:06:00 0
4 2014-05-10 11:08:00 0
5 2014-05-10 11:10:00 0
...
597 2014-05-11 06:54:00 0
598 2014-05-11 06:56:00 0
599 2014-05-11 06:58:00 0
600 2014-05-11 07:00:00 1
601 2014-05-11 07:02:00 2
602 2014-05-11 07:04:00 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.