数据框架熊猫

时间:2016-06-22 13:18:25

标签: python pandas correlation feature-extraction

我在Pandas中有一个数据帧,它的形状是(136,1445)。我尝试为136行创建相关(Pearson)矩阵。所以在结果中,我需要一个大小为136x136的矩阵。

我尝试了两种不同的方法,但我无法从中获得结果,或者当我创建136x136相关矩阵时,我丢失了数据帧的列名称。

首先,

gene_expression = pd.read_csv('padel_all_drug_results_original.csv',dtype='unicode')
gene_expression = gene_expression.convert_objects(convert_numeric=True)
gene_expression.corr()

这给出了基于列的Pearson相关矩阵(1445 * 1445),当我尝试转置我的数据帧然后尝试找到相关性时,数据帧的结构被破坏(就像列名丢失或者我甚至不确定相关性是否正确)。

其次,

distance = lambda column1, column2: pearsonr(column1,column2)[0]
result = gene_expression.apply(lambda col1: gene_expression.apply(lambda col2: distance(col1, col2)))

如何计算136x136 pearson相关矩阵以不更改原始数据帧?

另外,我有1445个功能和一些几乎满是零的列。所以我删除了那些列,因为它们是嘈杂的列,但你有另一个想法,以恢复功能?

提前致谢

1 个答案:

答案 0 :(得分:5)

要获得包含所有行之间成对相关性的相关矩阵,您可以:

if(position == 0) {
                holder.text.setText("blah");
            }

使用玩具示例:

gene_expression.T.corr()

标有5行和10列:

df = pd.DataFrame(np.random.randint(0, high=100, size=(5, 10)), index=list(string.ascii_lowercase[:5]))

使用

df.info()
Index: 5 entries, a to e
Data columns (total 10 columns):
0    5 non-null int64
1    5 non-null int64
2    5 non-null int64
3    5 non-null int64
4    5 non-null int64
5    5 non-null int64
6    5 non-null int64
7    5 non-null int64
8    5 non-null int64
9    5 non-null int64
dtypes: int64(10)
memory usage: 440.0+ bytes

产量

df.T.corr()