Hướng dẫn dùng numpy dtypes python

NumPy hỗ trợ nhiều kiểu dữ liệu liên quan đến số học so với các kiểu dữ liệu số có sẵn trong Python. Bảng sau đây cho thấy các kiểu dữ liệu số học khác nhau được xác định trong NumPy.

Kiểu dữ liệuMô tảbool_Boolean [Đúng hoặc Sai] được lưu trữ dưới dạng byteint_Kiểu số nguyên mặc định [thường là int64 hoặc int32]intcKiểu số nguyên int C [thường là int32 hoặc int64]intpSố nguyên được sử dụng để lập chỉ mục [giống như C ssize_t; thông thường là int32 hoặc int64]int8Byte [từ -128 đến 127]int16Integer [từ -32768 đến 32767]int32Integer [từ -2147483648 đến 2147483647]int64Integer [từ -9223372036854775808 đến 9223372036854775807]uint8Số nguyên không dấu [từ 0 đến 255]uint16Số nguyên không dấu [từ 0 đến 65535]uint32

 

Số nguyên không dấu [từ 0 đến 4294967295]uint64Số nguyên không dấu [từ 0 đến 18446744073709551615]float_Là kiểu float64float16float: bit dấu, số mũ 5 bit, phần định trị 10 bitfloat32float: bit dấu, số mũ 8 bit, phần định trị 23 bitfloat64float: bit dấu, số mũ 11 bit, phần định trị 52 bitcomplex_Viết tắt cho complex128complex64

 

Số phức, được biểu diễn bằng hai số thực 32 bit [thành phần thực và ảo]complex128Số phức, được biểu thị bằng hai số thực 64 bit [thành phần thực và ảo]

Các kiểu số trong NumPy phải được thông qua thuộc tính dtype [kiểu dữ liệu], mỗi kiểu dữ liệu sẽ có các đặc điểm riêng biệt và kích thước khác nhau. Trong numpy có một số các kiểu có sẵn như np.bool_, np.float32, v.v.

2. Đối tượng kiểu dữ liệu [dtype] trong Numpy

Đối tượng kiểu dữ liệu trong Numpy cũng sẽ miêu tả lại việc cấp phát bộ nhớ tương ứng cho một mảng. Việc cấp phát bộ nhớ cho mảng này sẽ dựa theo các yếu tố sau:

  • Kiểu dữ liệu sử dụng [số nguyên, đối tượng float hoặc Python]
  • Kích thước của dữ liệu sử dụng
  • Thứ tự Byte [little-endian hoặc big-endian]

Thứ tự byte được quyết định bằng cách thêm tiền tố ‘’ vào kiểu dữ liệu. Ký tự  ‘’ có nghĩa là mã hóa là big-endian [byte quan trọng nhất được lưu trữ ở địa chỉ nhỏ nhất].

Để tạo một đối tượng dtype ta cần sử dụng hàm np.dtype[] như sau:

numpy.dtype[object, align, copy]

Trong đó:

  • object – Được chuyển đổi thành đối tượng kiểu dữ liệu
  • align – Nếu đúng, thêm phần đệm vào trường để làm cho trường tương tự như C-struct
  • copy – Tạo một bản sao mới của đối tượng dtype. Nếu sai, kết quả là tham chiếu đến đối tượng kiểu dữ liệu nội trang
3. Ví dụ tạo đối tượng kiểu dữ liệu [dtype] trong Numpy

Ví dụ 1

Ví dụ tạo một đối tượng dtype với kiểu np.int32 như sau:

import numpy as np 

dt = np.dtype[np.int32] 
print[dt]

Kết quả:

int32

Các kiểu dữ liệu: int8, int16, int32, int64 có thể được thay thế bằng chuỗi tương đương ‘i1’, ‘i2’, ‘i4’ như ví dụ bên dưới thay kiểu int32 bằng chuỗi “i4”

import numpy as np 

dt = np.dtype["i4"] 
print[dt]

Kết quả:

int32

Ví dụ 2

Các ví dụ sau đây cho thấy việc sử dụng kiểu dữ liệu có cấu trúc. Ở đây, tên trường và kiểu dữ liệu vô hướng tương ứng sẽ được khai báo. Trường “name” là kiểu dữ liệu số nguyên np.int8

import numpy as np 

dt = np.dtype[[['name',np.int8]]] 
print[dt]

Kết quả:

[['name', 'i1']]

Ví dụ tiếp theo, sử dụng đối tượng kiểu dữ liệu đã được định nghĩa cho một mảng np.array[] thông qua thuộc tính dtype như sau:

import numpy as np 

dt = np.dtype[[['name',np.int8]]] 
a = np.array[[[10,],[20,],[30,]], dtype = dt] 
print[a]

Kết quả:

[[10,] [20,] [30,]]

Truy cập nội dung có trong cột name

import numpy as np 

dt = np.dtype[[['name',np.int8]]] 
a = np.array[[[10,],[20,],[30,]], dtype = dt] 
print[a['name']]

Kết quả:

import numpy as np 

dt = np.dtype[np.int32] 
print[dt]
0

Ví dụ 3

Các ví dụ dưới đây khai báo đối tượng kiểu dữ liệu có cấu trúc student với trường ‘name’ là kiểu chuỗi ký tự, ‘age’ là kiểu số nguyên và ‘point’ là kiểu số thực.

import numpy as np 

dt = np.dtype[np.int32] 
print[dt]
1

Kết quả:

import numpy as np 

dt = np.dtype[np.int32] 
print[dt]
2

Loại dtype này được áp dụng cho đối tượng ndarray. Ví dụ dưới đây, khai báo một np.array[] có kiểu dữ liệu dtype là student

Hàm DataFrame.astype [] được sử dụng để ép kiểu dữ liệu cột [dtype] trong đối tượng gấu trúc, nó hỗ trợ String, flat, date, int, datetime bất kỳ kiểu dữ liệu nào khác được Numpy hỗ trợ. Điều này rất hữu ích khi bạn muốn truyền cột DataFrame từ kiểu dữ liệu này sang kiểu dữ liệu khác.

Nội dung chính Show

  • 1. Cú pháp DataFrame.astype []
  • 2. DataFrame.astype [] – Truyền Tất cả các Cột Kiểu dữ liệu [dtype]
  • 3. Thay đổi loại cột cụ thể
  • 4. astype [] – Truyền nhiều cột bằng cách sử dụng Dict
  • 5. astype [] với lỗi tăng hoặc bỏ qua
  • Sự kết luận
  • Người giới thiệu

Nội dung chính

  • 1. Cú pháp DataFrame.astype []
  • 2. DataFrame.astype [] – Truyền Tất cả các Cột Kiểu dữ liệu [dtype]
  • 3. Thay đổi loại cột cụ thể
  • 4. astype [] – Truyền nhiều cột bằng cách sử dụng Dict
  • 5. astype [] với lỗi tăng hoặc bỏ qua
  • Sự kết luận
  • Người giới thiệu

Nội dung chính

  • 1. Cú pháp DataFrame.astype []
  • 2. DataFrame.astype [] – Truyền Tất cả các Cột Kiểu dữ liệu [dtype]
  • 3. Thay đổi loại cột cụ thể
  • 4. astype [] – Truyền nhiều cột bằng cách sử dụng Dict
  • 5. astype [] với lỗi tăng hoặc bỏ qua
  • Sự kết luận
  • Người giới thiệu

pandas astype [] Các điểm chính –

  1. Nó được sử dụng để ép kiểu dữ liệu [dtype].
  2. Hỗ trợ thay đổi nhiều kiểu dữ liệu bằng Dict.
  3. Hỗ trợ tất cả các kiểu dữ liệu đi kèm với Numpy.
  • 1. Cú pháp DataFrame.astype []
  • 2. DataFrame.astype [] – Truyền Tất cả các Cột Kiểu dữ liệu [dtype]
  • 3. Thay đổi loại cột cụ thể
  • 4. astype [] – Truyền nhiều cột bằng cách sử dụng Dict
  • 5. astype [] với lỗi tăng hoặc bỏ qua
    • Sự kết luận
    • Người giới thiệu

1. Cú pháp DataFrame.astype []

Sau đây là một cú pháp của DataFrame.astype[]. Chức năng này có dtype, copyvà errors params.


# astype[] Syntax
DataFrame.astype[dtype, copy=True, errors="raise"]

Sau đây là các thông số của astype[].

  • dtype – Chấp nhận kiểu numpy.dtype hoặc Python để truyền toàn bộ đối tượng gấu trúc sang cùng một kiểu. Sử dụng {col: dtype,…}, trong đó col là nhãn cột và dtype là kiểu numpy.dtype hoặc kiểu Python để truyền một hoặc nhiều cột của DataFrame.
  • copy -Default Đúng. Trả lại một bản sao khi copy=True [hãy thiết lập rất cẩn thận copy=False vì các thay đổi đối với giá trị sau đó có thể truyền sang các đối tượng gấu trúc khác].
  • errors – Tăng lương mặc định.
    • Sử dụng ‘raise’ để tạo ngoại lệ khi không thể truyền do dữ liệu không hợp lệ cho loại.
    • Sử dụng ‘bỏ qua’ để không tăng ngoại lệ [lỗi / ngoại lệ supress]. Khi có lỗi, trả lại đối tượng ban đầu.

2. DataFrame.astype [] – Truyền Tất cả các Cột Kiểu dữ liệu [dtype]

Theo mặc định gấu trúc astype[] cố gắng truyền tất cả các cột DataFrame thành được chỉ định numpy.dtype hoặc các kiểu Python [int, string, float, date, datetime]. Nếu bất kỳ cột nào không thể truyền do dữ liệu hoặc nanô không hợp lệ, điều đó sẽ gây ra lỗi ‘ValueError: chữ không hợp lệ’ và không hoạt động.

Ví dụ dưới đây minh họa truyền tất cả các kiểu dữ liệu cột.


import pandas as pd
import numpy as np
# Create DataFrame from Dictionary
technologies = {
    'Fee' :["20000","25000","26000"],
    'Discount':["1000","2300","1500"]
              }
df = pd.DataFrame[technologies]
print[df.dtypes]

# Outputs
Fee         object
Discount    object
dtype: object

DataFrame.dtypes trả về tên Cột và kiểu cho tất cả các cột DataFrame. Lưu ý rằng DataFrame ở trên có các loại đối tượng cho tất cả các cột.

Bây giờ, hãy truyền kiểu dữ liệu sang Số nguyên có dấu 64 bitbạn có thể dùng numpy.int64,numpy.int_, int64 hoặc int như tham số. Để truyền tới Số nguyên có dấu 32 bitsử dụng numpy.int32, int32.


# Cast all columns to int
df = df.astype[np.int64]
df = df.astype['int64']
df = df.astype['int']

print[df.dtypes] 

# All gives the same output.
Fee         int64
Discount    int64
dtype: object

Lưu ý rằng nó đã cập nhật tất cả các cột với kiểu mới.

Hãy truyền nó sang Chuỗi, bằng cách sử dụng numpy.str_ hoặc string.


# Cast all columns to string
df = df.astype['string']
print[df.dtypes]

# Outputs
Fee         string
Discount    string
dtype: object

Hãy truyền nó sang kiểu float bằng cách sử dụng numpy.float64, numpy.float_, float


# Cast all columns to float
df = df.astype['float']
print[df.dtypes]

# Outputs
Fee         float
Discount    flat
dtype: object

3. Thay đổi loại cột cụ thể

Bạn cũng có thể thay đổi loại cột cụ thể bằng cách sử dụng Series.astype[]vì mỗi cột trên DataFrame là Chuỗi gấu trúc, tôi sẽ lấy cột từ DataFrame làm Chuỗi và sử dụng astype[]. Trong ví dụ dưới đây df.Fee hoặc df[‘Fee’] trả về đối tượng Dòng.


# Cast specific column type
df.Fee = df.Fee.astype['int']
[or]
df.Fee = df['Fee'].astype['int']
print[df.dtypes]

# Outputs
Fee          int64
Discount    object
dtype: object

4. astype [] – Truyền nhiều cột bằng cách sử dụng Dict

dtype tham số của astype[] cũng hỗ trợ Từ điển ở định dạng {col: dtype,…} trong đó col là nhãn cột và dtype là numpy.dtype hoặc kiểu Python [int, string, float, date, datetime] để ép một hoặc nhiều cột DataFrame.


import pandas as pd
import numpy as np
# Create DataFrame from Dictionary
technologies = {
    'Courses':["Spark","PySpark","Hadoop"],
    'Fee' :["20000","25000","26000"],
    'Duration':['30day','40days','35days'],
    'Discount':["1000","2300","1500"]
              }

df = pd.DataFrame[technologies]
print[df.dtypes]

# Outputs
Courses     object
Fee         object
Duration    object
Discount    object
dtype: object

Bây giờ, bằng cách sử dụng gấu trúc DataFrame.astype[]đúc Courses đến string, Fee đến int và Discount đến float.


df2 = df.astype[{'Courses':'string','Fee':'int','Discount':'float'}]
print[df2.dtypes]

# Outputs
Courses      string
Fee           int64
Duration     object
Discount    float64
dtype: object

5. astype [] với lỗi tăng hoặc bỏ qua

Cuối cùng, hãy xem cách bạn có thể nâng cao hoặc bỏ qua lỗi trong khi truyền, để làm như vậy, bạn nên sử dụng errors tham số. Theo mặc định, nó sử dụng raise như một giá trị có nghĩa là tạo ra một ngoại lệ khi không thể truyền do dữ liệu không hợp lệ cho kiểu.

Từ DataFrame của chúng tôi Courses có string dữ liệu, hãy truyền dữ liệu này tới int và hãy xem chuyện gì xảy ra.


# Raise error when unable to cast
df.Courses = df.Courses.astype['int']

# Outputs
ValueError: invalid literal for int[] with base 10: 'Spark'

Như bạn thấy, nó đã gây ra lỗi khi không thể truyền. Bây giờ chúng ta hãy loại bỏ ngoại lệ bằng cách sử dụng giá trị bỏ qua trên thông số lỗi. Với điều này, khi lỗi xảy ra, nó sẽ bỏ qua lỗi và trả về cùng một đối tượng mà không cần cập nhật.


# Ignore error when unable to cast
df.Courses = df.Courses.astype['int', errors="ignore"]
print[df.dtypes]

# Outputs
Courses      string
Fee           int64
Duration     object
Discount    float64
dtype: object

Sự kết luận

Trong bài viết này, tôi đã giải thích cú pháp của gấu trúc DataFrame.astype [], ví dụ về truyền toàn bộ DataFrame, cột cụ thể, nhiều cột thành kiểu numpy.dtype hoặc Python [int, string, float, date, datetime].

Chủ Đề