astype() 函數是 Python 中的一個強大方法,主要用於 pandas 函式庫,用於將 DataFrame 或 Series 中的列或資料集轉換為特定資料型別。它也可在 NumPy 中用於將陣列元素轉換為不同類型。
astype() 函數用於將 pandas 物件(如 Series 或 DataFrame)或 NumPy 陣列的資料類型轉換為另一種類型。
DataFrame.astype(dtype, copy=True, errors='raise')
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)
輸出:
A int64 B float64 dtype: object
# Convert multiple columns df = df.astype({'A': float, 'B': int}) print(df.dtypes)
輸出:
DataFrame.astype(dtype, copy=True, errors='raise')
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)
A int64 B float64 dtype: object
輸出:
# Convert multiple columns df = df.astype({'A': float, 'B': int}) print(df.dtypes)
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)
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)
[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'
原始記憶體使用:
最佳化記憶體使用:
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)
Errors='ignore'靜默錯誤
:謹慎使用,因為它可能會靜默地無法轉換。精度損失
:從高精度類型(例如 float64)轉換為低精度類型(例如 float32)。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())
Index 128 A 24 B 24 dtype: int64
輸出:
DataFrame.astype(dtype, copy=True, errors='raise')
astype() 函數是 pandas 和 NumPy 中資料型別轉換的多功能工具。它允許對轉換行為、記憶體最佳化和錯誤處理進行細粒度控制。正確使用其參數(例如 pandas 中的錯誤和 NumPy 中的轉換)可確保穩健且高效的資料類型轉換。
以上是Python 中的 astype() 函數是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!