我有一个包含日期时间和温度的数据集,该数据集是通过查询数据库获得的。我不知道如何获得每天的平均值。我想创建一个带有x个温度值的列表以及另一个与该值相关联的日期的数组,以便可以将2绘制到图表上。
这是我的数据集从查询返回时的样子的一小部分样本:
[(21, datetime.datetime(2019, 4, 29, 9, 57, 53)),
(22, datetime.datetime(2019, 4, 29, 9, 56, 52)),
(26, datetime.datetime(2019, 4, 29, 9, 55, 49)),
(22, datetime.datetime(2019, 4, 30, 9, 54, 49)),
(20, datetime.datetime(2019, 4, 30, 9, 53, 49)),
(19, datetime.datetime(2019, 5, 1, 9, 52, 48)),
(18, datetime.datetime(2019, 5, 1, 9, 51, 47)),
(21, datetime.datetime(2019, 5, 1, 9, 50, 46))]
我想给出2个如下所示的列表:
values = [23, 21, 19.3]
labels = ["2019-4-29", "2019-4-30", "2019-5-1"]
我不确定如何处理我的数据,因此最终会遇到类似的情况,甚至不确定是否要找到正确的方式来搜索数据。
答案 0 :(得分:1)
尝试pandas
(d
是您的列表):
import pandas as pd
pd.DataFrame(d, columns=['Value', 'Date'])
df.groupby(df['Date'].map(datetime.datetime.date)).mean()
输出:
Value
Date
2019-04-29 23.000000
2019-04-30 21.000000
2019-05-01 19.333333
答案 1 :(得分:1)
有两种方法:
pandas
尝试生成TimeSeries
series = pd.DataFrame.from_values(data, columns=['Value', 'Date'], index=['Date'])
result = series.resample("D").mean()
输出:
Value
Date
2019-04-29 23.000000
2019-04-30 21.000000
2019-05-01 19.333333
pandas
使用常规的dict
:
from collections import defaultdict
grouper = defaultdict(list)
for value, date in data.items():
grouper[date].append(value)
values = [sum(day) / len(day) for day in grouper.values()]
labels = list(grouper.keys())
结果将与所讨论的示例相同。
答案 2 :(得分:1)
如果应该使用pandas
,则可以执行以下操作:
import pandas as pd
df = pd.DataFrame([
(21, datetime.datetime(2019, 4, 29, 9, 57, 53)),
(22, datetime.datetime(2019, 4, 29, 9, 56, 52)),
(26, datetime.datetime(2019, 4, 29, 9, 55, 49)),
(22, datetime.datetime(2019, 4, 30, 9, 54, 49)),
(20, datetime.datetime(2019, 4, 30, 9, 53, 49)),
(19, datetime.datetime(2019, 5, 1, 9, 52, 48)),
(18, datetime.datetime(2019, 5, 1, 9, 51, 47)),
(21, datetime.datetime(2019, 5, 1, 9, 50, 46)),
], columns=['value', 'date']).set_index('date')
# resample groups your values by 'd' which stands for "day" and aggregate them by average
df_day = df.resample('d').mean()
以下是pandas
文档的链接:http://pandas.pydata.org/pandas-docs/stable/