ホームページ > バックエンド開発 > Python チュートリアル > Pythonのastype()関数とは何ですか

Pythonのastype()関数とは何ですか

Mary-Kate Olsen
リリース: 2025-01-09 06:51:46
オリジナル
193 人が閲覧しました

What is astype() function in Python

Python の astype() を理解する

astype() 関数は Python の強力なメソッドで、主に pandas ライブラリで DataFrame または Series 内の列またはデータセットを特定のデータ型に変換するために使用されます。 NumPy では、配列要素を別の型にキャストするために使用することもできます。


astype() の基本的な使用法

astype() 関数は、pandas オブジェクト (Series や DataFrame など) または NumPy 配列のデータ型を別の型にキャストするために使用されます。

パンダの構文:

DataFrame.astype(dtype, copy=True, errors='raise')
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

NumPy の構文:

ndarray.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
ログイン後にコピー
ログイン後にコピー

主要パラメータ

1. dtype

データの変換先となるターゲットのデータ型。これは、

を使用して指定できます。
  • 単一の型 (float、int、str など)。
  • 列名を型にマッピングする辞書 (pandas DataFrame の場合)。

2.コピー (パンダと NumPy)

  • デフォルト: True
  • 目的: 元のデータのコピーを返すか (True の場合)、その場で変更するか (False の場合)。

3.エラー (パンダのみ)

  • オプション:
    • 'raise' (デフォルト): 変換が失敗した場合にエラーを発生させます。
    • 'ignore': エラーを黙って無視します。

4.注文 (NumPy のみ)

  • 出力配列のメモリ レイアウトを制御します。オプション:
    • 'C': C 連続順序。
    • 'F': Fortran の連続順序。
    • 'A': 入力が Fortran 連続の場合は Fortran オーダーを使用し、それ以外の場合は C オーダーを使用します。
    • 'K': 入力配列のレイアウトと一致します。

5.キャスト (NumPy のみ)

  • キャスト動作を制御します。
    • 'no': キャストは許可されません。
    • 'equiv': バイトオーダーの変更のみが許可されます。
    • 'safe': 値を保持するキャストのみが許可されます。
    • 'same_kind': 安全なキャストまたは種類内のキャスト (float -> int など) のみが許可されます。
    • 「安全でない」: あらゆるデータ変換が許可されます。

6. subok (NumPy のみ)

  • True の場合、サブクラスが渡されます。 False の場合、返される配列は基本クラスの配列になります。

1. pandas での基本的な変換

import pandas as pd

# Example DataFrame
df = pd.DataFrame({'A': ['1', '2', '3'], 'B': [1.5, 2.5, 3.5]})

# Convert column 'A' to integer
df['A'] = df['A'].astype(int)
print(df.dtypes)
ログイン後にコピー
ログイン後にコピー

出力:

A     int64
B    float64
dtype: object
ログイン後にコピー
ログイン後にコピー

2.複数の列のディクショナリ マッピング

# Convert multiple columns
df = df.astype({'A': float, 'B': int})
print(df.dtypes)
ログイン後にコピー
ログイン後にコピー

出力:

DataFrame.astype(dtype, copy=True, errors='raise')
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

3.エラー = 'ignore' を使用する

ndarray.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
ログイン後にコピー
ログイン後にコピー

出力:

import pandas as pd

# Example DataFrame
df = pd.DataFrame({'A': ['1', '2', '3'], 'B': [1.5, 2.5, 3.5]})

# Convert column 'A' to integer
df['A'] = df['A'].astype(int)
print(df.dtypes)
ログイン後にコピー
ログイン後にコピー
  • 「two」の変換は失敗しますが、エラーは発生しません。

4. NumPy での astype() の使用

A     int64
B    float64
dtype: object
ログイン後にコピー
ログイン後にコピー

出力:

# Convert multiple columns
df = df.astype({'A': float, 'B': int})
print(df.dtypes)
ログイン後にコピー
ログイン後にコピー

5. NumPy で Casting='safe' を使用してキャストする

A    float64
B      int64
dtype: object
ログイン後にコピー

出力:

df = pd.DataFrame({'A': ['1', 'two', '3'], 'B': [1.5, 2.5, 3.5]})

# Attempt conversion with errors='ignore'
df['A'] = df['A'].astype(int, errors='ignore')
print(df)
ログイン後にコピー

6. pandas での非数値型の処理

      A    B
0     1  1.5
1   two  2.5
2     3  3.5
ログイン後にコピー

出力:

import numpy as np

# Example array
arr = np.array([1.1, 2.2, 3.3])

# Convert to integer
arr_int = arr.astype(int)
print(arr_int)
ログイン後にコピー

7. astype() を使用したメモリの最適化

コード:

[1 2 3]
ログイン後にコピー

出力:

最適化前 (元のメモリ使用量):

arr = np.array([1.1, 2.2, 3.3])

# Attempt an unsafe conversion
try:
    arr_str = arr.astype(str, casting='safe')
except TypeError as e:
    print(e)
ログイン後にコピー

最適化後 (メモリ使用量の最適化):

Cannot cast array data from dtype('float64') to dtype('<U32') according to the rule 'safe'
ログイン後にコピー

説明:

  • 元のメモリ使用量:

    • 列 A (int64) は 24 バイト (要素あたり 8 バイト × 3 要素) を使用します。
    • float64 の列 B は 24 バイト (要素あたり 8 バイト × 3 要素) を使用します。
  • 最適化されたメモリ使用量:

    • 列 A (int8) は 3 バイトを使用します (要素ごとに 1 バイト × 3 要素)。
    • float32 の列 B は 12 バイトを使用します (要素ごとに 4 バイト × 3 要素)。

特に大規模なデータセットを扱う場合は、より小さいデータ型を使用することで、メモリ使用量が大幅に削減されます。

よくある落とし穴

  1. 無効な変換: 互換性のない型の変換 (数値以外の値が存在する場合の文字列から数値型への変換など)。
df = pd.DataFrame({'A': ['2022-01-01', '2023-01-01'], 'B': ['True', 'False']})

# Convert to datetime and boolean
df['A'] = pd.to_datetime(df['A'])
df['B'] = df['B'].astype(bool)
print(df.dtypes)
ログイン後にコピー
  1. errors='ignore' によるサイレント エラー: 変換がサイレントに失敗する可能性があるため、注意して使用してください。

  2. 精度の損失: 高精度の型 (例: float64) から低精度の型 (例: float32) への変換。


高度な例

1.複雑なデータ型のキャスト

A    datetime64[ns]
B             bool
dtype: object
ログイン後にコピー

出力:

import pandas as pd

# Original DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [1.1, 2.2, 3.3]})
print("Original memory usage:")
print(df.memory_usage())

# Downcast numerical types
df['A'] = df['A'].astype('int8')
df['B'] = df['B'].astype('float32')

print("Optimized memory usage:")
print(df.memory_usage())
ログイン後にコピー

2. NumPy で構造化配列に astype() を使用する

Index    128
A         24
B         24
dtype: int64
ログイン後にコピー

出力:

DataFrame.astype(dtype, copy=True, errors='raise')
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

概要

astype() 関数は、pandas と NumPy の両方でデータ型を変換するための多用途ツールです。これにより、キャスト動作、メモリの最適化、エラー処理をきめ細かく制御できます。 pandas のエラーや NumPy のキャストなどのパラメーターを適切に使用すると、堅牢で効率的なデータ型変換が保証されます。

以上がPythonのastype()関数とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート