我有一个熊猫数据框,其中的行数少于30K,列数为7,我正在尝试使第4列与第五列相关。问题是,我想对海量数据集执行此操作,但是这需要40秒钟才能运行。这是我的代码:
df_a = dfr[['id', 'state', 'perform', 'A']].groupby(['id', 'state']).corr().ix[1::2][['A']].reset_index(2).drop('level_2', axis=1)
df_b = dfr[['id', 'state', 'perform', 'B']].groupby(['id', 'state']).corr().ix[1::2][['B']].reset_index(2).drop('level_2', axis=1)
df_c = dfr[['id', 'state', 'perform', 'C']].groupby(['id', 'state']).corr().ix[1::2][['C']].reset_index(2).drop('level_2', axis=1)
df_d = dfr[['id', 'state', 'perform', 'D']].groupby(['id', 'state']).corr().ix[1::2][['D']].reset_index(2).drop('level_2', axis=1)
df = df_a.merge(df_b, left_index=True, right_index=True)
df = df.merge(df_c, left_index=True, right_index=True)
df = df.merge(df_d, left_index=True, right_index=True)
样本数据如下所示:
ID State perform A B C D
234 AK 75.8456 1 0 0 0
284 MN 78.6752 0 0 1 0
有人对我如何使它更快或更有效地实现此方法有任何提示吗?
谢谢!
最佳答案
pandas corr非常慢的原因是它考虑了NAN:它基本上是一个cython for循环。
如果您的数据没有NAN,则numpy.corrcoef更快。