使用Pandas从API构建timeseries数据集

2024-09-27 04:22:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个数据集,最终用于制作一个带有Dash的交互式在线数据可视化应用程序

这是我的第一个Python项目(以及一般的编程),我正在尝试决定如何最好地检索、存储和更新数据集的数据

这是我正在使用的api: https://covid19api.com/

文件: https://documenter.getpostman.com/view/10808728/SzS8rjbc?version=latest

我已经写了一些代码,在每个国家的基础上提取我需要的数据,并对其进行处理,以创建我需要的系列

# Import the libraries
import requests

import pandas as pd
import numpy as np
from pandas import Series, DataFrame
from pandas import json_normalize

from datetime import datetime

import matplotlib.pyplot as plt


url = 'https://api.covid19api.com/total/dayone/country/ireland'
data = requests.get(url)

# Store the API response in a variable.
available_data = data.json()
df_ire = json_normalize(available_data)

# rename the date to datetime
df_ire = df_ire.rename(columns={"Date" : "datetime"})

#convert the data to datetime format
df_ire["datetime"] = pd.to_datetime(df_ire["datetime"])

# Create Daily new cases column & SMA
df_ire["New Cases"] = df_ire['Confirmed'].diff()
df_ire["SMA_10 New Cases"] = df_ire["New Cases"].rolling(window=10).mean()

# Create Daily new deaths column & SMA
df_ire["New Deaths"] = df_ire['Deaths'].diff()
df_ire["SMA_10 New Deaths"] = df_ire["New Deaths"].rolling(window=10).mean()

df_ire.fillna(0)

#set datetime as index
df_ire.set_index('datetime')

#Plot New Cases
fig, ax = plt.subplots(figsize=(15,7))
plt.grid(False)
plt.plot(df_ire["SMA_10 New Cases"], label="New Cases - 10-Day Moving Average", 
         color = "orange", linewidth = 4 )
ax.bar(df_ire.index, df_ire["New Cases"], label = "Daily New Confirmed Cases")

ax.set(xlabel='Days Since First Confirmed Case', ylabel='Number of Infections',
       title='Ireland: Average vs Daily New Cases')

fig.autofmt_xdate()

plt.legend(loc=2);

plt.savefig('ireland_avg_vs_daily_cases', dpi = 1067, bbox_inches='tight' )

目前为止,我正在处理一个国家的数据,并使用matplotlib来找出如何最好地呈现和处理数据。以下是我迄今为止所做工作的一个例子:chart

完成的项目应该是这样的,但所有国家的变化率如下: https://dash-gallery.plotly.host/dash-opioid-epidemic/

首先,API是一个社区项目,正在开发中,我不想让他们的系统因请求而过载,所以我尝试构建我的项目,以尽量减少我给他们的系统带来的负载。我——很简单——不知道使用API的好/坏做法是什么,我不想成为“那个家伙”

正如我上面所说的,我还需要考虑存储数据并在适当的时间间隔进行更新。这是248个国家的时间序列数据,记录了几个变量,所有这些变量都需要在大熊猫中进行操作并定期添加。我应该构建一个大型数据帧吗?我应该为每个国家、每个变量建立一个数据框架吗

一旦我创建了数据集,我希望更新&;使用与上面类似的代码,使用以下api调用附加它: https://api.covid19api.com/summary

这是一个好计划吗?它应该是什么样子

我的计划是在Heroku(或类似的节目)结束后主持

如果您现在还在阅读,非常感谢。我知道这是一篇冗长的文章,我一下子问了很多问题。我整个下午都在思考如何继续进行这项工作,我知道我需要做出一些基本决定才能继续进行。任何帮助都将不胜感激


Tags: 数据项目httpsimportcomapidfnew

热门问题