大家好,我是欧K~
本期给大家分享《Python实战系列》的第二篇文章:表格信息标记,该系列主要来自粉丝的实际问题,后期会不断更新,希望对你有所帮助,如有疑问或者需要改进的地方可以私信小编。上一期:【Python实战系列<一> | 正则提取数据并绘图】
任务描述: 根据基准血压表标记儿童青少年血压表中的血压类型:
- 舒张压和收缩压任意一个比高血压标准高就输出成高血压
- 收缩压和舒张压都比高血压早期小就输出成正常
- 其他就是高血压早期
基准血压表:
儿童血压表:
🏳️🌈 1. 读取数据
df1 = pd.read_excel('./基准血压表.xlsx')
df2 = pd.read_excel('./青少年血压表.xlsx')
🏳️🌈 2. 基准血压表身高列数据处理这里需要将每个身高范围处理成两个值:hight_min、hight_max:
hight_min = [] hight_max = [] hights = df1['身高(cm)'].values.tolist() for h in hights: h1 = 0 h2 = 0 if '<' in h: h2 = int(h[1:]) h1 = h2-50 elif '>' in h: h1 = int(h[1:]) h2 = h1+50 else: data = h.split('-') h1 = int(data[0]) h2 = int(data[1]) hight_min.append(h1) hight_max.append(h2) df1['hight_min'] = hight_min df1['hight_max'] = hight_max
🏳️🌈 3. 基准血压表性别列数据处理可以选择处理基准血压表或者青少年血压表,只要两个统一就可以了,这里我们处理基准血压表。
df1['性别'] = df1['性别'].replace({'男':'Boy','女':'Girl'})
🏳️🌈 4. 计算青少年血压表血压类型
result_lst = [] for i in range(dff.shape[0]): result = '-' sexna = df2.loc[i,'sexna'] age = df2.loc[i,'age'] sg = df2.loc[i,'身高'] szy = df2.loc[i,'舒张压'] ssy = df2.loc[i,'收缩压'] df_tmp = df1[(df1['性别'] == sexna) & (df1['年龄(岁)'] == age) & (df1['hight_min'] <= sg) & (df1['hight_max'] > sg)] if df_tmp.shape[0] == 0: result_lst.append(result) continue if ssy >= df_tmp.iloc[0,4] or szy >= df_tmp.iloc[0,6]: result = '高血压' elif ssy < df_tmp.iloc[0,4] and szy < df_tmp.iloc[0,6]: result = '正常' else: result = '高血压早期' result_lst.append(result) df2_tmp['结果'] = result_lst
前20000条:
🏳️🌈 5. 输出结果
这样70多万数据一会儿就处理完成了,要是硬算的话就麻了
END
以上就是本期为大家整理的全部内容了,喜欢的朋友可以点赞、点在看也可以分享让更多人知道。