一、数据集

1.1 概况

数据集名称: 医疗数据
网站网址: https://www.haodf.com/
信息类型: 

所含字段: 
    患者(昵称、年龄、性别、省市、病状描述等) 
    医生(姓名、医院、科室、医治领域、级别等) 
    医院(省市、介绍、等级、地址等)
    
数据文件: 
    - 全国医院信息.csv
    - 医生信息.csv
    - 问诊信息.csv   
    
采集日期: 2024-06-05
问诊起止日期: 2013-12-06 ~ 2024-06-05
记录条数: 
   - 10048家医院信息; 
   - 730267位医生信息
   - 922995条问诊记录

文件格式: csv

1.2 获取数据

付费数据集,500 元,支持开票;加微信 372335839, 备注「姓名-学校-专业」。



二、医院数据

点击下载hos-sample.xlsx

2.1 数据源

https://www.haodf.com/hospital/list.html


2.2 读取数据

查看 全国医院信息.csv

import pandas as pd

#https://www.haodf.com/hospital/list.html
hdf = pd.read_csv('全国医院信息.csv')
print('医院数量: ', len(hdf))
hdf.head()

Run

医院数量: 10048 


2.3 字段

医院数据所含字段

hdf.columns

Run

Index(['全名', '类型', '省', '市', '区县', '地址', '好评数', '等级', 'id', '链接', '排名', '介绍',
       '采集日期'],
      dtype='object')



三、医生数据

点击下载样例数据doc-sample.xlsx

3.1 数据源

https://www.haodf.com/hospital/{医院id}/tuijian.html


3.2 读取

读取含730267位医生信息的文件- 医生信息.csv.gz

import pandas as pd

ddf = pd.read_csv('医生信息.csv.gz', compression='gzip')
ddf


3.3 字段

for col in ddf.columns:
    print(f' - {col}')

Run

 - name      医生姓名
 - DoctorId  医生id
 - doctorIntro 医生介绍(含学习经历、工作经历等)
 - specialize  擅长的领域
 - diseaseVoteList  在线不同病症诊治次数统计(如"试管婴儿78\t不孕不育87")
 - grade  等级(如医师、主治医师)
 - hospitalName 医院名
 - hospitalId  医院id
 - hospitalGrade 医院等级
 - facultyName  科室名
 - isCaseOpened  诊治案例是否公开
 - isOnlineClinicOpened 是否开放在线诊治
 - isOpenFamilyDoctor   是否为家庭医生
 - isOpenRemoteClinic  是否远程诊治
 - isPhoneOpened    是否电话问诊
 - onlineClinicDesc  价格
 - recommendIndex  推荐指数
 - registerDesc  预约挂号是否开通
 - replyTips    回复
 - voteCntIn2Years  两年内投票数
 - voteCount  投票数
 - attitude  态度



四、问诊数据

4.1 数据源

点击下载wenzhen-sample.xlsx

https://www.haodf.com/hospital/{医院id}/bingcheng.html


4.2 读取

读取问诊信息.csv

import pandas as pd

df = pd.read_csv('问诊信息.csv', 
                 converters = {'d_id': str, 'p_id':str, 'hospital_id': str}, 
                 low_memory=False)
df


4.3 字段

诊断数据的字段比较丰富

for col in df.columns:
    print(f' - {col}')

Run

 - p_name 患者昵称
 - p_id   患者id
 - p_sex  性别
 - p_age  年龄
 - p_birthday 生日
 - p_province 省份
 - p_city  市
 - termName 疾病名
 - businessType 就诊方式,如门诊电话、图文义诊、极速问诊等
 - diseaseName 疾病名(比termName更细致一些)
 - doctorMsgCount 医生回复的信息数
 - msgCount 患者与医生总的信息数
 - mrStartTime 就诊日期
 - title  患者病情详细描述
 - d_name 医生姓名
 - d_id  医生id
 - d_img 医生头像
 - d_content 诊断建议。
 - hospital 医院
 - hospital_id 医院id
 - d_facultyName 科室
 - d_grade  医生等级,如主治医师、主任医师等
 - d_province 医院所在省
 - d_area 医院所在市
 - d_description 医生主治(擅长)领域


4.4 起止日期

df['mrStartTime'] = pd.to_datetime(df['mrStartTime'])
print('就诊日期起: ', df['mrStartTime'].min().strftime('%Y-%m-%d'))
print('就诊日期止: ', df['mrStartTime'].max().strftime('%Y-%m-%d'))

Run

就诊日期起:  2013-12-06
就诊日期止:  2024-06-05

4.5 年度分布

import pandas as pd

data = dict()
years = range(2013, 2025)
volumes = []
for year in years:
    df_year = df[df['mrStartTime'].dt.year==year]
    volumes.append(len(df_year))


data = pd.DataFrame({'year': years, 'volume': volumes})
data


可视化 | 如何在matplotlib中显示中文

from plotnine import *
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

#文泉驿微米黑.ttf位于代码同文件夹
font_prop = FontProperties(fname='文泉驿微米黑.ttf') 

(
    ggplot(data,  aes(x='year', y='volume'))
    +geom_point()
    +geom_line()
    +theme(figure_size=(10, 6),
           text = element_text(family = font_prop.get_name()), 
           plot_title = element_text(family = font_prop.get_name(), size=14)
          )
    +labs(title='某网站问诊量(2013.12-2024.6)',
          x = '年度', 
          y = '问诊量')
)

现实情况, 2013-2017之间的问诊记录不应该这么低, 原因是网站反爬,导致远期难以访问。 不过用2020之后的数据做研究也够基本够用。



五、相关研究

[1]魏洁,杨正玲.患者、医生和系统产生内容对患者择医行为的影响[J].管理科学,2022,35(04):44-56.
[2]雷丽彩,陈新雨.在线医疗社区患者择医行为:平台认证和信息浏览行为的影响机制[J].管理科学,2023,36(05):71-84.
...



六、获取数据

付费数据集,500 元,支持开票;加微信 372335839, 备注「姓名-学校-专业」。



精选内容