web-dev-qa-db-ja.com

pandasが認識するすべてのdtypeは何ですか?

パンダの場合、データ型が

(i)float64int64(およびnp.numberfloat32などのint8のその他のバリアント)

(ii)bool

(iii)datetime64timedelta64

文字列列など、常にdtypeobjectですか?

または、上記のリストに(i)、(ii)、(iii)以外のデータ型がある場合、pandasdtypeおよびobject

41
uday

Uint8もあります。

Pandas dtypes のドキュメントには、さらに多くの情報があります。

pandasオブジェクトに格納される主なタイプは、float、int、bool、datetime64 [ns]、timedelta [ns]、およびobjectです。さらに、これらのdtypeにはアイテムサイズがあります(例:int64およびint32)。

デフォルトでは、整数型はint64であり、float型はfloat64であり、プラットフォームに関係なく(32ビットまたは64ビット)。以下はすべてint64 dtypeになります。

ただし、Numpyは、配列を作成するときにプラットフォーム依存型を選択します。次の場合、32ビットプラットフォームではint32になります。

14
Alexander

pandasは、numpyからdtypeを借用します。このデモについては、次を参照してください。

_import pandas as pd

df = pd.DataFrame({'A': [1,'C',2.]})
df['A'].dtype

>>> dtype('O')

type(df['A'].dtype)

>>> numpy.dtype
_

有効な_numpy.dtypes_のリストを見つけることができます ドキュメントで

「?」ブール値

'b'(符号付き)バイト

「B」符号なしバイト

'i'(符号付き)整数

「u」符号なし整数

'f'浮動小数点

「c」複素浮動小数点

「m」タイムデルタ

「M」日時

'O'(Python)オブジェクト

「S」、「a」ゼロ終了バイト(非推奨)

'U' Unicode文字列

'V'生データ(void)

pandasはこれらの型をサポートする必要があります。上記のオプションのいずれかを入力引数として_pandas.Series_オブジェクトのastypeメソッドを使用すると、pandasSeriesをそのタイプに変換しようとします(または少なくともobjectタイプにフォールバックします)。 _'u'_は、pandasがまったく理解していない唯一の例です。

_df['A'].astype('u')

>>> TypeError: data type "u" not understood
_

これはnumpyエラーです。これは、_'u'_の後に、アイテムごとのバイト数を指定する数値が続く必要があるためです(有効である必要があります)。

_import numpy as np

np.dtype('u')

>>> TypeError: data type "u" not understood

np.dtype('u1')

>>> dtype('uint8')

np.dtype('u2')

>>> dtype('uint16')

np.dtype('u4')

>>> dtype('uint32')

np.dtype('u8')

>>> dtype('uint64')

# testing another invalid argument
np.dtype('u3')

>>> TypeError: data type "u3" not understood
_

要約すると、astypeオブジェクトのpandasメソッドは、_numpy.dtype_に有効な引数で賢明なことを試みます。 numpy.dtype('f')numpy.dtype('float32')と同じであり、numpy.dtype('f8')numpy.dtype('float64')などと同じです。引数をpandasastypeに渡す場合も同じです。メソッド。

NumPyでそれぞれのデータ型クラスを見つけるには、 Pandas docs がこれを推奨しています:

_def subdtypes(dtype):
    subs = dtype.__subclasses__()
    if not subs:
        return dtype
    return [dtype, [subdtypes(dt) for dt in subs]]

subdtypes(np.generic)
_

出力:

_[numpy.generic,
 [[numpy.number,
   [[numpy.integer,
     [[numpy.signedinteger,
       [numpy.int8,
        numpy.int16,
        numpy.int32,
        numpy.int64,
        numpy.int64,
        numpy.timedelta64]],
      [numpy.unsignedinteger,
       [numpy.uint8,
        numpy.uint16,
        numpy.uint32,
        numpy.uint64,
        numpy.uint64]]]],
    [numpy.inexact,
     [[numpy.floating,
       [numpy.float16, numpy.float32, numpy.float64, numpy.float128]],
      [numpy.complexfloating,
       [numpy.complex64, numpy.complex128, numpy.complex256]]]]]],
  [numpy.flexible,
   [[numpy.character, [numpy.bytes_, numpy.str_]],
    [numpy.void, [numpy.record]]]],
  numpy.bool_,
  numpy.datetime64,
  numpy.object_]]
_

パンダはこれらのクラスを有効なタイプとして受け入れます。たとえば、_dtype={'A': np.float}_。

NumPy docs 含む 詳細とグラフ:

dtypes

28
lcameron05