︠673adb23-845e-41d2-9a55-a0bbc7e91d2di︠ %md # COVID-19 Display US Testing Time Series ︡00722435-043b-4311-9bcd-189e613efbfc︡{"done":true,"md":"\n# COVID-19 Display US Testing Time Series"} ︠d9fab1df-5e40-4904-9e52-87754b54fdd6s︠ %auto %default_mode python3 ︡2d745f7f-fe43-47b0-95e2-08e326a9145a︡{"done":true} ︠e4e3482e-3120-4ff7-b1a0-09b94f9f2ca6s︠ import pandas as pd import numpy as np ︡834ad081-b5b6-4ffa-a6f3-c2b73024427d︡{"done":true} ︠3b612be9-c367-460f-ae4c-90819432a6b2s︠ # use testing series collected by The Covid Tracking Project # https://covidtracking.com/api/ url = f"https://covidtracking.com/api/us/daily.csv" url ︡673906f3-f45c-4b12-ae05-1fc1142d2ff1︡{"stdout":"'https://covidtracking.com/api/us/daily.csv'"}︡{"done":true} ︠3393df03-a3f7-4ff0-8889-1aab2f8cd68as︠ # fetch US data from Covid Tracking Project # keep only a few columns df = pd.read_csv(url, parse_dates=['date', 'dateChecked'])[['date','positive','death','total']] ︡47c6d7fb-890c-4a6f-842e-335be45c25d8︡{"done":true} ︠dfd7878f-f814-45b4-8689-1e176e6cee42s︠ # use date as x-axis for displays so make it the index df.set_index('date', inplace=True) df.set_index(df.index.strftime('%m/%d'), inplace=True) df.sort_index(inplace=True) ︡103cf2f5-b013-40c4-a8e9-8d59a8f5c611︡{"done":true} ︠800f0f33-5dd7-41c6-817c-d5b6c4b04f1bs︠ df.head(2) ︡ab741a87-9c3c-4afa-8b56-654332e3451f︡{"html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
positivedeathtotal
date
01/222NaN2
01/232NaN2
\n
"}︡{"done":true} ︠ff4e28cc-c4e8-4a5a-922a-0348caa1972as︠ df[-30:].plot(y=['positive','total'], kind="bar", figsize=[8, 5], rot=45, fontsize=7); ︡69b4be85-eae8-48f1-9a09-c298d8617d82︡{"file":{"filename":"/tmp/tmpweUgis.png","show":true,"text":null,"uuid":"46a6953d-fa9b-4100-b3bf-1e6da0e11027"},"once":false}︡{"done":true} ︠d0c6a426-4c01-4272-8235-e666122761fas︠ df['positive/total'] = df.loc[:,'positive']/df.loc[:,'total'] ︡afb6a96c-d1ba-46a5-b8d8-af7f35d45f72︡{"done":true} ︠3ec24571-ac2d-441e-81c7-997bdb7f184ds︠ df[-30:].plot(y=['positive/total'], kind="bar", figsize=[8, 5], rot=45, fontsize=7); ︡6a5ecfb0-c98f-45e4-9d8d-632a7306f69b︡{"file":{"filename":"/tmp/tmp8HfZoR.png","show":true,"text":null,"uuid":"aad3e1c1-e4c9-4f81-9ca5-83dc071993b1"},"once":false}︡{"done":true} ︠aa106e98-c28a-4fbf-a0ac-11d9124c89f7s︠ # just the confirmed (positives) df[-30:].plot(y=['positive'], kind="bar", figsize=[8, 5], rot=45, fontsize=7); ︡b1f73ada-c193-49a4-8094-b0e921b39732︡{"file":{"filename":"/tmp/tmpt7_xKy.png","show":true,"text":null,"uuid":"5b56e325-805d-41c5-8999-c52977fdc355"},"once":false}︡{"done":true} ︠3a0ceba5-fb92-485a-9dad-643f9d729d77s︠ ︡149a18c8-6613-49a9-96fb-fea3e46edf78︡{"done":true} ︠cc6cddd9-efcc-43e0-ba11-c5cbdcfa71b9s︠ ︡d3e23f60-4ee4-44fe-8246-3b261c4cd518︡{"done":true} ︠2e4fe5cd-7ef9-4fa9-8b4c-e2821f14c956s︠ ︡780159be-d00f-44f4-bfee-6afbe0477e3a︡{"done":true} ︠80da8036-2b2e-4032-9a66-de48994d9872s︠ ︡60189ce1-d01d-4b89-89de-9fc0e6487310︡{"done":true}