dataframe python,使用pandas dataframe python创建实时更新图

我正试图通过从pandas数据框中提取结果来创建一个实时更新图,该数据框存储从本地服务器中获取的动态数据值。

使用pandas dataframe,需要时间并将其存储在一列中,然后将其使用情况存储在另一列中。然后,将其转储到结果表中。2秒后,它将花费时间并再次使用,然后将其追加到结果数据帧/表中。最终,它将在结果表中保留一个运行表:

>>> print(results)

time kW

0 00:32:40 9

1 00:32:42 11

2 00:32:44 10

3 00:32:46 27

4 00:32:48 18

5 00:32:50 11

下面是我的代码,它可以清理本地服务器并将数据存储到这个数据框中。每次我重新运行脚本时,它都会获取存储的以前的数据并将新数据附加到其中,然后将csv文件(包含time&kw数据)写入指定的文件路径:

import requests

import bs4

import time

import pandas as pd

from datetime import datetime

import glob

import os

def hasNumbers(inputString):

return any(char.isdigit() for char in inputString)

def get_count():

url = "http://10.0.0.206/temp_report.html"

# request with fake header, otherwise you will get an 403 HTTP error

r = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})

page_source = r.text

# print(page_source)

soup = bs4.BeautifulSoup(page_source, 'html.parser')

#print(soup)

data = soup.find_all('p')

# Pull time

data_time = data[0].text.split()

data_time = [element for element in data_time if hasNumbers(element)][0]

# Pull date

data_date = data[1].text.split()

data_date = [element for element in data_date if hasNumbers(element)][0]

# Convert date and time to datetime data type

data_datetime = data_date +' '+ data_time

data_datetime = datetime.strptime(data_datetime, '%Y-%m-%d %H:%M:%S')

# Pull usage and convert to data type int

data_usage = data[2].text.split()

data_usage = [element for element in data_usage if hasNumbers(element)][0]

data_usage = int(data_usage)

temp_df = pd.DataFrame(data = [[data_time, data_usage]], columns = ['time', 'kW'] )

print('Date: %s Time: %s Usage: %s kW' %(data_date, data_time, data_usage))

return temp_df

# change path_to_file string

path_to_file = 'C:/seniord/csusite/'

# If folder doesn't exist, create it

if not os.path.exists(path_to_file):

os.makedirs(path_to_file)

# get all files in that folder

fnames = glob.glob('*.csv')

# if there are no files, start with new dataframe

# else, get the most recently saved data and read that to continue appending

if fnames == []:

results = pd.DataFrame()

else:

latest_file = max(fnames, key=os.path.getctime)

results = pd.read_csv(path_to_file+latest_file)

date_stored = datetime.now().strftime('%Y_%m_%d_%HH_%M_%S')

while True:

df = get_count()

results = results.append(df).reset_index(drop=True)

#results.to_csv(path_to_file+'%s_kW_usage.csv' %(date_stored),index=False) #If you want to create a new csv file to the folder, uncomment this. Otherwise use the code below

results.to_csv(path_to_file+'kW_usage.csv',index=False)

time.sleep(2)

需要

:图形的y轴显示kw列,x轴显示相应的时间列。然后,我只想在图形或其他东西上方自动打印出日期戳(仅限日期)。

我非常感谢你们的指导

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值