สารบัญ:

COVID19 Dashboard บนแผนที่โลก (โดยใช้ Python): 16 ขั้นตอน
COVID19 Dashboard บนแผนที่โลก (โดยใช้ Python): 16 ขั้นตอน

วีดีโอ: COVID19 Dashboard บนแผนที่โลก (โดยใช้ Python): 16 ขั้นตอน

วีดีโอ: COVID19 Dashboard บนแผนที่โลก (โดยใช้ Python): 16 ขั้นตอน
วีดีโอ: การสร้างกราฟแสดงการระบาด COVID-19 ของแต่ละประเทศเมื่อมีผู้ติดเชื้อถึง 100 คน ด้วย Python 2024, ธันวาคม
Anonim
COVID19 Dashboard บนแผนที่โลก (โดยใช้ Python)
COVID19 Dashboard บนแผนที่โลก (โดยใช้ Python)

ฉันรู้ว่าพวกเราเกือบทุกคนรู้ข้อมูลส่วนใหญ่เกี่ยวกับ COVID19

และคำแนะนำนี้เกี่ยวกับการสร้างแผนที่ฟองเพื่อวางแผนข้อมูลตามเวลาจริง (กรณี) บนแผนที่โลก

เพื่อความสะดวกยิ่งขึ้นฉันได้เพิ่มโปรแกรมลงในที่เก็บ Github:

github.com/backshell/COVID19dashboard

เสบียง

ไม่จำเป็นต้องใช้อุปกรณ์ใดๆ และเราจะทำโปรแกรมคอมพิวเตอร์ทั้งหมดผ่าน GoogleColab Notebook บัญชี gmail ก็น่าจะเพียงพอแล้วสำหรับการเริ่มต้น

Colab Notebooks / Colaboratory เป็นโครงการวิจัยของ Google ที่สร้างขึ้นเพื่อช่วยเผยแพร่การศึกษาและการวิจัยของแมชชีนเลิร์นนิง เป็นสภาพแวดล้อมโน้ตบุ๊ก Jupyter ที่ไม่ต้องตั้งค่าเพื่อใช้งานและทำงานบนคลาวด์ทั้งหมด

และไม่จำเป็นต้องติดตั้งในเครื่องของคุณ

ขั้นตอนที่ 1: ทำความเข้าใจกระบวนการแบ็กเอนด์ (ฐานข้อมูล)

โปรแกรมซอฟต์แวร์ส่วนใหญ่ดึงข้อมูลจากแบ็กเอนด์และผลลัพธ์จะถูกจัดรูปแบบและเผยแพร่ไปยังส่วนหน้า และสำหรับโปรแกรมนี้ เราต้องการข้อมูลจริงของ COVID19

จี.ดับเบิลยู.ซี. Whiting School of Engineering ได้เผยแพร่สถิติ COVID19 ผ่านบัญชี GitHub:

github.com/CSSEGISandData

ตั้งแต่เริ่มต้นจนถึงวันที่ สถิติที่ชาญฉลาดของประเทศ COVID19 จะถูกเผยแพร่ในที่เก็บ

ดังนั้นเราจะใช้ไฟล์ที่จัดรูปแบบ. CSV ของพวกเขา (แบ่งกลุ่มประเทศตามลำดับ) และพล็อตข้อมูลบนแผนที่โลก

ขั้นตอนที่ 2: แพ็คเกจ/ไลบรารี Python ที่ใช้ในโปรแกรม

ด้านล่างนี้คือรายการแพ็คเกจและไลบรารีหลามที่เราจะใช้ ให้ฉันให้ภาพรวมของวัตถุประสงค์ของแต่ละรายการ

อ้วน:

NumPy เป็นไลบรารี่สำหรับภาษาการเขียนโปรแกรม Python ซึ่งเพิ่มการรองรับอาร์เรย์และเมทริกซ์ขนาดใหญ่หลายมิติ พร้อมด้วยคอลเล็กชันฟังก์ชันทางคณิตศาสตร์ระดับสูงจำนวนมากเพื่อใช้งานกับอาร์เรย์เหล่านี้

แพนด้า:

pandas เป็นไลบรารีซอฟต์แวร์ที่เขียนขึ้นสำหรับภาษาการเขียนโปรแกรม Python สำหรับการจัดการและวิเคราะห์ข้อมูล

matplotlib.pyplot:

pyplot มีไว้สำหรับพล็อตแบบโต้ตอบและกรณีง่าย ๆ ของการสร้างพล็อตแบบเป็นโปรแกรม

plotly.express:

Plotly Express เป็นไลบรารีการสร้างภาพ Python ระดับสูงใหม่ ไวยากรณ์อย่างง่ายสำหรับแผนภูมิที่ซับซ้อน

โฟเลียม:

folium ทำให้ง่ายต่อการมองเห็นข้อมูลที่ได้รับการจัดการใน Python บนแผนที่แผ่นพับแบบโต้ตอบ

plotly.graph_objects:

แพ็คเกจ Python แบบพล็อตมีอยู่เพื่อสร้าง จัดการ และแสดงผลตัวเลขแบบกราฟิก (เช่น แผนภูมิ แผนผัง แผนที่ และไดอะแกรม) ที่แสดงโดยโครงสร้างข้อมูลซึ่งเรียกอีกอย่างว่าตัวเลข

ทะเลบอร์น:

Seaborn เป็นไลบรารีการสร้างภาพข้อมูล Python ที่ใช้ matplotlib มีอินเทอร์เฟซระดับสูงสำหรับการวาดกราฟิกสถิติที่น่าสนใจและให้ข้อมูล

ipywidgets:

ipywidgets เป็นวิดเจ็ต HTML แบบโต้ตอบสำหรับโน้ตบุ๊ก Jupyter, JupyterLab และเคอร์เนล IPython โน้ตบุ๊กจะมีชีวิตชีวาขึ้นเมื่อใช้วิดเจ็ตแบบโต้ตอบ

ไม่จำเป็นต้องติดตั้งแพ็คเกจเหล่านี้ เนื่องจากเราจะใช้งานโปรแกรมนี้ใน Google Colab Notebook ทั้งหมด (ให้เก็บไว้เป็น colab ตลอดคำแนะนำนี้)

ขั้นตอนที่ 3: การตั้งค่าไดรฟ์ของคุณ เพื่อใช้ Colab

การตั้งค่าไดรฟ์ของคุณ เพื่อใช้ Colab
การตั้งค่าไดรฟ์ของคุณ เพื่อใช้ Colab
การตั้งค่าไดรฟ์ของคุณ เพื่อใช้ Colab
การตั้งค่าไดรฟ์ของคุณ เพื่อใช้ Colab

ในไดรฟ์ของคุณ ให้สร้างโฟลเดอร์สำหรับสมุดบันทึกของคุณ

ในทางเทคนิค ขั้นตอนนี้ไม่จำเป็นทั้งหมด หากคุณต้องการเริ่มทำงานใน Colab อย่างไรก็ตาม เนื่องจาก Colab กำลังทำงานนอกไดรฟ์ของคุณ จึงไม่ความคิดที่ดีที่จะระบุโฟลเดอร์ที่คุณต้องการทำงาน คุณสามารถทำได้โดยไปที่ Google Drive ของคุณและคลิก "ใหม่" จากนั้นสร้างโฟลเดอร์ใหม่

จากนั้น คุณอาจเลือกสร้าง colabnotebook ที่นี่ หรือเริ่มทำงานโดยตรงใน colab และลิงก์โฟลเดอร์ในไดรฟ์ ซึ่งสร้างขึ้นสำหรับงาน colab

นี่เป็นแนวทางปฏิบัติที่ดี ไม่เช่นนั้น colab ที่เราสร้างขึ้นอาจดูยุ่งเหยิงในการขับรถของเรา

ขั้นตอนที่ 4: ภาพรวมของโปรแกรม

ในโปรแกรม/โน้ตบุ๊กนี้ เราจะสร้างสิ่งต่อไปนี้สำหรับโควิด-19:

  • รายชื่อประเทศตามจำนวนคดี
  • คดีทั้งหมดบนแผนที่โลก

ขั้นตอนที่ 5: แดชบอร์ด COVID-19 | ส่วนที่ 1

แดชบอร์ด COVID-19 | ส่วนที่ 1
แดชบอร์ด COVID-19 | ส่วนที่ 1

คุณสามารถใช้อนาคตเพื่อช่วยพอร์ตโค้ดของคุณจาก Python 2 ไปยัง Python 3 ได้ในวันนี้ และยังคงทำงานบน Python 2

หากคุณมีโค้ด Python 3 อยู่แล้ว คุณสามารถใช้ Future เพื่อให้เข้ากันได้กับ Python 2 โดยแทบไม่ต้องทำงานเพิ่มเติม

ในอนาคตรองรับการปรับโครงสร้างไลบรารีมาตรฐาน (PEP 3108) ผ่านกลไกใดกลไกหนึ่ง ทำให้โมดูลไลบรารีมาตรฐานที่ย้ายส่วนใหญ่สามารถเข้าถึงได้ภายใต้ชื่อและตำแหน่งของ Python 3 ใน Python 2

ขั้นตอนที่ 6: แดชบอร์ด COVID-19 | ตอนที่ 2

แดชบอร์ด COVID-19 | ตอนที่ 2
แดชบอร์ด COVID-19 | ตอนที่ 2

ฟังก์ชันการโต้ตอบ (ipywidgets.interact) จะสร้างการควบคุมส่วนติดต่อผู้ใช้ (UI) โดยอัตโนมัติสำหรับการสำรวจโค้ดและข้อมูลแบบโต้ตอบ เป็นวิธีที่ง่ายที่สุดในการเริ่มต้นใช้งานวิดเจ็ตของ IPython

ขั้นตอนที่ 7: แดชบอร์ด COVID-19 | ตอนที่ 3

แดชบอร์ด COVID-19 | ตอนที่ 3
แดชบอร์ด COVID-19 | ตอนที่ 3

display_html แสดงการแทนค่า HTML ของวัตถุ กล่าวคือจะค้นหาวิธีการแสดงที่ลงทะเบียนไว้ เช่น _repr_html_ และเรียกใช้เพื่อแสดงผลลัพธ์ หากมี

ขั้นตอนที่ 8: แดชบอร์ด COVID-19 | ตอนที่ 4

แดชบอร์ด COVID-19 | ตอนที่ 4
แดชบอร์ด COVID-19 | ตอนที่ 4

รายการแพ็คเกจ (ตามที่อธิบายไว้ในขั้นตอนที่ 2) จะถูกนำเข้าไปยังโปรแกรม

ขั้นตอนที่ 9: แดชบอร์ด COVID-19 | ตอนที่ 5

death_df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv')

Confirm_df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')

recovery_df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_recovered_global.csv')

country_df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/web-data/data/cases_country.csv')

ตามที่อธิบายไว้ในขั้นตอนที่ 1 การอ่านข้อมูลเป็นไฟล์.csv จากที่เก็บ

ขั้นตอนที่ 10: แดชบอร์ด COVID-19 | ตอนที่ 6

แดชบอร์ด COVID-19 | ตอนที่ 6
แดชบอร์ด COVID-19 | ตอนที่ 6

เราจะเปลี่ยนชื่อคอลัมน์ df เป็นตัวพิมพ์เล็ก

ขั้นตอนที่ 11: แดชบอร์ด COVID-19 | ตอนที่ 7

แดชบอร์ด COVID-19 | ตอนที่ 7
แดชบอร์ด COVID-19 | ตอนที่ 7

เราจะเปลี่ยนจังหวัด/รัฐเป็นรัฐ และประเทศ/ภูมิภาคเป็นประเทศ

ขั้นตอนที่ 12: แดชบอร์ด COVID-19 | ตอนที่ 8

แดชบอร์ด COVID-19 | ตอนที่ 8
แดชบอร์ด COVID-19 | ตอนที่ 8

เราจะคำนวณจำนวนผู้ป่วยที่ได้รับการยืนยัน เสียชีวิต และฟื้นตัวทั้งหมด

ขั้นตอนที่ 13: แดชบอร์ด COVID-19 | ตอนที่ 9

แดชบอร์ด COVID-19 | ตอนที่ 9
แดชบอร์ด COVID-19 | ตอนที่ 9
แดชบอร์ด COVID-19 | ตอนที่ 9
แดชบอร์ด COVID-19 | ตอนที่ 9

เราจะแสดงสถิติทั้งหมดในรูปแบบ HTML เนื่องจากเรานำเข้าไลบรารีเฉพาะในขั้นตอนที่ 7 ก่อนหน้านี้ดังนี้:

จากการแสดงการนำเข้า IPython.core.display, HTML

ขั้นตอนที่ 14: รายชื่อประเทศ (Top10) ตามจำนวนคดี | แดชบอร์ด COVID-19

รายชื่อประเทศ(Top10) จำแนกตามจำนวนคดี | แดชบอร์ด COVID-19
รายชื่อประเทศ(Top10) จำแนกตามจำนวนคดี | แดชบอร์ด COVID-19
รายชื่อประเทศ(Top10) จำแนกตามจำนวนคดี | แดชบอร์ด COVID-19
รายชื่อประเทศ(Top10) จำแนกตามจำนวนคดี | แดชบอร์ด COVID-19

มะเดื่อ = go. FigureWidget(layout=go. Layout())

ฟังก์ชัน FigureWidget ส่งคืนวัตถุ FigureWidget ว่างที่มีแกน x และ y เริ่มต้น วิดเจ็ตแบบโต้ตอบของ Jupyter มีแอตทริบิวต์เลย์เอาต์ที่แสดงคุณสมบัติ CSS จำนวนหนึ่งซึ่งส่งผลต่อการจัดวางวิดเจ็ต

pd. DataFrame

สร้าง dataframe โดยใช้ดิกชันนารี โดยมีพื้นหลังสามสีสำหรับผลลัพธ์ที่จะเติม

def show_latest_cases(TOP)

จัดเรียงค่าตามลำดับจากมากไปน้อยที่ยืนยันแล้ว

โต้ตอบ(show_latest_cases, TOP='10')

ฟังก์ชันการโต้ตอบ (ipywidgets.interact) จะสร้างการควบคุมส่วนติดต่อผู้ใช้ (UI) โดยอัตโนมัติสำหรับการสำรวจโค้ดและข้อมูลแบบโต้ตอบ

ipywLayout = widgets. Layout(border='solid 2px green')

สร้างเส้นขอบที่มีเส้นสีเขียวกว้าง 2px เพื่อให้ผลลัพธ์แสดง

ขั้นตอนที่ 15: กรณีทั้งหมดบนแผนที่โลก | แดชบอร์ด COVID-19

คดีทั้งหมดบนแผนที่โลก | แดชบอร์ด COVID-19
คดีทั้งหมดบนแผนที่โลก | แดชบอร์ด COVID-19
คดีทั้งหมดบนแผนที่โลก | แดชบอร์ด COVID-19
คดีทั้งหมดบนแผนที่โลก | แดชบอร์ด COVID-19

world_map = folium. Map (ตำแหน่ง = [11, 0], ไทล์="cartodbpositron", zoom_start=2, max_zoom = 6, min_zoom = 2)

Folium เป็นเครื่องมือที่ทำให้คุณดูเหมือนพระเจ้าแห่งการทำแผนที่ ในขณะที่งานทั้งหมดทำที่ส่วนหลัง มันเป็นเครื่องห่อ Python สำหรับเครื่องมือที่เรียกว่า leaflet.js โดยพื้นฐานแล้วเราให้คำแนะนำน้อยที่สุด JS ทำงานมากมายในเบื้องหลังและเราได้รับแผนที่ที่เจ๋งมาก มันเป็นสิ่งที่ดี เพื่อความชัดเจน แผนที่ถูกเรียกว่า 'Leaflet Map' ในทางเทคนิค เครื่องมือที่ให้คุณเรียกใช้ใน Python เรียกว่า 'Folium'

Folium ทำให้ง่ายต่อการมองเห็นข้อมูลที่ได้รับการจัดการใน Python บนแผนที่ Leaflet แบบโต้ตอบ ช่วยให้สามารถเชื่อมโยงข้อมูลกับแผนที่สำหรับการแสดงภาพ choropleth ตลอดจนส่งการแสดงภาพของ Vincent/Vega เป็นเครื่องหมายบนแผนที่

สำหรับฉันอยู่ในช่วง(0, len(confirmed_df))

ใน for loop เราจะได้เคสที่ได้รับการยืนยันทั้งหมดจากสูตรขั้นตอนที่ 9

folium. Circle

เราสร้างแผนที่แบบฟองโดยใช้ folium. Circle() เพื่อเพิ่มวงกลมซ้ำๆ

สถานที่=[confirmed_df.iloc['lat'], Confirmed_df.iloc['long'],

จาก Confirm_df ของกรณีที่ได้รับการยืนยันจากขั้นตอนที่ 5 เราจะดึงค่าละติจูดและลองจิจูดที่สอดคล้องกับข้อมูลแต่ละตำแหน่ง/ประเทศ

รัศมี=(int((np.log(confirmed_df.iloc[i, -1]+1.00001)))+0.2)*50000

การสร้างวัตถุรัศมีเพื่อพล็อตวงกลมฟองบนแผนที่โลกทั่วประเทศ

color='red', fill_color='indigo',

ทำให้เค้าร่างของวงกลมฟองเป็นสีแดงและบริเวณด้านในเป็นสีคราม

และสุดท้ายสร้างวงกลมบน world_map โดยใช้อ็อบเจกต์คำแนะนำเครื่องมือ

ขั้นตอนที่ 16: ผลลัพธ์

ผลลัพธ์!
ผลลัพธ์!
ผลลัพธ์!
ผลลัพธ์!

เอกสารแนบแสดง:

  1. รายชื่อประเทศตามจำนวนคดี
  2. คดีทั้งหมดบนแผนที่โลก

แนะนำ: