ホームページ >バックエンド開発 >Python チュートリアル >Pandas DataFrame に行ごとにデータを入力するのが非効率である理由と、より良いアプローチは何ですか?
空の Pandas DataFrame の作成と設定
概念的には、空の DataFrame を作成してから、段階的に値を入力することをお勧めします。 。ただし、このアプローチは非効率的であり、パフォーマンスの問題を引き起こす傾向があります。
DataFrame を行ごとに拡張する際の落とし穴
空の DataFrame に繰り返し行を追加すると、計算コストが高くなります。 。動的なメモリ割り当てと再割り当てが必要となるため、2次複雑度の演算が必要になります。これは、特に大規模なデータセットを扱う場合、パフォーマンスに重大な影響を与える可能性があります。
代替アプローチ: リスト内にデータを蓄積する
DataFrame を行単位で拡張する代わりに、データをリストに蓄積することをお勧めします。これにはいくつかの利点があります。
リストからの DataFrame の作成
リストにデータが溜まったら、pd を使ってリストを変換することで簡単に DataFrame を作成できます.DataFrame()。これにより、適切なデータ型推論が保証され、DataFrame の RangeIndex の設定が自動化されます。
例
質問で説明されているシナリオを考えてみましょう。次のコードは、リストにデータを蓄積して DataFrame を作成する方法を示しています。
import pandas as pd data = [] dates = [pd.to_datetime(f"2023-08-{day}") for day in range(10, 0, -1)] valdict = {'A': [], 'B': [], 'C': []} # Initialize symbol value lists for date in dates: for symbol in valdict: if date == dates[0]: valdict[symbol].append(0) else: valdict[symbol].append(1 + valdict[symbol][-1]) # Create a DataFrame from the accumulated data df = pd.DataFrame(valdict, index=dates)
このアプローチにより、パフォーマンスのオーバーヘッドやオブジェクト列に関する懸念を持たずに、効率的なデータの蓄積とシームレスな DataFrame の作成が保証されます。
以上がPandas DataFrame に行ごとにデータを入力するのが非効率である理由と、より良いアプローチは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。