私は比較的大きなデータセットを扱っており、カラムを適切なdtypesに変換するのに多くの時間がかかるように感じられます。Pythonで大きなデータセットのdtypeを変換する最速の方法は?
df.iloc[:,[0,1,9]] = df.iloc[:,[0,1,9]].apply(pd.to_datetime,
errors='coerce')
df.iloc[:,2:8] = df.iloc[:,2:8].apply(pd.to_numeric, errors='coerce')
は、私が列を変換することができたが、それは〜20分かかった。
はこれまでのところ、私はそうのようなto_datetime
とapply
とto_numeric
を使用しています。より速い方法が必要でしょうか?
もしそうでなければ、データ探索のためにデータセットを減らすか、より高速なコンピュータを入手するのは唯一の選択肢ですか?
編集:この問題は、主に日付と時刻の書式を設定せずにto_datetimeを使用していることが原因でした。 ilocを削除して適用するとパフォーマンスが向上しましたが、日付と時刻を書式設定するほど重要ではありません。
ここで各シナリオがかかっていない時間です:
- ませ書式設定をILOCを使用してはILOCを使用せずに
- ない書式設定を実行するために1027.11秒かかりましたが、フォーマットで
- 日時を実行するために789.15秒を要した実行するために19.47秒を要しました
巨大な改善。これは2,049,280行のデータセット上にありました。ありがとう@ScottBostonと@DiegoAgher!
このデータセットは最初にどのように作成されましたか?ファイルから読み込んだ場合は、dtypeのヒントを渡す方がよいでしょう。 – EdChum
私はpd.read_csv( 'dataset.txt'、sep = ';'、low_memory = False)を使用しました。私はdtypesを使ってみましたが、列を浮動小数点に変換できないというエラーが表示され続けました。 –
これを参照してください:https://stackoverflow.com/questions/32034689/why-is-pandas-to-datetime-slow-for-non-standard-time-format-such-as-2014-12-31 –