Pandas thay đổi loại cột thành int64

countrybeer_servingsspirit_servingswine_servingstotal_litres_of_pure_alcoholcontinent0Afghanistan0000. 0Châu Á1Albania89132544. 9Châu Âu2Algeria250140. 7Châu Phi3Andorra24513831212. 4Châu Âu4Angola21757455. 9Châu Phi

Trong [5]

drinks.dtypes

Ra[5]

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object

Tóm tắt kiểu dữ liệu

  • 3 số nguyên [int64]
  • 1 thả nổi [float64]
  • 2 đối tượng [đối tượng]

Phương pháp 1. Thay đổi kiểu dữ liệu sau khi đọc csv

Trong [8]

# to change use .astype[] 
drinks['beer_servings'] = drinks.beer_servings.astype[float]

Trong [10]

drinks.dtypes

Ra[10]

country                          object
beer_servings                   float64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object

Phương pháp 2. Thay đổi kiểu dữ liệu trước khi đọc csv

Trong [11]

drinks = pd.read_csv[url, dtype={'beer_servings':float}]

Trong [12]

drinks.dtypes

Ra[12]

country                          object
beer_servings                   float64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object

Trong [13]

url = '//bit.ly/drinksbycountry'
drinks = pd.read_csv[url]
1

Trong [14]

url = '//bit.ly/drinksbycountry'
drinks = pd.read_csv[url]
2

Ra[14]

order_idquantityitem_namechoice_descriptionitem_price011Chip chiên và Salsa cà chua tươiNaN$2. 39111Izze[Clementine]$3. 39211Nantucket Nectar[Apple]$3. 39311Khoai tây chiên và Salsa ớt xanh cà chuaNaN$2. 39422 Chicken Bowl[Tomatillo-Red Chili Salsa [Nóng], [Đậu đen. $16. 98

Cách tốt nhất để chuyển đổi một hoặc nhiều cột của DataFrame thành giá trị số là sử dụng pandas. to_numeric[]

Hàm này sẽ cố gắng thay đổi các đối tượng không phải là số [chẳng hạn như chuỗi] thành số nguyên hoặc số dấu phẩy động khi thích hợp

sử dụng cơ bản

Đầu vào của to_numeric[] là một Chuỗi hoặc một cột của Khung dữ liệu

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
0

Như bạn có thể thấy, một Sê-ri mới được trả về. Hãy nhớ gán đầu ra này cho một biến hoặc tên cột để tiếp tục sử dụng nó

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
1

Bạn cũng có thể sử dụng nó để chuyển đổi nhiều cột của DataFrame thông qua phương thức apply[]

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
2

Miễn là tất cả các giá trị của bạn có thể được chuyển đổi, đó có thể là tất cả những gì bạn cần

xử lý lỗi

Nhưng nếu một số giá trị không thể chuyển đổi thành kiểu số thì sao?

to_numeric[] cũng nhận một đối số từ khóa lỗi cho phép bạn buộc các giá trị không phải là số phải là NaN hoặc chỉ cần bỏ qua các cột chứa các giá trị này

Đây là một ví dụ sử dụng Chuỗi chuỗi có đối tượng là dtype

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
3

Hành vi mặc định là tăng nếu nó không thể chuyển đổi một giá trị. Trong trường hợp này, nó không thể đối phó với chuỗi 'gấu trúc'

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
4

Thay vì thất bại, chúng tôi có thể muốn 'gấu trúc' được coi là một giá trị số bị thiếu/xấu. Chúng tôi có thể ép buộc các giá trị không hợp lệ thành NaN như sau bằng cách sử dụng đối số từ khóa lỗi

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
5

Tùy chọn thứ ba cho lỗi là bỏ qua thao tác nếu gặp phải giá trị không hợp lệ

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
6

Tùy chọn cuối cùng này đặc biệt hữu ích khi bạn muốn chuyển đổi toàn bộ Khung dữ liệu của mình, nhưng không biết cột nào trong số các cột của chúng tôi có thể được chuyển đổi đáng tin cậy sang loại số. Trong trường hợp đó, chỉ cần viết

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
7

Chức năng sẽ được áp dụng cho từng cột của DataFrame. Các cột có thể chuyển đổi thành kiểu số sẽ được chuyển đổi, trong khi các cột không thể [e. g. chúng chứa các chuỗi hoặc ngày không phải chữ số] sẽ được để yên

hạ thấp

Theo mặc định, chuyển đổi với to_numeric[] sẽ cung cấp cho bạn kiểu dtype int64 hoặc float64 [hoặc bất kỳ chiều rộng số nguyên nào dành cho nền tảng của bạn]

Đó thường là những gì bạn muốn, nhưng nếu bạn muốn tiết kiệm bộ nhớ và sử dụng một dtype nhỏ gọn hơn, như float32 hoặc int8 thì sao?

to_numeric[] cung cấp cho bạn tùy chọn chuyển thành 'số nguyên', 'có dấu', 'không dấu', 'số float'. Dưới đây là ví dụ về một chuỗi loại số nguyên đơn giản

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
8

Truyền xuống 'số nguyên' sử dụng số nguyên nhỏ nhất có thể chứa các giá trị

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
9

Downcasting để 'float' tương tự chọn một loại nổi nhỏ hơn bình thường

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
10

2. astype[]

Phương thức astype[] cho phép bạn xác định rõ ràng về loại dtype mà bạn muốn DataFrame hoặc Sê-ri của mình có. Nó rất linh hoạt ở chỗ bạn có thể thử và chuyển từ loại này sang loại khác

sử dụng cơ bản

Chỉ cần chọn một loại. bạn có thể sử dụng một NumPy dtype [e. g. np. int16], một số loại Python [e. g. bool] hoặc các loại dành riêng cho gấu trúc [như dtype phân loại]

Gọi phương thức trên đối tượng bạn muốn chuyển đổi và astype[] sẽ thử và chuyển đổi nó cho bạn

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
11

Lưu ý rằng tôi đã nói "thử" - nếu astype[] không biết cách chuyển đổi một giá trị trong Sê-ri hoặc Khung dữ liệu, nó sẽ gây ra lỗi. Ví dụ: nếu bạn có giá trị NaN hoặc inf thì bạn sẽ gặp lỗi khi cố chuyển đổi giá trị đó thành số nguyên

kể từ gấu trúc 0. 20. 0, bạn có thể loại bỏ lỗi này bằng cách chuyển errors='ignore'. Đối tượng ban đầu của bạn sẽ được trả lại nguyên vẹn

Hãy cẩn thận

astype[] rất mạnh nhưng đôi khi sẽ chuyển đổi giá trị "không chính xác". Ví dụ

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
8

Đây là những số nguyên nhỏ, vậy chuyển đổi sang loại 8 bit không dấu để tiết kiệm bộ nhớ thì sao?

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
13

Việc chuyển đổi đã thành công, nhưng -7 đã được bao quanh để trở thành 249 [i. e. 28 - 7]

Đang cố gắng hạ thấp bằng cách sử dụng pd. to_numeric[s, downcast='unsigned'] thay vào đó có thể giúp ngăn chặn lỗi này

3. infer_objects[]

Phiên bản 0. 21. 0 trong số gấu trúc đã giới thiệu phương thức infer_objects[] để chuyển đổi các cột của DataFrame có kiểu dữ liệu đối tượng thành một loại cụ thể hơn [chuyển đổi mềm]

Ví dụ: đây là DataFrame có hai cột thuộc loại đối tượng. Một cái chứa các số nguyên thực tế và cái còn lại chứa các chuỗi đại diện cho các số nguyên

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
14

Sử dụng infer_objects[], bạn có thể thay đổi loại cột 'a' thành int64

country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object
15

Cột 'b' đã được để yên vì các giá trị của nó là chuỗi, không phải số nguyên. Nếu muốn thử và buộc chuyển đổi cả hai cột thành một loại số nguyên, bạn có thể sử dụng df. astype[int] thay vào đó

Hãy theo dõi hoặc kết nối với tôi để biết các bài viết về chủ đề AWS và Machine Learning. Nếu bạn quan tâm đến việc muốn bình luận chủ đề cụ thể bên dưới để cho tôi biết. Cảm ơn bạn

Làm cách nào để chuyển đổi một cột thành Int64 trong gấu trúc?

Sử dụng DataFrame của gấu trúc. astype[] hàm để chuyển đổi cột thành int [số nguyên] , bạn có thể áp dụng điều này trên một cột cụ thể hoặc trên toàn bộ DataFrame. Để truyền kiểu dữ liệu thành số nguyên có chữ ký 64 bit, bạn có thể sử dụng numpy. int64 , gọn gàng.

Làm cách nào để thay đổi kiểu dữ liệu cột trong gấu trúc?

1. to_numeric[] Cách tốt nhất để chuyển đổi một hoặc nhiều cột của DataFrame thành giá trị số là sử dụng gấu trúc. to_numeric[]. Hàm này sẽ cố gắng thay đổi các đối tượng không phải là số [chẳng hạn như chuỗi] thành số nguyên hoặc số dấu phẩy động khi thích hợp.

Int64 pandas là gì?

Bạn sẽ thường thấy kiểu dữ liệu Int64 trong Python viết tắt của số nguyên 64 bit . 64 đề cập đến bộ nhớ được phân bổ để lưu trữ dữ liệu trong mỗi ô, liên quan hiệu quả đến số lượng chữ số mà nó có thể lưu trữ trong mỗi “ô”. Phân bổ không gian trước thời hạn cho phép máy tính tối ưu hóa hiệu quả lưu trữ và xử lý.

Làm cách nào để thay đổi kiểu dữ liệu trong pandas?

Để chuyển đổi kiểu dữ liệu trong pandas, có ba tùy chọn cơ bản. .
Sử dụng astype[] để buộc một dtype thích hợp
Tạo một chức năng tùy chỉnh để chuyển đổi dữ liệu
Sử dụng các hàm gấu trúc như to_numeric[] hoặc to_datetime[]

Chủ Đề