DataFrame の文字列がオブジェクトとして保存されるのはなぜですか?
文字列を含む DataFrame 列を文字列データ型に明示的に変換しているにもかかわらず、Python の Pandas ライブラリでは依然としてオブジェクトとして報告される可能性があります。この不一致は、NumPy の基礎となるデータ構造が原因で発生します。
NumPy は ndarray を使用してデータの配列を保存し、ndarray 内の各要素は固定バイト数を持ちます。整数 (int64) と浮動小数点数 (float64) の場合、各要素は 8 バイトを占有します。ただし、文字列は可変長であるため、ndarray に直接格納するのは現実的ではありません。
これに対応するために、Pandas はオブジェクト ndarray を使用してオブジェクトへのポインタを格納します。これらのオブジェクトには実際の文字列値が含まれています。その結果、オブジェクト ndarray のサイズは不定になり、「object」データ型として表されます。
例:
4 つの 64 ビットを含む int64 配列を考えてみましょう。整数と、3 つの文字列オブジェクトへの 4 つのポインターを含むオブジェクト配列:
int64 array: | 1 | 2 | 3 | 4 | object array: | pointer to "hello" | pointer to "world" | pointer to "!" | Visualization: --------- ----------- | int64 | object | |--------- -----------| | 1 | hello | | 2 | world | | 3 | ! | | 4 | null | --------- -----------
この表現では、int64 配列は固定量のスペースを占有し、各要素は 8 バイトです。一方、オブジェクト配列にはさまざまなサイズのオブジェクトへのポインターが格納されるため、データ型は「オブジェクト」になります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3