使用Python处理96孔板中的数据标签
我有一份来自96孔板的数据(大部分在Excel里):
96孔板的示意图,来源于 http://www.cellsignet.com:
(来源: cellsignet.com)
在每个孔里,我们可以进行一些实验并读取数值,数据大致如下:
1 2 3 4 . .
A 9.1 8.7 5.6 4.5
B 8.7 8.5 5.4 4.3
C 4.3 4.5 7.6 6.7
D 4.1 6.0 7.0 6.1
.
我还有一些包含样本名称的Excel文件:
1 2 3 4 . .
A l1 l2 l3 l4
B l1 l2 l3 l4
C ds1 ds2 ds3 ds4
D ds1 ds2 ds3 ds4
.
重复的条目是指两个孔里加载了相同的样本。
我想读取这些数据(这没问题),然后把标签分配给数据点,并根据标签对数据进行分组。在pandas中,我可以根据列和行的标题读取数据并进行分组。但我该如何根据样本名称进行分组呢?
1 个回答
1
我建议你创建一个 DataFrame
,里面有两列,一列用来存储名字,另一列用来存储读数。
In [20]:
print data_df
print name_df
1 2 3 4
A 9.1 8.7 5.6 4.5
B 8.7 8.5 5.4 4.3
C 4.3 4.5 7.6 6.7
D 4.1 6.0 7.0 6.1
[4 rows x 4 columns]
1 2 3 4
A l1 l2 l3 l4
B l1 l2 l3 l4
C ds1 ds2 ds3 ds4
D ds1 ds2 ds3 ds4
[4 rows x 4 columns]
In [21]:
final_df=pd.DataFrame({'Name':name_df.values.ravel(), 'Reading':data_df.values.ravel()})
#if you have additional readings, i.e. from a different assay,
#from a different wavelength, add them there, as:
#'OTHER_Reading':OTHER_data_df.values.ravel()
print final_df
Name Reading
0 l1 9.1
1 l2 8.7
2 l3 5.6
3 l4 4.5
4 l1 8.7
5 l2 8.5
6 l3 5.4
7 l4 4.3
8 ds1 4.3
9 ds2 4.5
10 ds3 7.6
11 ds4 6.7
12 ds1 4.1
13 ds2 6.0
14 ds3 7.0
15 ds4 6.1
[16 rows x 2 columns]
这样的话,你就可以很简单地进行一些计算,比如:
In [22]:
print final_df.groupby('Name').mean()
Reading
Name
ds1 4.20
ds2 5.25
ds3 7.30
ds4 6.40
l1 8.90
l2 8.60
l3 5.50
l4 4.40
[8 rows x 1 columns]