gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:59:32 27 4
gpt4 key购买 nike

假设我有一个名为 dfpandas.DataFramedf 的列代表不同的个体,索引轴代表时间,因此 (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)

关于python - 查看 Python Pandas 相关矩阵条目的常见观察计数的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18233864/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com