快速查看Python Pandas相关矩阵条目的常见观察计数的方法

伊利

假设我有一个pandas.DataFramedf的列df代表不同的个体,索引轴代表时间,因此(i,j)项是个体j对时间段i的观察,并且我们可以假定所有数据都是float可能带有NaN值的类型

就我而言,我有大约14,000列和几百行。

pandas.corr 会把14,000 x 14,000的相关矩阵还给我,并且时间性能对我的应用程序来说很好。

但是我还想知道,对于每对个体(j_1,j_2),有多少非空观测值进入了相关性计算,因此我可以隔离遭受数据覆盖率差的相关单元。

我能想到的最好的方法如下:

not_null_locations = pandas.notnull(df).values.astype(int)
common_obs = pandas.DataFrame(not_null_locations.T.dot(not_null_locations),
                              columns=df.columns, index=df.columns)

内存占用量和速度开始出现问题。

有没有更快的方法来获得常见的观察结果pandas

杰夫

您可以执行此操作,但需要进行Cythonize(否则速度会慢得多);但是,内存占用应该更好(这给出了nan观测值的数量,您给出了有效观测值的数量,但是很容易转换)

l = len(df.columns)
results = np.zeros((l,l))
mask = pd.isnull(df)
for i, ac in enumerate(df):
    for j, bc in enumerate(df):
           results[j,i] = (mask[i] & mask[j]).sum()
results = DataFrame(results,index=df.columns,columns=df.columns)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章