gpt4 book ai didi

python - pandas .corr() 方法的进度条

转载 作者:行者123 更新时间:2023-12-04 12:02:44 26 4
gpt4 key购买 nike

我正在尝试使用 tqdm 或其他一些库在以下代码行中显示进度条:
corrmatrix = adjClose.corr('spearman')
其中 adjClose 是一个数据框,其中包含许多股票代码作为列和按日期索引的多年收盘价。输出最终是一个相关矩阵。

随着更多的代码被添加到数据框中,这段代码往往会花费更多的时间,我想要某种进度的视觉表示来指示代码仍在运行。除非我严重忽略了一些东西,否则谷歌在这方面并没有出现太多。

最佳答案

备注 :由于计算时间增加,这将不是一个真正可行的答案。根据我的测量,当使用小数据帧(高达 40 倍)时,它会显着增加,但是当使用大数据帧时,它大约是 2 - 3 倍。
也许有人可以找到自定义函数更高效的实现calc_corr_coefs .
我已经设法使用 pythons tqdm 模块来显示进度,但这需要我使用它的 df.progress_apply()功能。下面是一些示例代码:

import time
from tqdm import tqdm
import numpy as np
import pandas as pd


def calc_corr_coefs(s: pd.Series, df_all: pd.DataFrame) -> pd.Series:
"""
calculates the correlation coefficient between one series and all columns in the dataframe

:param s: pd.Series; the column from which you want to calculate the correlation with all other columns
:param df_all: pd.DataFrame; the complete dataframe

return: a series with all the correlation coefficients
"""

corr_coef = {}
for col in df_all:
# corr_coef[col] = s.corr(df_all[col])
corr_coef[col] = np.corrcoef(s.values, df_all[col].values)[0, 1]

return pd.Series(data=corr_coef)


df = pd.DataFrame(np.random.randint(0, 1000, (10000, 200)))

t0 = time.perf_counter()

# first use the basic df.corr()
df_corr_pd = df.corr()

t1 = time.perf_counter()
print(f'base df.corr(): {t1 - t0} s')

# compare to df.progress_apply()
tqdm.pandas(ncols=100)
df_corr_cust = df.progress_apply(calc_corr_coefs, axis=0, args=(df,))

t2 = time.perf_counter()
print(f'with progress bar: {t2 - t1} s')

print(f'factor: {(t2 - t1) / (t1 - t0)}')
我希望这会有所帮助,并且有人能够加快实现速度。

关于python - pandas .corr() 方法的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61721905/

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