можно построить график даты и времени с использованием данных из базы данных sqlite в python & matplotlib без использования панд? - PullRequest
1 голос
/ 04 апреля 2019

Я новичок в программировании :(. У меня есть база данных sqlite. Я вставляю и запрашиваю данные из одного и того же. У него есть два столбца: datetime (тип text) и 0 или 1 (integer). Я хочуполучить эти данные, используя python и граф графика в matplotlib.

Я пробовал это, но кажется, что формат даты и времени и его преобразование создают проблемы для меня. Я не хочу использовать панд, но не смог получитьФункция в Matplotlib, хотя.

import numpy as np
import matplotlib.pyplot as plt
import sqlite3
from datetime import datetime,date

#define datetimes
strt_timestamp=1234567878
end_timestamp=1234568980

#create and connect database and tables
conn=sqlite3.connect('table1.db')
cur=conn.cursor()
#cur.execute('CREATE TABLE machine1(dt_tim TEXT,workingcnd INT)')
conn=sqlite3.connect('table1.db')
cur.execute('DELETE FROM machine1')

#code to create table1 database
while strt_timestamp<=(end_timestamp-54):
        strt_timestamp+=55
        b=datetime.fromtimestamp(strt_timestamp)
        a=b.strftime("%m/%d/%Y,%H:%M:%S");
        c=strt_timestamp%2

        cur.execute('INSERT INTO machine1(dt_tim,workingcnd)VALUES(?,?)', 
(a,c));

cur.execute('SELECT dt_tim,workingcnd FROM machine1');
result=cur.fetchall()
print(result)

cur.execute('SELECT dt_tim FROM machine1')
dt_tim=cur.fetchall()
cur.execute('SELECT workingcnd FROM machine1')
cnd=cur.fetchall()

plt.plot_date(x,y)
plt.show()

1 Ответ

1 голос
/ 04 апреля 2019

Кажется, есть две проблемы.Сначала результаты из cur.execute('SELECT dt_tim FROM machine1') представляют собой список кортежей.Вам нужно будет распаковать его, чтобы получить список фактических значений.
Во-вторых, вам нужно будет преобразовать строки даты в datetime, чтобы иметь возможность отображать их с помощью matplotlib.

import matplotlib.pyplot as plt
import sqlite3
from datetime import datetime
#define datetimes
strt_timestamp=1234567878
end_timestamp=1234568980

#create and connect database and tables
conn=sqlite3.connect('table1.db')
cur=conn.cursor()
#cur.execute('CREATE TABLE machine1(dt_tim TEXT,workingcnd INT)')
conn=sqlite3.connect('table1.db')
#cur.execute('DELETE FROM machine1')

#code to create table1 database
while strt_timestamp<=(end_timestamp-54):
        strt_timestamp+=55
        b=datetime.fromtimestamp(strt_timestamp)
        a=b.strftime("%m/%d/%Y,%H:%M:%S");
        c=strt_timestamp%2

        cur.execute('INSERT INTO machine1(dt_tim,workingcnd)VALUES(?,?)', 
                    (a,c));

cur.execute('SELECT dt_tim FROM machine1')
dt_tim=[datetime.strptime(d, "%m/%d/%Y,%H:%M:%S") for d, in cur.fetchall()]
cur.execute('SELECT workingcnd FROM machine1')
cnd=[int(d) for d, in cur.fetchall()]
conn.close()

print(dt_tim)
print(cnd)

plt.plot(dt_tim,cnd)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...