Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah fungsi astype() dalam Python

Apakah fungsi astype() dalam Python

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-09 06:51:46228semak imbas

What is astype() function in Python

Memahami astype() dalam Python

Fungsi astype() ialah kaedah yang berkuasa dalam Python, terutamanya digunakan dalam pustaka pandas untuk menukar lajur atau set data dalam DataFrame atau Siri kepada jenis data tertentu. Ia juga tersedia dalam NumPy untuk menghantar elemen tatasusunan kepada jenis yang berbeza.


Penggunaan Asas astype()

Fungsi astype() digunakan untuk menghantar jenis data objek panda (seperti Siri atau DataFrame) atau tatasusunan NumPy ke dalam jenis lain.

Sintaks untuk panda:

DataFrame.astype(dtype, copy=True, errors='raise')

Sintaks untuk NumPy:

ndarray.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)

Parameter Utama

1. dtype

Jenis data sasaran yang anda ingin tukarkan data. Ini boleh ditentukan menggunakan:

  • Satu jenis (cth., float, int, str).
  • Kamus memetakan nama lajur kepada jenis (untuk DataFrames panda).

2. salinan (panda dan NumPy)

  • Lalai: Betul
  • Tujuan: Sama ada hendak mengembalikan salinan data asal (jika Benar) atau mengubah suainya di tempatnya (jika Salah).

3. ralat (panda sahaja)

  • Pilihan:
    • 'naikkan' (lalai): Naikkan ralat jika penukaran gagal.
    • 'abaikan': Abaikan ralat secara senyap.

4. pesanan (NumPy sahaja)

  • Mengawal susun atur memori tatasusunan output. Pilihan:
    • 'C': C-pesanan bersebelahan.
    • 'F': Perintah bersebelahan Fortran.
    • 'A': Gunakan perintah Fortran jika input adalah Fortran-bersambung, jika tidak, pesanan C.
    • 'K': Padankan reka letak tatasusunan input.

5. pemutus (NumPy sahaja)

  • Mengawal tingkah laku pemutus:
    • 'tidak': Tiada penghantaran dibenarkan.
    • 'equiv': Hanya perubahan tertib bait dibenarkan.
    • 'selamat': Hanya hantaran yang mengekalkan nilai dibenarkan.
    • 'same_kind': Hanya cast atau cast yang selamat dalam jenis (cth., float -> int) dibenarkan.
    • 'tidak selamat': Sebarang penukaran data dibenarkan.

6. subok (NumPy sahaja)

  • Jika Benar, subkelas dilalui; jika Salah, tatasusunan yang dikembalikan akan menjadi tatasusunan kelas asas.

Contoh

1. Penukaran Asas dalam panda

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)

Output:

A     int64
B    float64
dtype: object

2. Pemetaan Kamus untuk Berbilang Lajur

# Convert multiple columns
df = df.astype({'A': float, 'B': int})
print(df.dtypes)

Output:

DataFrame.astype(dtype, copy=True, errors='raise')

3. Menggunakan errors='ignore'

ndarray.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)

Output:

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)
  • Penukaran gagal untuk 'dua', tetapi tiada ralat dibangkitkan.

4. Menggunakan astype() dalam NumPy

A     int64
B    float64
dtype: object

Output:

# Convert multiple columns
df = df.astype({'A': float, 'B': int})
print(df.dtypes)

5. Menghantar dalam NumPy dengan casting='safe'

A    float64
B      int64
dtype: object

Output:

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. Mengendalikan Jenis Bukan Berangka dalam panda

      A    B
0     1  1.5
1   two  2.5
2     3  3.5

Output:

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. Pengoptimuman Memori Menggunakan astype()

Kod:

[1 2 3]

Output:

Sebelum Pengoptimuman (Penggunaan Memori Asal):

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)

Selepas Pengoptimuman (Penggunaan Memori Dioptimumkan):

Cannot cast array data from dtype('float64') to dtype('<U32') according to the rule 'safe'

Penjelasan:

  • Penggunaan Memori Asal:

    • Lajur A sebagai int64 menggunakan 24 bait (8 bait setiap elemen × 3 elemen).
    • Lajur B sebagai float64 menggunakan 24 bait (8 bait setiap elemen × 3 elemen).
  • Penggunaan Memori Dioptimumkan:

    • Lajur A sebagai int8 menggunakan 3 bait (1 bait setiap elemen × 3 elemen).
    • Lajur B sebagai float32 menggunakan 12 bait (4 bait setiap elemen × 3 elemen).

Penggunaan memori dikurangkan dengan ketara dengan menggunakan jenis data yang lebih kecil, terutamanya apabila bekerja dengan set data yang besar.

Perangkap Biasa

  1. Penukaran Tidak Sah: Menukar jenis yang tidak serasi (cth., rentetan kepada jenis angka apabila nilai bukan angka wujud).
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. Ralat Senyap dengan ralat='ignore': Gunakan dengan berhati-hati kerana ia mungkin gagal untuk menukar secara senyap.

  2. Kehilangan Ketepatan: Menukar daripada jenis ketepatan lebih tinggi (cth., float64) kepada jenis ketepatan lebih rendah (cth., float32).


Contoh Terperinci

1. Penghantaran Jenis Data Kompleks

A    datetime64[ns]
B             bool
dtype: object

Output:

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. Menggunakan astype() dalam NumPy untuk Tatasusunan Berstruktur

Index    128
A         24
B         24
dtype: int64

Output:

DataFrame.astype(dtype, copy=True, errors='raise')

Ringkasan

Fungsi astype() ialah alat serba boleh untuk penukaran jenis data dalam kedua-dua panda dan NumPy. Ia membenarkan kawalan terperinci ke atas tingkah laku penghantaran, pengoptimuman memori dan pengendalian ralat. Penggunaan parameternya yang betul, seperti ralat dalam panda dan penghantaran dalam NumPy, memastikan transformasi jenis data yang mantap dan cekap.

Atas ialah kandungan terperinci Apakah fungsi astype() dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn