我有一个 mysql 表,我想从中访问和提取数据。该表的结构如下所示:
| 身份证 | 日期戳 | 时间戳 | 血糖 | 碳水化合物| 胰岛素 |
| 1 | 2013-08-05 | 18:28:17 | 6.7 | 76 | 6.6 |
注意:时间戳条目是使用 CURTIME() 生成 的NB2:请原谅这张可怕的桌子——我会发布一张图片,但还没有足够的代表点来这样做:(
我正在尝试提取时间戳和血糖值以绘制时间序列:x 轴上的时间 (HH:MM) 和 y 轴上的血糖值。但是我遇到了一些问题...
问题:在 python 中将数据提取到列表中时,时间戳显示为 datetime.timedelta(0, 58753) 条目。我想要这些在 HH:MM 中,以便我可以根据它们绘制数据。
问题:有没有办法简单地将 timedelta 重新格式化为 HH:MM 格式?如果这是不可能的,那么请告诉我如何解决这个问题(例如,使用 mysqldb 的另一种获取技术,或者用其他东西替换 CURTIME() 等)。
免责声明:我是一个菜鸟,想学习,所以请尽可能通过解释提供。谢谢!!
代码:
import MySQLdb as mdb
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import dates
import datetime
con = mdb.connect('localhost', 'testuser', 'test623', 'test');
with con:
cur = con.cursor()
#importing data into a list for analysis
cur.execute("SELECT * FROM Diabetes")
rows = cur.fetchall()
data = []
for row in rows:
data.append(row)
A = data
d = [a[1] for a in A]
t = [a[2] for a in A]
b = [a[3] for a in A]
c = [a[4] for a in A]
novo = [a[5] for a in A]
#here is my attempt at trying to reformat the time-entries... But doesn't work..
formatted_time = []
for delta_time in t:
hours, remainder = divmod(delta_time[1], 3600)
minutes, seconds = divmod(remainder, 60)
duration_formatted = '%s:%s:%s' % (hours, minutes, seconds)
formatted_time.append(duration_formatted)
print formatted_time
fig, ax = plt.subplots()
ax.plot_date(t, b)
fig.autofmt_xdate()
plt.show()