https://pypi.org/project/tqdm/ から:
import pandas as pd
import numpy as np
from tqdm import tqdm
df = pd.DataFrame(np.random.randint(0, 100, (100000, 6)))
tqdm.pandas(desc="my bar!")p`
df.progress_apply(lambda x: x**2)
乱数を使用するのではなく、load_ExcelからDataFrameを作成するように、このコードを取得して編集しました。
import pandas as pd
from tqdm import tqdm
import numpy as np
filename="huge_file.xlsx"
df = pd.DataFrame(pd.read_Excel(filename))
tqdm.pandas()
df.progress_apply(lambda x: x**2)
これによりエラーが発生したため、df.progress_applyを次のように変更しました。
df.progress_apply(lambda x: x)
これが最終的なコードです:
import pandas as pd
from tqdm import tqdm
import numpy as np
filename="huge_file.xlsx"
df = pd.DataFrame(pd.read_Excel(filename))
tqdm.pandas()
df.progress_apply(lambda x: x)
これにより、進行状況バーが表示されますが、実際には進行状況は表示されず、バーが読み込まれ、操作が完了すると100%にジャンプして目的を達成できません。
私の質問はこれです:この進行状況バーを機能させるにはどうすればよいですか?
progress_apply内の関数は実際に何をしますか?
より良いアプローチはありますか?多分tqdmの代替ですか?
どんな助けでも大歓迎です。
動作しないでしょう。 pd.read_Excel
は、ファイルが読み取られるまでブロックします。実行中にこの関数から進行状況に関する情報を取得する方法はありません。
次のようにチャンクごとに実行できる読み取り操作で機能します
chunks = []
for chunk in pd.read_csv(..., chunksize=1000):
update_progressbar()
chunks.append(chunk)
しかし、私が理解している限り、tqdm
には事前にチャンクの数も必要であるため、適切な進捗レポートを得るには、最初にファイル全体を読み取る必要があります。