パンダの場合、データ型が
(i)float64
、int64
(およびnp.number
、float32
などのint8
のその他のバリアント)
(ii)bool
(iii)datetime64
、timedelta64
文字列列など、常にdtype
がobject
ですか?
または、上記のリストに(i)、(ii)、(iii)以外のデータ型がある場合、pandas
がdtype
およびobject
?
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になります。
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
メソッドを使用すると、pandas
がSeries
をそのタイプに変換しようとします(または少なくとも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')
などと同じです。引数をpandas
astype
に渡す場合も同じです。メソッド。
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 含む 詳細とグラフ: