大家好呀,新的一周,我们要进入数据处理的阶段了。在开始之前,小亚老师带大家回顾一下上周的小练习。
我们上周的目标是:解析 data/PDB_files 文件夹中的文件,并编写一个名为 EC_class.txt 的新文件,其中包含每种酶的 PDB ID 和 EC 类别。
我们的思路是:遍历PDB_files 文件夹中的文件,从每个文件中读取包含'EC:'的行,提取EC编号和分子名称,然后将这些信息写入到一个名为'EC_class.txt'的文件中,每行包含一个分子名称和其对应的EC编号。


以读写模式(’w+')打开一个名为'EC_class.txt'的文件,并将文件对象赋值给datafile。如果文件不存在,将创建一个新文件。如果文件已存在,将清空文件内容。with语句确保文件在处理完成后会被自动关闭。

遍历filenames列表中的每一个文件名。

使用 os.path.basename(f) 获取文件f的基本文件名(去除路径),并将其赋值给 file_name。

将file_name按照点号(.)分割成一个列表,并将结果赋值给split_filename。

获取分割后的列表的第一个元素(即文件名的主干部分),并将其赋值给molecule_name。

以只读模式('r')打开文件f,并将文件对象赋值给outfile。

读取文件中的所有行,并将它们存储在列表data中。

遍历data列表中的每一行line。

检查当前行是否包含字符串'EC:'。

如果包含,将该行赋值给ec_line变量。

使用split(';')函数将这一行按照分号(;)分割成单词列表,并将结果赋值给words1变量。

从words1列表中提取第一个元素(索引为0),并使用split(':')函数将其按照冒号(:)分割成单词列表,并将结果赋值给words2变量。

将分子名称molecule_name、制表符\t、words2列表的第二个元素(索引为1)和换行符\n写入到datafile文件中。
执行代码后,我们会获得以下结果:

好的,相信大家已经可以用 Python 打开文件、提取文件并且储存文件了。我们接下来将进入处理数据的学习。
当我们进行数据分析时,我们将需要导入一系列Python库。库是一组模块,其中包含可用于完成特定任务的相关功能。在 Python 中使用库可以减少大家必须编写的代码量,这也就是为什么说其实现在开始才是展示 Python 魅力的时候。在处理数据的时候,我们会使用到一个叫做 Pandas 的库。Pandas 建立在 Numpy 之上,Numpy 是另一个专门从事数值分析的 python 库。Numpy 还具有创建和分析数据数组的能力。
下面给大家介绍一下数组(arrays)的概念:
一维数组
一维数组只是一个项目列表,例如元素列表:H、He、Li、Be、B 等。
二维数组
二维数组是具有行和列的数组。它可以有任意数量的列和行。大家经常使用的Excel就可以理解为二维数组。
三维数组
三维数组将是二维数组的集合。大家可以理解是结构的 x、y 和 z 坐标作为时间函数的集合。
Numpy 库具有管理 n 维数组的函数,而 Pandas 只适用于二维数组。在某些时候,您可能需要 Numpy 来处理高维度数组。(但在我们的这次课程中,我们将学习使用 Pandas,因为我们接下来会学习如何基于二维数组组中的数据对实验室数据执行线性和非线性回归)。Pandas 库包含用于处理二维数组的强大工具,包括通过“特定的字符”来识别数据行和列的能力:例如“蛋白质浓度 (mg/mL)”和“起始速率”而不是“第 1 行”或“C 栏”。
在之前文件解析的课程中,各位小伙伴还记不记得我们导入了 os 库。我们使用了os的getcwd方法和 os的listdir方法查看了当前工作的路径(current working directory)以及路径下的文件。
大家可以输入

看看自己在哪个文件夹中以及有什么文件。
各位小伙伴应该可以看到其中有一个 data 文件夹,我们用代码进入这个文件夹。

Tips
大家会注意到数据文件夹中有许多文件和文件夹。其中有后缀是 csv 的文件。大家以前可能遇到过 csv 文件,csv 这个名字是来自于逗号分隔值(comma separated values)的前三个字母。这是 Excel 等电子表格程序都可以读取和写入的格式。如果大家在文本编辑器中打开 csv 文件(在 data 文件夹中有 csv 的文件),它只包含多行信息,其中信息以逗号分隔。该信息可以是整数、实数或字符串。
我们将使用文件 thrombin_with_ligands.csv。第一步,我们将使用 os 库中的 path.join 函数将该文件的位置分配给一个变量。

我们将使用 Pandas 库中的 read_csv 函数来导入数据。
以下是我们将使用 pandas 探索的 csv 文件。

我们可以看到数据框显示为表格。数据位于行(“索引”)和列(“系列”)中。如果我们想查看单列(一个系列)中的数据,可以使用thrombin_df['Resolution']这个命令。

我们还可以使用 loc 命令来查找特定单元格中的信息。如果输入索引(行)2 和“分辨率”列,则返回第三行中结构的分辨率。
大家可以对比一下这四条命令的区别。


Tips
一个问题大家会发现:“分辨率是第三列。为什么 python 认为它是第二列?”请注意哦,python 从 0 开始计数。因此第一列的数字是 0,第三列的数字是 2。
大家在处理数据的时候一定会对数据进行排序,同样,在代码中我们可以使用 pandas sort_values 函数对数据进行排序。要将 thrombin_df 数据帧按升序分辨率值排序,大家可以使用这个命令。

这个命令指示会在显示的时候排序,但是如果我们想保留数据框中的排序,可以将 inplace = True 添加到命令中。


好的,今天我们学习了如何使用pandas对数据进行查看与排序,下周就要开启最重要的数据分析课程,线性回归(Linear Regression)。如果大家做蛋白质测定,无论是用 Lowry、Bradford 还是 BCA 方法,最常见的仍然是对结果使用线性回归拟合。所以各位小伙伴要坚持住哦!



沪公网安备 31011002003500