Py学习  »  Python

DIA 数据管理与技术专栏(二)| 当Python遇见数据管理

DIA发布 • 10 月前 • 91 次点击  

点击上方DIA发布关注我们

作者:马殿腾

审阅人:王祎 蒲昊青

作为DM,在日常工作中,我们经常面对大量的数据,它们有的来自EDC系统,有的来自PV部门,有的来自外部实验室。这些数据可能存在格式不一致、缺失、错误等问题,需要进行分类整合和清洗。如果仅仅靠Excel等传统的工具,处理效率往往不高,而且重复性差,容易出现遗漏和错误,影响数据的质量。如何准确、准时、高效地完成这些工作,是每个DM都面临的难题。

1.Python是什么?

Python诞生于1989年圣诞节,由荷兰程序员大佬Guido van Rossum设计,是一种灵活、易用、功能强大的编程语言,被广泛应用于数据科学、Web开发、科学计算等领域。它语法简单,开源而且免费,吸引了众多的专业程序员和非专业程序员。

Python拥有海量的第三方库和强大的生态,如Openpyxl,XlsxWriter,Pyreadstat,Python-docx增强了Python读取各种数据文件的能力,而Numpy,Pandas,Pyecharts等更赋予了Python超强的数据分析能力和数据可视化能力。学习和使用这些模块,将给数据管理工作带来极大的便利。


2.Python在数据管理中的应用

示例1:转换SAS文件

SAS文件是一种常见的数据文件,也是很多EDC默认的数据导出格式。我们常常需要读取SAS文件,或者将它批量转换成Excel,以方便查看数据和传递数据。那Python如何来帮助DM完成这件事呢?这就要用到Pyreadstat模块了,它是专门用来处理SAS数据的模块,支持读取sas7bdat和xpt等数据文件。

我们把需要转换的数据放到对应的文件夹,然后运行下面的Python程序。

图1-1 将SAS数据批量转换代码

图1-2 将SAS数据批量转换结果

使用十多行代码,运行几秒时间,就轻松地把sas7bdat文件批量地转换成了xlsx文件(Excel 2010),非常方便和快捷。不过,转换数据对Python来说只是小菜一碟,我们来看看其它更有挑战性的例子。

示例2:数据核查

临床试验过程中,DM需要对特定的数据进行重点核查,比如不良事件,受试者的肿瘤评估等。核查这些数据时,常常需要检查很多复杂的条件和页面。核查次数少,数据量也比较小的时候,我们靠人工就能解决,但如果条件很多,数据量很大的时候,核查数据就非常耗时耗力。这时候,我们就可以使用Python的Pandas模块来帮助我们。

Pandas,全称Python Data Analysis Library,和可爱的国宝熊猫一样,是数据分析领域的大明星。Pandas提供了高效的数据结构和数据分析工具,可以帮助开发人员快速处理和分析大量数据。它具有丰富的数据处理和分析功能,如数据筛选、数据合并、数据聚合、数据可视化等,借助它,再难的数据核查也不用担心,我们一起来看看下面这个例子。

2.1 读取数据

临床试验过程中,安全性数据是重中之重,与用药数据的交叉核查通常是数据核查的重点之一。借助Pandas,DM可以轻松地对这些数据进行汇总和处理。之前的例子中,我们已经学会了读取SAS数据集,这次我们用Pandas来读取我们需要的AE数据和EX数据:

图2.1-1 读取AE,EX数据


2.2 筛选/汇总数据

对AE的例数进行汇总,根据不同中心进行分组,生成一个数据透视表,以查看各中心的AE发生情况:

图2.2-1 对AE数据进行汇总


这是汇总之后的结果:

图2.2-2 AE数据汇总透视表


本次核查数据比较多,我们对AE数据进行筛选,先核查比较严重的AE(CTCAE等级大于等于3级):

图2.2-3 筛选AE数据

2.3 合并数据

根据受试者ID合并AE数据和EX数据,之后可按照数据需求进行进一步处理,如计算时间差值,与数据点“对试验药物采取的措施”等进行核查。例如,我们本次先核查AE开始时间与EX时间相差7天内的数据(可根据核查策略调整)。

图2.3-1 合并数据并根据时间差进行筛选


2.4 输出Excel

将合并的结果输出到Excel里面供数据核查。

图2.4-1 输出数据到xlsx


我们可以根据输出的listing查找问题,根据AE的发生日期,用药的记录,对试验药物采取的措施,与试验药物的关系等数据进行核查,然后发送质疑。比如下面这个例子中,受试者在2022年7月9日发生AE,同时服药情况发生变化,但对试验药物采取的措施(aeacn1)为“剂量不变”,存在数据问题,需要发送质疑。

图2.4-2 AE与EX数据核查


示例3:数据可视化

上面的例子都是数据核查和汇总,主要用来查找单个数据点的问题,方便数据清理。借助Pyecharts模块,我们可以绘制各种精美的图表,而且这些图表具有良好的交互性,如簇状柱形图,热力图,地理图,旭日图等。下面我们来看几个比较有趣的例子,看Pyecharts如何帮助我们画各式各样的图表,用来展示数据的状态和趋势。

3.1受试者状态

在项目进行中,DM需要去掌握各中心病人的状态,以便掌握项目进度,监督中心及时录入病人数据。

这是我们的一个测试项目,里面汇总了受试者状态,依次是筛选失败、入组/治疗中、治疗结束、完成研究,并且按照不同的中心进行展示,整个项目的情况一目了然。同时,根据入组的情况,我们计算了各个中心的筛选失败率,可以给项目组参考,方便项目的后续推进。

图3.1-1 中心受试者状态


3.2受试者访视状态

除了按照中心去汇总受试者的状态,我们也想要对单个受试者的访视进行监督,检查受试者是否按照计划进行访视,是否存在超窗的问题。将受试者的各个访视汇总之后,我们将访视数据绘制成热力图进行展示,使用不同颜色对访视进行标注:绿色代表访视正常进行,白色代表访视未做,黄颜色则代表超窗,受试者的整个访视状态也就清清楚楚了。

图3.2-1 受试者访视状态


3.总结

除了上面的例子,Python能做的事情还有很多,如迁移数据库之后,核查前后数据的变化;根据RECIST1.1核查肿瘤评估数据;SAE一致性核查;外部数据一致性核查;定期自动发送邮件提醒等。学习和掌握Python将极大地提升数据管理的效率和质量。

Python已经成为人工智能领域中最流行的编程语言之一,放眼未来,随着ChatGpt等AI模型的能力的突飞猛进以及向数据领域的渗透,Python在数据领域的使用将越来越广泛,给临床试验带来更强的助力。

说明:

  • 程序运行环境:Python 3.9.7,Pyreadstat 1.2.1,Pyecharts 2.0.2,Pandas 1.5.3。

  • 本文所用数据为测试数据,仅供参考。




作者简介


马殿腾

毕业于复旦大学药学院,现就职于苏州信诺维医药科技股份有限公司。在生命科学和编程领域有着丰富的知识,擅长Python和SAS编程。在赛诺菲担任过DM和DM programmer,有着多年的工作经验和项目经验,善于将数据管理的实际工作与编程结合,创新、高效地解决问题。


数据管理与技术专栏介绍

为了增进DIA中国数据管理社区(DMC)在数据管理领域的交流和沟通, DMC自2023年推出数据管理及技术专栏。专栏内容包括但不限于,数据技术创新及应用,数据管理工具使用分享,数据工作经验心得分享,数据相关讲座总结,访谈等。

投稿联系方式:  齐女士18017392026 (微信)






DIA中国数据管理社区(DMC)简介

我们的使命是提供一个中立的平台,分享和交流有关临床试验中数据管理相关的知识和操作规范,致力于帮助更多临床试验工作者接触和了解数据管理工作,分享实际遇到的困难并对找出解决方案给予启发,希望通过以此推动临床试验中数据质量的提升和引起更多从业人员对临床试验中数据质量的重视。

我们的社区组织者为资深的数据管理人员,我们具有丰富的行业知识和分享精神,期望能够与更多的行业人员进行交流和共享。DIA中国数据管理社区将定期组织线上线下的深度分享交流环节,包括专题讨论会,研习会,沙龙,和培训,让成员理解和学习数据管理的知识和规范。同时,我们还希望能够将我们的DIA中国数据管理社区是一座连接行业和学校的桥梁,通过介绍行业知识进入学校等活动帮助在校学生了解更多行业知识和对将来在临床试验领域就业的职业规划指引。

我们的社区是具有行业影响力,领导力和社交功能的中立平台。

 

关于DIA

DIA是一个全球化、跨学科的国际性学术组织,在中立的环境中,融合医药研发领域全行业的意见领袖,探讨当前研发的技术问题,提升专业能力,以及催化行业共识,在全球医药研发领域享有很高的声誉。

扫码关注我们

微信号|DIA发布

长按识别左侧二维码即可关注

我们努力为你提供有内容的内容。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/156628
 
91 次点击