一、任務要求
任務二:感冒高發期分析
【任務說明】
感冒是一種常見的急性上呼吸道病毒性感染性疾病,多由鼻病
毒、副流感病毒、呼吸道合胞病毒、埃可病毒、柯薩奇病毒、冠狀病
毒、腺病毒等引起。臨床表現為鼻塞、噴嚏、流涕、發熱、咳嗽、頭
痛等,多呈自限性。
現有某一醫療機構 10 年的患者診斷數據,請你根據診斷結果進
行感冒高發期分析。
【任務要求】
讀取所需數據集后,對數據進行必要的清洗,繪制出感冒高發期
熱力圖,分析感冒高發期在每一年中的什么時候,并出具分析報告。
繪圖要求如下:
1. 使用 PyEcharts 庫繪制熱力圖;
2. 熱力圖橫軸為年份,縱軸為月份;
3.使用 Django 框架在前端頁面中渲染展示熱力圖;
二、代碼部分
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import HeatMapdata = pd.read_csv('生病數據.csv')
print(f"len(data):{len(data)}")
data = data.dropna(subset=['year', 'month', 'diagnosis'])
cold = ['感冒', '流感', '發燒', '頭疼']
data['diagnosis'] = data['diagnosis'].apply(lambda x: x.strip()) # 去除前后空值
print(f"")
cold_data = data[data['diagnosis'].isin(cold)]
cold_data = cold_data.sort_values(by='DiagnosisTime')
cold_data.reset_index(drop=True, inplace=True)
print(f"len(cold_data):{len(cold_data)}")
print(f"cold_data:{cold_data}")cold_counts = cold_data.groupby(['year', 'month']).size().unstack(fill_value=0)
print(f"\ncold_counts:\n{cold_counts}")def create_heatmap(cold_counts):months = cold_counts.columns.tolist() # [1, 2, ..., 12]years = cold_counts.index.tolist() # [2020, 2021, ..., 2024]# 使用列表推導式構建 data 數據data = [[months.index(month), years.index(year), cold_counts.loc[year, month]]for month in months for year in years]data = [[x, y, int(val)] for x, y, val in data]# 創建基礎熱力圖heatmap_basic = (HeatMap().add_xaxis(list(months)).add_yaxis(series_name="",yaxis_data=list(years),value=data,label_opts=opts.LabelOpts(is_show=True, position="inside"),).set_global_opts(title_opts=opts.TitleOpts(title="感冒高發期分析熱力圖"),visualmap_opts=opts.VisualMapOpts(min_=int(cold_counts.min().min()), # 最小值max_=int(cold_counts.max().max()), # 最大值is_piecewise=False # 不使用分段顏色映射),))heatmap_basic.render("heatmap_basic.html")create_heatmap(cold_counts)