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. Ngày giờ là kiểu dữ liệu phổ biến trong các dự án khoa học dữ liệu và dữ liệu thường được lưu dưới dạng số hoặc chuỗi. Trong quá trình phân tích dữ liệu, bạn có thể sẽ cần chuyển đổi chúng thành kiểu ngày giờ một cách rõ ràng Show
Bài viết này sẽ thảo luận về cách chuyển đổi số và chuỗi thành kiểu ngày giờ. 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 >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 và >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 để giải quyết các vấn đề phổ biến sau
Vui lòng kiểm tra Notebook để biết mã nguồn 1. Chuyển đổi số thành ngày giờ Pandas có 2 phương thức tích hợp sẵn là >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 và >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 có thể được sử dụng để chuyển đổi số thành ngày giờ. Chẳng hạn, để chuyển đổi số biểu thị thứ hai thành ngày giờ df = pd.DataFrame({'date': [1470195805, 1480195805, 1490195805], Khi sử dụng >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 , chúng ta cần gọi nó từ Pandas và đặt đối số là >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:256 >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:25 Khi sử dụng >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 , chúng ta cần gọi nó từ Sê-ri (cột ngày) và chuyển vào ____1_______8 >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:25 Tương tự, chúng ta có thể chuyển đổi các số biểu thị các đơn vị khác (_______1_______9, df = pd.DataFrame({'date': [1470, 1480, 1490],0, df = pd.DataFrame({'date': [1470, 1480, 1490],1, df = pd.DataFrame({'date': [1470, 1480, 1490],2, df = pd.DataFrame({'date': [1470, 1480, 1490],3) thành ngày giờ, ví dụ, các số biểu thị ngày df = pd.DataFrame({'date': [1470, 1480, 1490],2. Chuyển đổi chuỗi thành datetime Thông thường, bạn sẽ thấy rằng ngày tháng được biểu diễn dưới dạng chuỗi. Trong Pandas, các chuỗi được hiển thị dưới dạng đối tượng, đó là biệt ngữ nội bộ của Pandas cho chuỗi >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'], Cả >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 và >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 đều có thể được sử dụng để chuyển đổi chuỗi thành ngày giờ >>> pd.to_datetime(df['date'])0 2015-03-103. Xử lý định dạng ngày đầu tiên Theo mặc định, >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 sẽ phân tích các chuỗi có định dạng tháng đầu tiên (MM/DD, MM DD hoặc MM-DD) và cách sắp xếp này tương đối độc đáo ở Hoa Kỳ Ở hầu hết các nơi trên thế giới, ngày được viết trước (DD/MM, DD MM hoặc DD-MM). Nếu bạn muốn Pandas xem xét ngày đầu tiên thay vì tháng, bạn có thể đặt đối số df = pd.DataFrame({'date': [1470, 1480, 1490],7 thành df = pd.DataFrame({'date': [1470, 1480, 1490],8 df = pd.DataFrame({'date': ['3/10/2000', '3/11/2000', '3/12/2000'],Hình ảnh của tác giả Ngoài ra, bạn chuyển định dạng tùy chỉnh cho đối số df = pd.DataFrame({'date': [1470, 1480, 1490],94. Xử lý định dạng ngày giờ tùy chỉnh Theo mặc định, các chuỗi được phân tích cú pháp bằng trình phân tích cú pháp tích hợp sẵn của Pandas từ >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],0. Đôi khi, chuỗi của bạn có thể ở định dạng tùy chỉnh, ví dụ: YYYY-d-m HH. MM. SS. Pandas >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 có một đối số được gọi là df = pd.DataFrame({'date': [1470, 1480, 1490],9 cho phép bạn chuyển một định dạng tùy chỉnh df = pd.DataFrame({'date': ['2016-6-10 20:30:0',Hình ảnh của tác giả4. Xử lý lỗi phân tích cú pháp Nếu một ngày không đáp ứng, chúng tôi sẽ nhận được ParseError khi chuyển đổi. Chẳng hạn, một chuỗi không hợp lệ >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],3 df = pd.DataFrame({'date': ['3/10/2000', 'a/11/2000', '3/12/2000'],hình ảnh của tác giả >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 có một đối số được gọi là >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],5 cho phép bạn bỏ qua lỗi hoặc buộc một giá trị không hợp lệ thành >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],6 df['date'] = pd.to_datetime(df['date'], errors='ignore') Hình ảnh của tác giảVà để buộc một giá trị không hợp lệ thành >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],6 >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:250Hình ảnh của tác giả6. 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 = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],8, viết tắt của “Không phải là số” >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:251 Khi chuyển đổi một cột có giá trị bị thiếu thành datetime, cả to_datetime() và astype() đều đang thay đổi Numpy’s >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],8 thành Pandas’ >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],6 và điều này cho phép nó trở thành một datetime >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:252 Ngoài ra, chúng ta có thể thay thế Numpy >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],8 bằng một giá trị khác (ví dụ: thay thế >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],8 bằng_______22_______3) >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:253 Để tìm hiểu thêm về cách làm việc với các giá trị bị thiếu 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 7. Lắp ráp một datetime từ nhiều cột>>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 cũng có thể được sử dụng để tập hợp một ngày giờ từ nhiều cột. Các khóa (nhãn cột) có thể là các từ viết tắt phổ biến như ['year', 'month', 'day', 'minute', 'second', 'ms', 'us', 'ns']) hoặc số nhiều của các từ giống nhau >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:254 Để tạo một cột ngày giờ từ một tập hợp con các cột >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:255 Để tạo một cột ngày giờ từ toàn bộ Khung dữ liệu >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:2568. Chuyển đổi nhiề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. Có một phương thức DataFrame còn có tên là >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 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 >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:2579. Phân tích cú pháp cột ngày 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ố >>> pd.to_datetime(df['date'])0 2015-03-106 khi tải dữ liệu với >>> pd.to_datetime(df['date'])0 2015-03-107 Lưu ý rằng kiểu dữ liệu >>> pd.to_datetime(df['date'])0 2015-03-108 không được hỗ trợ bởi >>> pd.to_datetime(df['date'])0 2015-03-109 và chúng ta nên sử dụng đối số df = pd.DataFrame({'date': ['3/10/2000', '3/11/2000', '3/12/2000'],0 để thay thế >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:258 Để tìm hiểu thêm về cách phân tích cột ngày với Pandas >>> pd.to_datetime(df['date'])0 2015-03-107 4 thủ thuật bạn nên biết để phân tích cột ngày với Pandas read_csv()Một số thủ thuật Pandas hữu ích nhấthướng tới khoa học dữ liệu. com 10. Sự khác biệt giữadf = pd.DataFrame({'date': ['3/10/2000', '3/11/2000', '3/12/2000'],2 và >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 là phương pháp phổ biến để chuyển đổi kiểu dữ liệu từ loại này sang loại khác. Phương pháp này được hỗ trợ bởi cả Pandas DataFrame và Series. Nếu bạn cần chuyển đổi nhiều cột, thì >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 sẽ là lựa chọn đầu tiên vì nó
Tuy nhiên, >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 sẽ không hoạt động đối với cột có dữ liệu không hợp lệ. Chẳng hạn, một chuỗi ngày không hợp lệ >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],3. Nếu chúng tôi cố gắng sử dụng >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250, chúng tôi sẽ nhận được ParseError. 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 = pd.DataFrame({'date': ['3/10/2000', '3/11/2000', '3/12/2000'],9 nhưng dữ liệu gốc của bạn sẽ được trả về nguyên vẹn Hàm Pandas >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 có thể xử lý các giá trị này dễ dàng hơn. Thay vì thất bại, chúng ta có thể đặt đối số df = pd.DataFrame({'date': ['2016-6-10 20:30:0',1 để ép buộc các giá trị không hợp lệ thành >>> df = pd.DataFrame({'date':['3/10/2015','3/11/2015','3/12/2015'],6 Ngoài ra, có thể rất khó sử dụng >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 khi xử lý định dạng ngày giờ tùy chỉnh. Pandas >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 có một đối số được gọi là df = pd.DataFrame({'date': [1470, 1480, 1490],9 và cung cấp nhiều khả năng hơn theo cách chuyển đổi tùy chỉnhPhần kế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 ngày giờ với >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 và >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259. >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 là cách đơn giản nhất và cung cấp khả năng xử lý lỗi cũng như nhiều khả năng hơn theo cách chuyển đổi tùy chỉnh, trong khi >>> df['date'].astype('datetime64[s]')0 2016-08-03 03:43:250 có hiệu suất tốt hơn và có thể chuyển đổi nhiều cột cùng một lúc 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 = pd.DataFrame({'date': ['3/10/2000', 'a/11/2000', '3/12/2000'],0 và >>> pd.to_datetime(df['date'], unit='s')0 2016-08-03 03:43:259 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 cột chuỗi thành cột ngày giờ trong Python?Nếu cột ngày của bạn là một chuỗi có định dạng '2017-01-01', bạn có thể sử dụng pandas astype để chuyển đổi nó thành ngày giờ. . Thay đổi '2022–12–31 00. 00. 00' đến '2022–12–31 00. 00. 01' Sau đó chạy mã này. gấu trúc. to_datetime(gấu trúc. Sê-ri(['2022–12–31 00. 00. 01'])) đầu ra. 2022–12–31 00. 00. 01 Làm cách nào để chuyển đổi một cột thành đối tượng ngày giờ?Sử dụng hàm pandas to_datetime để phân tích cột thành DateTime . Ngoài ra, bằng cách sử dụng infer_datetime_format=True , nó sẽ tự động phát hiện định dạng và chuyển đổi cột được đề cập thành DateTime.
Làm cách nào để chuyển đổi chuỗi thành ngày giờ trong gấu trúc Python?Sử dụng gấu trúc.
phương thức to_datetime() được sử dụng để thay đổi thời gian của Chuỗi/Đối tượng thành loại ngày (datetime64[ns]) . Phương pháp này đủ thông minh để thay đổi các định dạng khác nhau của cột ngày Chuỗi thành ngày. Sản lượng dưới sản lượng.
Làm cách nào để chuyển đổi cột chuỗi thành ngày giờ trong PySpark?Hàm to_date() trong Apache PySpark được sử dụng phổ biến để chuyển đổi Dấu thời gian thành ngày . Điều này chủ yếu đạt được bằng cách cắt bớt phần thời gian của cột Dấu thời gian. Hàm to_date() lấy Dấu thời gian làm đầu vào ở định dạng mặc định là "MM-dd-yyyy HH. mm. ss. SSS". |