python - 在日期时间中每 10 分钟绘制一次
问题描述
我使用的“df”每个都有多行datetime
。我想datetime
每 10 分钟绘制一个所有坐标的散点图。每个位置都有一个数据条目,每 10 分钟df_data
如果我手动输入时间,它可以工作,t_list = [datetime(2017, 12, 23, 06, 00, 00), datetime(2017, 12, 23, 06, 10, 00), datetime(2017, 12, 23, 06, 20, 00)]
但我想用使用日期的东西替换它,df
这样我就可以将它用于多个数据集。
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
import numpy as np
df_data = pd.read_csv('C:\data.csv')
df_data['datetime'] = pd.to_datetime(df_data['TimeStamp'] )
df = df_data[(df_data['datetime']>= datetime(2017, 12, 23, 06,00, 00)) &
(df_data['datetime']< datetime(2017, 12, 23, 07, 00, 00))]
##want a time array for all of the datetimes in the df
t_list = [datetime(2017, 12, 23, 06, 00, 00), datetime(2017, 12, 23, 06, 10, 00),
datetime(2017, 12,
23, 06, 20, 00)]
for t in t_list:
t_end = t + timedelta(minutes = 10)
t_text = t.strftime("%d-%b-%Y (%H:%M)")
#boolean indexing with multiple conditions, you should wrap each single condition in brackets
df_t = df[(df['datetime']>=t) & (df['datetime']<t_end)]
#get data into variable
ws = df_t['Sp_mean']
lat = df_t['x']
lon = df_t['y']
col = 0.75
#calc min/max for setting scale on images
min_ws = df['Sp_mean'].min()
max_ws = df['Sp_mean'].max()
plt.figure(figsize=(15,10))
plt.scatter(lon, lat, c=ws,s=300, vmin=min_ws, vmax=max_ws)
plt.title('event' + t_text,fontweight = 'bold',fontsize=18)
plt.show()
我已经尝试了几种尝试将副本复制datetime
为可迭代列表的方法,但这些方法并没有给我想要的结果,最新的如下:
date_arrray = np.arange(np.datetime64(df['datetime']))
df['timedelta'] = pd.to_timedelta(df['datetime'])
示例数据集
解决方案
接缝你不熟悉的熊猫。您应该检查重采样功能。
让我们df_data
成为您的原始数据:
# make a DatetimeIndex and resample it to 10-Min interval
df_data.index = pd.to_datetime(df_data['TimeStamp'])
resampled_data = df_data.resample('10Min')
# loop it:
min_ws = df['Sp_mean'].min()
max_ws = df['Sp_mean'].max()
col = 0.75
for start_time, sampled_df in resampled_data:
ws = sampled_df['Sp_mean']
lat = sampled_df['x']
lon = sampled_df['y']
plt.figure(figsize=(15,10))
plt.scatter(lon, lat, c=ws,s=300, vmin=min_ws, vmax=max_ws)
plt.title('event' + start_time.strftime('%Y-%m-%d %H:%M:%S'),fontweight = 'bold',fontsize=18)
plt.show()
推荐阅读
- postgresql - 在 PostgreSQL 中使用“pg_basebackup.exe”工具进行备份时,有什么方法可以更改备份文件的默认文件名
- python - 检索浏览器中加载的图像
- javascript - fs.readFile 单元测试用例 - “测试完成后无法记录。您是否忘记在测试中等待异步内容?”
- javascript - 拆分后替换Vue中的DOM元素
- python - Python没有名为“请求”的模块,甚至安装请求
- node.js - 基于 botframework v4 node.js 在 bot 中查看 Azure blob 存储中保存的聊天记录
- javascript - 在使用递归模板表示的 n 元树中放置元素时,角度拖放不起作用
- flutter - 标签列表中的一排圆形按钮一起触发
- android-testing - Kakao 测试导航抽屉
- java - Facing issues in multi project build using gradle