Làm thế nào để bạn chuyển đổi một khung dữ liệu thành int trong python?
Sử dụng một numpy. dtype hoặc kiểu Python để chuyển toàn bộ đối tượng pandas thành cùng loại. Ngoài ra, sử dụng {col. dtype, …}, trong đó col là nhãn cột và dtype là numpy. dtype hoặc loại Python để truyền một hoặc nhiều cột của DataFrame thành các loại dành riêng cho cột Show
Trả lại một bản sao khi >>> df.int_col.dtypesdtype('int64')22 (hãy rất cẩn thận khi đặt >>> df.astype('int32').dtypes col1 int32 col2 int32 dtype: object0 vì các thay đổi đối với giá trị sau đó có thể lan truyền sang các đối tượng gấu trúc khác) Khi thực hiện phân tích dữ liệu, điều quan trọng là đảm bảo các loại dữ liệu chính xác. Nếu không, bạn có thể nhận được kết quả hoặc lỗi không mong muốn. Trong trường hợp của Pandas, nó sẽ suy luận chính xác các loại dữ liệu trong nhiều trường hợp và bạn có thể tiếp tục với phân tích của mình mà không cần suy nghĩ thêm về chủ đề này Mặc dù gấu trúc hoạt động tốt như thế nào, tại một số điểm trong quá trình phân tích dữ liệu của bạn, bạn có thể sẽ cần chuyển đổi rõ ràng dữ liệu từ loại này sang loại khác. Bài viết này sẽ thảo luận về cách thay đổi dữ liệu thành kiểu số. Cụ thể hơn, bạn sẽ học cách sử dụng các phương pháp tích hợp sẵn của Pandas >>> df.int_col.dtypesdtype('int64')5 và >>> df.int_col.dtypesdtype('int64')6 để giải quyết các vấn đề phổ biến sau
Để trình diễn, chúng tôi tạo một tập dữ liệu và sẽ tải nó bằng một hàm import pandas as pdhình ảnh của tác giả Vui lòng kiểm tra repo Github để biết mã nguồn Kiểm tra kiểu dữ liệu Trước khi chúng tôi đi sâu vào các loại dữ liệu thay đổi, hãy xem nhanh cách kiểm tra các loại dữ liệu. Nếu chúng tôi muốn xem tất cả các loại dữ liệu trong DataFrame, chúng tôi có thể sử dụng thuộc tính >>> df.int_col.dtypesdtype('int64')9 >>> df.dtypesstring_col object Thuộc tính này cũng có trong Series và chúng ta có thể sử dụng nó để kiểm tra kiểu dữ liệu trên một cột cụ thể. Chẳng hạn, hãy kiểm tra kiểu dữ liệu của int_col >>> df.int_col.dtypesdtype('int64') Nếu chúng tôi muốn khám phá dữ liệu, phương pháp >>> df.info()RangeIndex: 4 entries, 0 to 30 có thể hữu ích hơn vì nó cung cấp RangeIndex, tổng số cột, số lượng không null, dtypes và mức sử dụng bộ nhớ. Đây là nhiều thông tin có giá trị giúp chúng ta nắm bắt được bức tranh tổng thể hơn về dữ liệu >>> df.info()RangeIndex: 4 entries, 0 to 31. Chuyển đổi chuỗi thành int/float Cách đơn giản nhất để chuyển đổi một cột Pandas sang một loại khác là sử dụng phương pháp của Sê-ri >>> df.int_col.dtypesdtype('int64')5. Chẳng hạn, để chuyển đổi chuỗi thành số nguyên, chúng ta có thể gọi nó như sau >>> df.int_col.dtypesdtype('int64')2 Chúng ta có thể thấy rằng nó đang sử dụng số nguyên 64 bit theo mặc định. Trong một số trường hợp, việc sử dụng các số nguyên ngắn hơn có thể hiệu quả hơn về bộ nhớ khi xử lý một tập dữ liệu lớn. Để làm điều đó, bạn chỉ cần gọi >>> df.info()RangeIndex: 4 entries, 0 to 32 , >>> df.info()RangeIndex: 4 entries, 0 to 33 hoặc >>> df.info()RangeIndex: 4 entries, 0 to 34 Tương tự, nếu muốn chuyển kiểu dữ liệu sang float, chúng ta có thể gọi >>> df.info()RangeIndex: 4 entries, 0 to 35. Theo mặc định, nó đang sử dụng số dấu phẩy động 64 bit. Chúng ta có thể sử dụng >>> df.info()RangeIndex: 4 entries, 0 to 36 để có độ chính xác cao hơn hoặc >>> df.info()RangeIndex: 4 entries, 0 to 37 để có hiệu quả bộ nhớ tốt hơn >>> df.int_col.dtypesdtype('int64')92. Chuyển đổi float thành int Nếu chúng ta muốn chuyển đổi một cột float thành số nguyên, chúng ta có thể thử sử dụng >>> df.int_col.dtypesdtype('int64')5 mà chúng ta đã sử dụng ở trên >>> df.int_col.dtypesdtype('int64')1hình ảnh của tác giả Tuy nhiên, có một chút vấn đề. Bằng cách hiển thị DataFrame, chúng ta có thể thấy rằng cột được chuyển đổi thành số nguyên nhưng làm tròn tất cả các giá trị xuống. Nó có thể ổn, nhưng trong hầu hết các trường hợp, tôi sẽ tưởng tượng rằng không. Nếu chúng ta muốn chuyển đổi thành số nguyên và làm tròn theo cách mà chúng ta mong đợi, trước tiên chúng ta có thể thực hiện >>> df.info()RangeIndex: 4 entries, 0 to 39 >>> df.int_col.dtypesdtype('int64')3hình ảnh của tác giả Bây giờ, số >>> df.int_col.dtypesdtype('int64')20 được làm tròn thành >>> df.int_col.dtypesdtype('int64')213. Chuyển đổi một cột của các loại hỗn hợp Hãy chuyển sang một cột gồm các chuỗi và số hỗn hợp. Khi chạy >>> df.int_col.dtypesdtype('int64')22, chúng tôi nhận được ValueError >>> df.int_col.dtypesdtype('int64')7hình ảnh của tác giả Lỗi cho thấy đó là sự cố với giá trị >>> df.int_col.dtypesdtype('int64')23 vì nó không thể được chuyển đổi thành số nguyên. Để giải quyết vấn đề này, chúng ta có thể sử dụng hàm Pandas >>> df.int_col.dtypesdtype('int64')6 với đối số >>> df.int_col.dtypesdtype('int64')25 >>> df.int_col.dtypesdtype('int64')1 Nhưng khi kiểm tra >>> df.int_col.dtypesdtype('int64')9, bạn sẽ thấy nó được chuyển đổi thành >>> df.int_col.dtypesdtype('int64')27 >>> df.dtypesstring_col object0 Trong một số trường hợp, bạn không muốn xuất ra giá trị float mà bạn muốn nó là số nguyên, chẳng hạn như chuyển đổi cột ID. Chúng ta có thể gọi >>> df.int_col.dtypesdtype('int64')28. Lưu ý rằng nó có vốn >>> df.int_col.dtypesdtype('int64')29 và khác với Numpy >>> df.int_col.dtypesdtype('int64')90. Điều này làm là thay đổi Numpy's >>> df.int_col.dtypesdtype('int64')91 thành Pandas' >>> df.int_col.dtypesdtype('int64')92 và điều này cho phép nó là một số nguyên >>> df.dtypesstring_col object1 Ngoài ra, chúng ta có thể thay thế Numpy >>> df.int_col.dtypesdtype('int64')93 bằng một giá trị khác (ví dụ: thay thế >>> df.int_col.dtypesdtype('int64')91 bằng >>> df.int_col.dtypesdtype('int64')95) và gọi >>> df.int_col.dtypesdtype('int64')22 >>> df.dtypesstring_col object24. Xử lý các giá trị còn thiếu Bây giờ chúng ta nên được trang bị đầy đủ để xử lý các giá trị còn thiếu. Trong Pandas, các giá trị bị thiếu được gán giá trị >>> df.int_col.dtypesdtype('int64')91, viết tắt của “Không phải là số”. Vì lý do kỹ thuật, các giá trị >>> df.int_col.dtypesdtype('int64')91 này luôn là của >>> df.int_col.dtypesdtype('int64')27 >>> df.dtypesstring_col object3 Khi chuyển đổi một cột có giá trị bị thiếu thành số nguyên, chúng tôi cũng sẽ nhận được ValueError vì không thể chuyển đổi >>> df.int_col.dtypesdtype('int64')91 thành số nguyênhình ảnh của tác giả Để khắc phục lỗi, chúng ta có thể gọi >>> df.int_col.dtypesdtype('int64')28 như chúng ta đã làm ở trên (Lưu ý đó là >>> df.int_col.dtypesdtype('int64')29 viết hoa, giống như đã đề cập trong phần trước). Điều này làm là thay đổi Numpy's >>> df.int_col.dtypesdtype('int64')91 thành Pandas' >>> df.int_col.dtypesdtype('int64')92 và điều này cho phép nó là một số nguyên >>> df.dtypesstring_col object4 Ngoài ra, chúng ta có thể thay thế Numpy >>> df.int_col.dtypesdtype('int64')91 bằng một giá trị khác (ví dụ: thay thế >>> df.int_col.dtypesdtype('int64')91 bằng >>> df.int_col.dtypesdtype('int64')95) và gọi >>> df.int_col.dtypesdtype('int64')22 >>> df.dtypesstring_col object5 Nếu bạn muốn tìm hiểu thêm về cách xử lý các giá trị bị thiếu, bạn có thể xem Làm việc với các giá trị còn thiếu trong PandasHướng dẫn về giá trị bị thiếu trong Pandas và cách sử dụng các phương thức tích hợp sẵn để xử lý chúnghướng tới khoa học dữ liệu. com 5. Chuyển cột tiền thành sốHãy chuyển sang cột tiền. Vấn đề là nếu chúng tôi đang sử dụng phương pháp trên, chúng tôi sẽ nhận được tất cả các giá trị >>> df.int_col.dtypesdtype('int64')91 hoặc >>> df.int_col.dtypesdtype('int64')92 vì chúng đều là các chuỗi có ký hiệu >>> df.int_col.dtypesdtype('int64')31 và >>> df.int_col.dtypesdtype('int64')32 và chúng không thể được chuyển đổi thành số. Vì vậy, điều đầu tiên chúng ta phải làm là xóa tất cả các biểu tượng không hợp lệ >>> df.dtypesstring_col object6 Chúng tôi xâu chuỗi 2 cuộc gọi >>> df.int_col.dtypesdtype('int64')33, một cho >>> df.int_col.dtypesdtype('int64')31 và một cho >>> df.int_col.dtypesdtype('int64')32, để thay thế chúng bằng một chuỗi trống Nếu bạn đã quen với biểu thức chính quy, chúng ta cũng có thể thay thế các ký hiệu đó bằng biểu thức chính quy >>> df.dtypesstring_col object7 >>> df.int_col.dtypesdtype('int64')36 nói rằng chúng tôi muốn thay thế >>> df.int_col.dtypesdtype('int64')31 và >>> df.int_col.dtypesdtype('int64')32 bằng một chuỗi rỗng. Đối số >>> df.int_col.dtypesdtype('int64')39 giả định mẫu được truyền vào là một biểu thức chính quy (Lưu ý rằng nó mặc định là >>> df.int_col.dtypesdtype('int64')70)6. Chuyển đổi boolean thành 0/1 Chúng tôi có >>> df.int_col.dtypesdtype('int64')70/ >>> df.int_col.dtypesdtype('int64')72, nhưng bạn có thể tưởng tượng trường hợp cần những thứ này như >>> df.int_col.dtypesdtype('int64')95 và >>> df.int_col.dtypesdtype('int64')74 , chẳng hạn, nếu bạn đang xây dựng một mô hình học máy và đây là một trong những tính năng đầu vào của bạn, thì bạn cần nó phải là số và . Điều này thực ra rất đơn giản, bạn chỉ cần gọi >>> df.int_col.dtypesdtype('int64')22 >>> df.dtypesstring_col object87. Chuyển đổi nhiều kiểu dữ liệu cột cùng một lúc Cho đến nay, chúng tôi đã chuyển đổi loại dữ liệu một cột tại một thời điểm. Ví dụ >>> df.dtypesstring_col object9 Có một phương thức DataFrame còn có tên là >>> df.int_col.dtypesdtype('int64')5 cho phép chúng ta chuyển đổi nhiều kiểu dữ liệu cột cùng một lúc. Tiết kiệm thời gian khi bạn có nhiều cột muốn thay đổi >>> df.int_col.dtypesdtype('int64')08. Xác định kiểu dữ liệu của từng cột khi đọc tệp CSV Nếu bạn muốn đặt kiểu dữ liệu cho từng cột khi đọc tệp CSV, bạn có thể sử dụng đối số >>> df.int_col.dtypesdtype('int64')11 khi tải dữ liệu bằng >>> df.int_col.dtypesdtype('int64')12 >>> df.int_col.dtypesdtype('int64')1 Đối số >>> df.int_col.dtypesdtype('int64')11 lấy một từ điển với khóa đại diện cho cột và giá trị đại diện cho kiểu dữ liệu. Sự khác biệt giữa phương pháp này và phương pháp trên là phương pháp này thực hiện chuyển đổi trong quá trình đọc và có thể tiết kiệm thời gian và hiệu quả hơn về bộ nhớ9. Tạo một chức năng tùy chỉnh để chuyển đổi dữ liệu thành số Khi dữ liệu hơi phức tạp để chuyển đổi, chúng ta có thể tạo một chức năng tùy chỉnh và áp dụng nó cho từng giá trị để chuyển đổi sang loại dữ liệu phù hợp Chẳng hạn, cột money_col, đây là một hàm đơn giản mà chúng ta có thể sử dụng >>> df.int_col.dtypesdtype('int64')2 Chúng ta cũng có thể sử dụng hàm lambda >>> df.int_col.dtypesdtype('int64')310. Sự khác biệt giữa >>> df.int_col.dtypesdtype('int64')5 và >>> df.int_col.dtypesdtype('int64')6 Cách đơn giản nhất để chuyển đổi kiểu dữ liệu từ loại này sang loại khác là sử dụng phương thức >>> df.int_col.dtypesdtype('int64')5. Phương pháp này được hỗ trợ bởi cả Pandas DataFrame và Series. Nếu bạn đã có kiểu dữ liệu số ( >>> df.int_col.dtypesdtype('int64')17, >>> df.int_col.dtypesdtype('int64')18, >>> df.int_col.dtypesdtype('int64')19, >>> df.dtypesstring_col object00, >>> df.dtypesstring_col object01, >>> df.dtypesstring_col object02, >>> df.int_col.dtypesdtype('int64')27, >>> df.dtypesstring_col object04 và >>> df.dtypesstring_col object05), bạn cũng có thể sử dụng >>> df.int_col.dtypesdtype('int64')5 để
Tuy nhiên, >>> df.int_col.dtypesdtype('int64')5 sẽ không hoạt động đối với cột có nhiều loại khác nhau. Chẳng hạn, mix_col có >>> df.dtypesstring_col object08 và missing_col có >>> df.int_col.dtypesdtype('int64')91. Nếu chúng tôi cố gắng sử dụng >>> df.int_col.dtypesdtype('int64')5, chúng tôi sẽ nhận được ValueError. Kể từ Pandas 0. 20. 0, lỗi này có thể được khắc phục bằng cách đặt đối số >>> df.dtypesstring_col object11 nhưng dữ liệu gốc của bạn sẽ được trả về nguyên vẹn Hàm Pandas >>> df.int_col.dtypesdtype('int64')6 có thể xử lý các giá trị này một cách dễ dàng hơn. Thay vì thất bại, chúng ta có thể đặt đối số >>> df.int_col.dtypesdtype('int64')25 để ép buộc các giá trị không hợp lệ thành >>> df.int_col.dtypesdtype('int64')91 >>> df.int_col.dtypesdtype('int64')4Kết luận Chúng ta đã thấy cách chúng ta có thể chuyển đổi cột dữ liệu Pandas thành kiểu số với >>> df.int_col.dtypesdtype('int64')5 và >>> df.int_col.dtypesdtype('int64')6. >>> df.int_col.dtypesdtype('int64')5 là cách đơn giản nhất và cung cấp nhiều khả năng hơn trong cách chuyển đổi, trong khi >>> df.int_col.dtypesdtype('int64')6 có nhiều chức năng mạnh mẽ hơn để xử lý lỗi Tôi hy vọng bài viết này sẽ giúp bạn tiết kiệm thời gian trong việc học Pandas. Tôi khuyên bạn nên xem tài liệu về API >>> df.dtypesstring_col object19 và >>> df.int_col.dtypesdtype('int64')6 và để biết về những điều khác mà bạn có thể làm Cảm ơn vì đã đọc. Vui lòng kiểm tra sổ ghi chép để biết mã nguồn và tiếp tục theo dõi nếu bạn quan tâm đến khía cạnh thực tế của máy học Làm cách nào để chuyển đổi DataFrame float thành int trong Python?Cách chuyển đổi số float thành số nguyên trong Pandas DataFrame . Cột DataFrame cụ thể sử dụng astype(int) hoặc apply(int) Toàn bộ Khung dữ liệu trong đó kiểu dữ liệu của tất cả các cột là float Khung dữ liệu hỗn hợp trong đó kiểu dữ liệu của một số cột là float DataFrame chứa các giá trị NaN Làm cách nào để chuyển đổi giá cột gấu trúc thành số nguyên?7 cách để chuyển đổi cột DataFrame của gấu trúc thành int . Các phương pháp khác nhau để chuyển đổi cột thành int trong pandas DataFrame Tạo pandas DataFrame với dữ liệu mẫu Phương pháp 1. Chuyển đổi cột kiểu float thành int bằng phương thức astype() Phương pháp 2. Chuyển đổi cột kiểu float thành int bằng phương thức astype() với từ điển Làm cách nào để chuyển đổi chuỗi thành int trong DataFrame Python?Để chuyển đổi Chuỗi thành Int (Số nguyên) từ Pandas DataFrame hoặc Sê-ri hãy sử dụng Sê-ri. astype(int) hoặc pandas. các hàm to_numeric() .
Dtype ('O') trong gấu trúc là gì?Có nghĩa là. Đối tượng 'O' (Python) . Nguồn . Ký tự đầu tiên chỉ định loại dữ liệu và các ký tự còn lại chỉ định số byte cho mỗi mục, ngoại trừ Unicode, được hiểu là số lượng ký tự. Kích thước vật phẩm phải tương ứng với loại hiện có, nếu không sẽ xảy ra lỗi. |