Show
Xem xét Sê-ri được khởi tạo với Sê-ri kết quả chứa một Hãy tạo một Chuỗi với None 1Như bạn mong đợi, kết quả giống hệt nhau và điểm khác biệt duy nhất là Pandas không cần thực hiện bất kỳ phép truyền nào từ Chúng ta đã thấy rằng Đối với Sê-ri không phải là số, None 9Để so sánh, việc tạo Sê-ri với None 1Ở đây, Thực tế là Khi thực hiện phép tính với None 9Ở đây, chúng tôi gặp lỗi vì tổng giữa một loại không phải là số ( Ngược lại Ở đây, không có lỗi nào được đưa ra và thay vào đó, một Lựa chọn sử dụng nội bộ In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float648 để biểu thị dữ liệu bị thiếu phần lớn là vì lý do đơn giản và hiệu suất. Bắt đầu từ gấu trúc. 0, một số loại dữ liệu tùy chọn bắt đầu thử nghiệm với một đại lượng vô hướng In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float649 gốc bằng cách sử dụng phương pháp dựa trên mặt nạ. Xem thêm Xem một số chiến lược nâng cao Các giá trị được coi là “thiếu”Vì dữ liệu có nhiều hình dạng và hình thức, pandas nhằm mục đích linh hoạt trong việc xử lý dữ liệu bị thiếu. Mặc dù In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float648 là điểm đánh dấu giá trị bị thiếu mặc định vì lý do tốc độ tính toán và sự tiện lợi, chúng ta cần có khả năng dễ dàng phát hiện giá trị này với các loại dữ liệu khác nhau. dấu phẩy động, số nguyên, boolean và đối tượng chung. Tuy nhiên, trong nhiều trường hợp, Python In [24]: s = pd.Series(["a", "b", "c"]) In [25]: s.loc[0] = None In [26]: s.loc[1] = np.nan In [27]: s Out[27]: 0 None 1 NaN 2 c dtype: object1 sẽ phát sinh và chúng tôi cũng muốn xem xét rằng “thiếu” hoặc “không có sẵn” hoặc “NA” Ghi chú Nếu bạn muốn coi In [24]: s = pd.Series(["a", "b", "c"]) In [25]: s.loc[0] = None In [26]: s.loc[1] = np.nan In [27]: s Out[27]: 0 None 1 NaN 2 c dtype: object2 và In [24]: s = pd.Series(["a", "b", "c"]) In [25]: s.loc[0] = None In [26]: s.loc[1] = np.nan In [27]: s Out[27]: 0 None 1 NaN 2 c dtype: object3 là "NA" trong tính toán của mình, bạn có thể đặt In [24]: s = pd.Series(["a", "b", "c"]) In [25]: s.loc[0] = None In [26]: s.loc[1] = np.nan In [27]: s Out[27]: 0 None 1 NaN 2 c dtype: object4 _______________ Để làm cho việc phát hiện các giá trị bị thiếu dễ dàng hơn (và trên các kiểu mảng khác nhau), Pandas cung cấp các hàm và cũng là các phương thức trên các đối tượng Sê-ri và DataFrame _______________ Cảnh báo Người ta phải lưu ý rằng trong Python (và NumPy), In [24]: s = pd.Series(["a", "b", "c"]) In [25]: s.loc[0] = None In [26]: s.loc[1] = np.nan In [27]: s Out[27]: 0 None 1 NaN 2 c dtype: object7 không so sánh ngang nhau, nhưng In [24]: s = pd.Series(["a", "b", "c"]) In [25]: s.loc[0] = None In [26]: s.loc[1] = np.nan In [27]: s Out[27]: 0 None 1 NaN 2 c dtype: object8 thì có. Lưu ý rằng Pandas/NumPy sử dụng thực tế là In [24]: s = pd.Series(["a", "b", "c"]) In [25]: s.loc[0] = None In [26]: s.loc[1] = np.nan In [27]: s Out[27]: 0 None 1 NaN 2 c dtype: object9 và coi In [24]: s = pd.Series(["a", "b", "c"]) In [25]: s.loc[0] = None In [26]: s.loc[1] = np.nan In [27]: s Out[27]: 0 None 1 NaN 2 c dtype: object1 như In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135421 _______________ Vì vậy, so với ở trên, so sánh đẳng thức vô hướng so với In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135422 không cung cấp thông tin hữu ích _______________ Kiểu số nguyên và dữ liệu bị thiếuBởi vì In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float648 là một số float, một cột gồm các số nguyên thậm chí còn thiếu một giá trị được chuyển thành dtype dấu phẩy động (xem thêm). gấu trúc cung cấp một mảng số nguyên nullable, có thể được sử dụng bằng cách yêu cầu dtype một cách rõ ràng _______________ Ngoài ra, có thể sử dụng bí danh chuỗi In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135424 (lưu ý chữ hoa In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135425) Xem thêm ngày giờĐối với các loại datetime64[ns], In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135426 đại diện cho các giá trị bị thiếu. Đây là một giá trị sentinel gốc giả có thể được đại diện bởi NumPy trong một dtype số ít (datetime64[ns]). các đối tượng gấu trúc cung cấp khả năng tương thích giữa In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135426 và In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float648 _______________ Chèn dữ liệu bị thiếuBạn có thể chèn các giá trị còn thiếu bằng cách chỉ định cho các vùng chứa. Giá trị thiếu thực tế được sử dụng sẽ được chọn dựa trên dtype Ví dụ: vùng chứa số sẽ luôn sử dụng In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float648 bất kể loại giá trị bị thiếu đã chọn _______________ Tương tự như vậy, các thùng chứa datetime sẽ luôn sử dụng In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135426 Đối với các thùng chứa đối tượng, gấu trúc sẽ sử dụng giá trị đã cho _______________ Tính toán thiếu dữ liệuCác giá trị bị thiếu lan truyền tự nhiên thông qua các phép toán số học giữa các đối tượng gấu trúc _______________ Các số liệu thống kê mô tả và phương pháp tính toán được thảo luận trong (và được liệt kê trong) đều được viết để giải thích cho dữ liệu bị thiếu. Ví dụ
_______________ Tổng/sản lượng trống/nanceCảnh báo Hành vi này hiện là tiêu chuẩn kể từ v0. 22. 0 và nhất quán với giá trị mặc định trong In [31]: df Out[31]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [32]: df["one"].sum() Out[32]: -1.9853605075978744 In [33]: df.mean(1) Out[33]: a -0.895961 c 0.519449 e -0.595625 f -0.509232 h -0.873173 dtype: float64 In [34]: df.cumsum() Out[34]: one two three a NaN -0.282863 -1.509059 c NaN 0.929249 -1.682273 e 0.119209 -0.114987 -2.544122 f -1.985361 -0.609917 -1.472318 h NaN -1.316688 -2.511893 In [35]: df.cumsum(skipna=False) Out[35]: one two three a NaN -0.282863 -1.509059 c NaN 0.929249 -1.682273 e NaN -0.114987 -2.544122 f NaN -0.609917 -1.472318 h NaN -1.316688 -2.5118934; . Xem thêm Tổng của Sê-ri hoặc cột trống hoặc toàn NA của DataFrame là _______________0 Sản phẩm của Sê-ri hoặc cột trống hoặc toàn NA của DataFrame là _______________1 Giá trị NA trong GroupByCác nhóm NA trong GroupBy sẽ tự động bị loại trừ. Hành vi này phù hợp với R, ví dụ _______________2 Xem phần nhóm để biết thêm thông tin Làm sạch / điền dữ liệu bị thiếuCác đối tượng Pandas được trang bị nhiều phương pháp thao tác dữ liệu khác nhau để xử lý dữ liệu bị thiếu Điền các giá trị còn thiếu. quả trámcó thể “điền” các giá trị NA bằng dữ liệu không phải NA theo một số cách mà chúng tôi minh họa Thay thế NA bằng một giá trị vô hướng _______________3 Điền vào các khoảng trống về phía trước hoặc phía sau Sử dụng các đối số điền giống như , chúng ta có thể truyền các giá trị không NA về phía trước hoặc phía sau _______________4 Hạn chế lượng đổ đầy Nếu chúng tôi chỉ muốn các khoảng trống liên tiếp được lấp đầy đến một số điểm dữ liệu nhất định, chúng tôi có thể sử dụng từ khóa In [31]: df Out[31]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [32]: df["one"].sum() Out[32]: -1.9853605075978744 In [33]: df.mean(1) Out[33]: a -0.895961 c 0.519449 e -0.595625 f -0.509232 h -0.873173 dtype: float64 In [34]: df.cumsum() Out[34]: one two three a NaN -0.282863 -1.509059 c NaN 0.929249 -1.682273 e 0.119209 -0.114987 -2.544122 f -1.985361 -0.609917 -1.472318 h NaN -1.316688 -2.511893 In [35]: df.cumsum(skipna=False) Out[35]: one two three a NaN -0.282863 -1.509059 c NaN 0.929249 -1.682273 e NaN -0.114987 -2.544122 f NaN -0.609917 -1.472318 h NaN -1.316688 -2.5118936 _______________5 Để nhắc nhở bạn, đây là các phương pháp điền có sẵn Phương pháp Hoạt động đệm / điền vào Điền giá trị chuyển tiếp bfill/chèn lấp Điền giá trị lùi Với dữ liệu chuỗi thời gian, việc sử dụng pad/fill là cực kỳ phổ biến để "giá trị đã biết cuối cùng" luôn có sẵn tại mọi thời điểm tương đương với In [31]: df Out[31]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [32]: df["one"].sum() Out[32]: -1.9853605075978744 In [33]: df.mean(1) Out[33]: a -0.895961 c 0.519449 e -0.595625 f -0.509232 h -0.873173 dtype: float64 In [34]: df.cumsum() Out[34]: one two three a NaN -0.282863 -1.509059 c NaN 0.929249 -1.682273 e 0.119209 -0.114987 -2.544122 f -1.985361 -0.609917 -1.472318 h NaN -1.316688 -2.511893 In [35]: df.cumsum(skipna=False) Out[35]: one two three a NaN -0.282863 -1.509059 c NaN 0.929249 -1.682273 e NaN -0.114987 -2.544122 f NaN -0.609917 -1.472318 h NaN -1.316688 -2.5118938 và tương đương với In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False0 Điền vào một PandasObjectBạn cũng có thể điền bằng cách sử dụng chính tả hoặc Sê-ri có thể căn chỉnh. Các nhãn của lệnh hoặc chỉ mục của Sê-ri phải khớp với các cột của khung bạn muốn điền. Trường hợp sử dụng của việc này là điền vào DataFrame với giá trị trung bình của cột đó _______________6 Kết quả tương tự như trên, nhưng đang căn chỉnh giá trị 'điền' là Sê-ri trong trường hợp này _______________7 Bỏ nhãn trục với dữ liệu bị thiếu. dropnaBạn có thể chỉ muốn loại trừ các nhãn khỏi tập dữ liệu đề cập đến dữ liệu bị thiếu. Để làm điều này, sử dụng _______________số 8 Tương đương có sẵn cho Sê-ri. Khung dữ liệu. dropna có nhiều tùy chọn hơn đáng kể so với Series. thả, có thể được kiểm tra nội suyTheo mặc định, cả hai đối tượng Sê-ri và DataFrame đều thực hiện phép nội suy tuyến tính tại các điểm dữ liệu bị thiếu _______________9 _______________0 Nội suy nhận biết chỉ mục có sẵn thông qua từ khóa _______________04 _______________1 Đối với chỉ mục dấu phẩy động, hãy sử dụng In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False0 _______________2 Bạn cũng có thể nội suy với DataFrame _______________3 Đối số In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False04 cung cấp quyền truy cập vào các phương pháp nội suy huyền ảo hơn. Nếu bạn đã cài đặt scipy, bạn có thể chuyển tên của quy trình nội suy 1-d cho In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False0. Bạn sẽ muốn tham khảo hướng dẫn tham khảo và nội suy scipy đầy đủ để biết chi tiết. Phương pháp nội suy thích hợp sẽ phụ thuộc vào loại dữ liệu bạn đang làm việc với
Cảnh báo Những phương pháp này yêu cầu In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False1 _______________4 Khi nội suy thông qua phép xấp xỉ đa thức hoặc hàm spline, bạn cũng phải chỉ định bậc hoặc thứ tự của phép xấp xỉ _______________5 So sánh một số phương pháp _______________6 Một trường hợp sử dụng khác là nội suy tại các giá trị mới. Giả sử bạn có 100 quan sát từ một số phân phối. Và giả sử rằng bạn đặc biệt quan tâm đến những gì đang xảy ra ở giữa. Bạn có thể kết hợp các phương thức In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False12 và In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False13 của gấu trúc để nội suy ở các giá trị mới _______________7 giới hạn nội suyGiống như các phương thức điền pandas khác, nó chấp nhận đối số từ khóa In [31]: df Out[31]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [32]: df["one"].sum() Out[32]: -1.9853605075978744 In [33]: df.mean(1) Out[33]: a -0.895961 c 0.519449 e -0.595625 f -0.509232 h -0.873173 dtype: float64 In [34]: df.cumsum() Out[34]: one two three a NaN -0.282863 -1.509059 c NaN 0.929249 -1.682273 e 0.119209 -0.114987 -2.544122 f -1.985361 -0.609917 -1.472318 h NaN -1.316688 -2.511893 In [35]: df.cumsum(skipna=False) Out[35]: one two three a NaN -0.282863 -1.509059 c NaN 0.929249 -1.682273 e NaN -0.114987 -2.544122 f NaN -0.609917 -1.472318 h NaN -1.316688 -2.5118936. Sử dụng đối số này để giới hạn số lượng giá trị In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float648 liên tiếp được điền kể từ lần quan sát hợp lệ cuối cùng _______________số 8 Theo mặc định, các giá trị In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float648 được điền theo hướng In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False18. Sử dụng tham số để điền vào hướng dẫn In [11]: None == None # noqa: E711 Out[11]: True In [12]: np.nan == np.nan Out[12]: False9 Theo mặc định, các giá trị In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float648 được điền cho dù chúng ở bên trong (được bao quanh bởi) các giá trị hợp lệ hiện có hay bên ngoài các giá trị hợp lệ hiện có. Tham số _______________23 hạn chế điền giá trị bên trong hoặc bên ngoài In [13]: df2["one"] == np.nan Out[13]: a False b False c False d False e False f False g False h False Name: one, dtype: bool0 Thay thế các giá trị chungThường thì chúng ta muốn thay thế các giá trị tùy ý bằng các giá trị khác trong Sê-ri và trong DataFrame cung cấp một cách hiệu quả nhưng linh hoạt để thực hiện các thay thế đó Đối với Sê-ri, bạn có thể thay thế một giá trị đơn lẻ hoặc danh sách các giá trị bằng một giá trị khác _______________1 Bạn có thể thay thế một danh sách các giá trị bằng một danh sách các giá trị khác _______________2 Bạn cũng có thể chỉ định một lệnh ánh xạ In [13]: df2["one"] == np.nan Out[13]: a False b False c False d False e False f False g False h False Name: one, dtype: bool3 Đối với DataFrame, bạn có thể chỉ định các giá trị riêng lẻ theo cột _______________4 Thay vì thay thế bằng các giá trị đã chỉ định, bạn có thể coi tất cả các giá trị đã cho là thiếu và nội suy trên chúng In [13]: df2["one"] == np.nan Out[13]: a False b False c False d False e False f False g False h False Name: one, dtype: bool5 Thay thế chuỗi/biểu thức chính quyGhi chú Các chuỗi Python có tiền tố là ký tự In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False26, chẳng hạn như In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False27 được gọi là chuỗi "thô". Chúng có ngữ nghĩa khác nhau về dấu gạch chéo ngược so với các chuỗi không có tiền tố này. Dấu gạch chéo ngược trong chuỗi thô sẽ được hiểu là dấu gạch chéo ngược đã thoát, e. g. , _______________2. Bạn nên nếu điều này là không rõ ràng Thay thế cái '. ’ với In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float648(str->str) _______________6 Bây giờ hãy làm điều đó với một biểu thức chính quy loại bỏ khoảng trắng xung quanh (regex -> regex) In [13]: df2["one"] == np.nan Out[13]: a False b False c False d False e False f False g False h False Name: one, dtype: bool7 Thay thế một vài giá trị khác nhau (danh sách -> danh sách) In [13]: df2["one"] == np.nan Out[13]: a False b False c False d False e False f False g False h False Name: one, dtype: bool8 danh sách regex -> danh sách regex In [13]: df2["one"] == np.nan Out[13]: a False b False c False d False e False f False g False h False Name: one, dtype: bool9 Chỉ tìm kiếm trong cột In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False30(dict->dict) In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype()) Out[14]: 0 1 1 2 2 <NA> 3 4 dtype: Int640 Tương tự như ví dụ trước, nhưng thay vào đó hãy sử dụng biểu thức chính quy để tìm kiếm (dict của regex -> dict) In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype()) Out[14]: 0 1 1 2 2 <NA> 3 4 dtype: Int641 Bạn có thể chuyển các từ điển lồng nhau của các biểu thức chính quy sử dụng In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False3 In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype()) Out[14]: 0 1 1 2 2 <NA> 3 4 dtype: Int642 Ngoài ra, bạn có thể chuyển từ điển lồng nhau như vậy In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype()) Out[14]: 0 1 1 2 2 <NA> 3 4 dtype: Int643 Bạn cũng có thể sử dụng nhóm đối sánh biểu thức chính quy khi thay thế (dict of regex -> dict of regex), điều này cũng hoạt động cho các danh sách In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype()) Out[14]: 0 1 1 2 2 <NA> 3 4 dtype: Int644 Bạn có thể chuyển một danh sách các biểu thức chính quy, trong đó những biểu thức phù hợp sẽ được thay thế bằng vô hướng (danh sách biểu thức chính quy -> biểu thức chính quy) In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype()) Out[14]: 0 1 1 2 2 <NA> 3 4 dtype: Int645 Tất cả các ví dụ về biểu thức chính quy cũng có thể được chuyển với đối số In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False32 làm đối số In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False33. Trong trường hợp này, đối số In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False34 phải được chuyển rõ ràng theo tên hoặc In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False33 phải là một từ điển lồng nhau. Ví dụ trước, trong trường hợp này, sau đó sẽ là In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype()) Out[14]: 0 1 1 2 2 <NA> 3 4 dtype: Int646 Điều này có thể thuận tiện nếu bạn không muốn vượt qua In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False31 mỗi khi bạn muốn sử dụng biểu thức chính quy Ghi chú Bất cứ nơi nào trong các ví dụ về In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False37 ở trên mà bạn thấy một biểu thức chính quy, một biểu thức chính quy được biên dịch cũng hợp lệ thay thế sốtương tự như In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype()) Out[14]: 0 1 1 2 2 <NA> 3 4 dtype: Int647 Có thể thay thế nhiều hơn một giá trị bằng cách chuyển một danh sách In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype()) Out[14]: 0 1 1 2 2 <NA> 3 4 dtype: Int648 Bạn cũng có thể thao tác trên DataFrame tại chỗ In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype()) Out[14]: 0 1 1 2 2 <NA> 3 4 dtype: Int649 Thiếu quy tắc truyền dữ liệu và lập chỉ mụcMặc dù gấu trúc hỗ trợ lưu trữ các mảng kiểu số nguyên và kiểu boolean, nhưng các kiểu này không có khả năng lưu trữ dữ liệu bị thiếu. Cho đến khi chúng tôi có thể chuyển sang sử dụng loại NA gốc trong NumPy, chúng tôi đã thiết lập một số “quy tắc truyền”. Khi thao tác lập chỉ mục lại giới thiệu dữ liệu bị thiếu, Sê-ri sẽ được truyền theo các quy tắc được giới thiệu trong bảng bên dưới loại dữ liệu Truyền tới số nguyên trôi nổi boolean mục tiêu trôi nổi không đúc mục tiêu không đúc Ví dụ In [15]: df2 = df.copy() In [16]: df2["timestamp"] = pd.Timestamp("20120101") In [17]: df2 Out[17]: one two three four five timestamp a 0.469112 -0.282863 -1.509059 bar True 2012-01-01 c -1.135632 1.212112 -0.173215 bar False 2012-01-01 e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h 0.721555 -0.706771 -1.039575 bar True 2012-01-01 In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan In [19]: df2 Out[19]: one two three four five timestamp a NaN -0.282863 -1.509059 bar True NaT c NaN 1.212112 -0.173215 bar False NaT e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h NaN -0.706771 -1.039575 bar True NaT In [20]: df2.dtypes.value_counts() Out[20]: float64 3 object 1 bool 1 datetime64[ns] 1 dtype: int640 Thông thường NumPy sẽ phàn nàn nếu bạn cố gắng sử dụng một mảng đối tượng (ngay cả khi nó chứa các giá trị boolean) thay vì một mảng boolean để lấy hoặc đặt các giá trị từ một ndarray (e. g. lựa chọn các giá trị dựa trên một số tiêu chí). Nếu một vectơ boolean chứa NA, một ngoại lệ sẽ được tạo In [15]: df2 = df.copy() In [16]: df2["timestamp"] = pd.Timestamp("20120101") In [17]: df2 Out[17]: one two three four five timestamp a 0.469112 -0.282863 -1.509059 bar True 2012-01-01 c -1.135632 1.212112 -0.173215 bar False 2012-01-01 e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h 0.721555 -0.706771 -1.039575 bar True 2012-01-01 In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan In [19]: df2 Out[19]: one two three four five timestamp a NaN -0.282863 -1.509059 bar True NaT c NaN 1.212112 -0.173215 bar False NaT e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h NaN -0.706771 -1.039575 bar True NaT In [20]: df2.dtypes.value_counts() Out[20]: float64 3 object 1 bool 1 datetime64[ns] 1 dtype: int641 Tuy nhiên, chúng có thể được điền vào bằng cách sử dụng và nó sẽ hoạt động tốt In [15]: df2 = df.copy() In [16]: df2["timestamp"] = pd.Timestamp("20120101") In [17]: df2 Out[17]: one two three four five timestamp a 0.469112 -0.282863 -1.509059 bar True 2012-01-01 c -1.135632 1.212112 -0.173215 bar False 2012-01-01 e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h 0.721555 -0.706771 -1.039575 bar True 2012-01-01 In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan In [19]: df2 Out[19]: one two three four five timestamp a NaN -0.282863 -1.509059 bar True NaT c NaN 1.212112 -0.173215 bar False NaT e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h NaN -0.706771 -1.039575 bar True NaT In [20]: df2.dtypes.value_counts() Out[20]: float64 3 object 1 bool 1 datetime64[ns] 1 dtype: int642 Pandas cung cấp một dtype số nguyên nullable, nhưng bạn phải yêu cầu nó một cách rõ ràng khi tạo chuỗi hoặc cột. Lưu ý rằng chúng tôi sử dụng chữ “I” viết hoa trong In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False4 In [15]: df2 = df.copy() In [16]: df2["timestamp"] = pd.Timestamp("20120101") In [17]: df2 Out[17]: one two three four five timestamp a 0.469112 -0.282863 -1.509059 bar True 2012-01-01 c -1.135632 1.212112 -0.173215 bar False 2012-01-01 e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h 0.721555 -0.706771 -1.039575 bar True 2012-01-01 In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan In [19]: df2 Out[19]: one two three four five timestamp a NaN -0.282863 -1.509059 bar True NaT c NaN 1.212112 -0.173215 bar False NaT e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h NaN -0.706771 -1.039575 bar True NaT In [20]: df2.dtypes.value_counts() Out[20]: float64 3 object 1 bool 1 datetime64[ns] 1 dtype: int643 Xem thêm Thử nghiệm _______________9 vô hướng để biểu thị các giá trị còn thiếuCảnh báo Thực nghiệm. hành vi của In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 vẫn có thể thay đổi mà không báo trước Mới trong phiên bản. 0. 0 Bắt đầu từ gấu trúc. 0, một giá trị In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 thử nghiệm (singleton) có sẵn để biểu thị các giá trị vô hướng bị thiếu. Tại thời điểm này, nó được sử dụng trong số nguyên nullable, boolean và các loại dữ liệu làm chỉ báo giá trị bị thiếu. Mục tiêu của In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 là cung cấp một chỉ báo “còn thiếu” có thể được sử dụng nhất quán giữa các loại dữ liệu (thay vì In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135421, In [24]: s = pd.Series(["a", "b", "c"]) In [25]: s.loc[0] = None In [26]: s.loc[1] = np.nan In [27]: s Out[27]: 0 None 1 NaN 2 c dtype: object1 hoặc In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False48 tùy thuộc vào loại dữ liệu); Ví dụ: khi thiếu các giá trị trong Sê-ri với dtype số nguyên nullable, nó sẽ sử dụng In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False4 In [15]: df2 = df.copy() In [16]: df2["timestamp"] = pd.Timestamp("20120101") In [17]: df2 Out[17]: one two three four five timestamp a 0.469112 -0.282863 -1.509059 bar True 2012-01-01 c -1.135632 1.212112 -0.173215 bar False 2012-01-01 e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h 0.721555 -0.706771 -1.039575 bar True 2012-01-01 In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan In [19]: df2 Out[19]: one two three four five timestamp a NaN -0.282863 -1.509059 bar True NaT c NaN 1.212112 -0.173215 bar False NaT e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h NaN -0.706771 -1.039575 bar True NaT In [20]: df2.dtypes.value_counts() Out[20]: float64 3 object 1 bool 1 datetime64[ns] 1 dtype: int644 Hiện tại, pandas chưa sử dụng các loại dữ liệu đó theo mặc định (khi tạo DataFrame hoặc Sê-ri hoặc khi đọc dữ liệu), vì vậy bạn cần chỉ định rõ ràng loại dtype. Một cách dễ dàng để chuyển đổi sang các dtypes đó được giải thích Tuyên truyền trong các hoạt động số học và so sánhNói chung, các giá trị bị thiếu lan truyền trong các hoạt động liên quan đến In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43. Khi một trong các toán hạng không xác định, kết quả của hoạt động cũng không xác định Ví dụ: In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 lan truyền trong các phép toán số học, tương tự như In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135421 In [15]: df2 = df.copy() In [16]: df2["timestamp"] = pd.Timestamp("20120101") In [17]: df2 Out[17]: one two three four five timestamp a 0.469112 -0.282863 -1.509059 bar True 2012-01-01 c -1.135632 1.212112 -0.173215 bar False 2012-01-01 e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h 0.721555 -0.706771 -1.039575 bar True 2012-01-01 In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan In [19]: df2 Out[19]: one two three four five timestamp a NaN -0.282863 -1.509059 bar True NaT c NaN 1.212112 -0.173215 bar False NaT e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h NaN -0.706771 -1.039575 bar True NaT In [20]: df2.dtypes.value_counts() Out[20]: float64 3 object 1 bool 1 datetime64[ns] 1 dtype: int645 Có một vài trường hợp đặc biệt khi biết trước kết quả, ngay cả khi một trong các toán hạng là In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float649 In [15]: df2 = df.copy() In [16]: df2["timestamp"] = pd.Timestamp("20120101") In [17]: df2 Out[17]: one two three four five timestamp a 0.469112 -0.282863 -1.509059 bar True 2012-01-01 c -1.135632 1.212112 -0.173215 bar False 2012-01-01 e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h 0.721555 -0.706771 -1.039575 bar True 2012-01-01 In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan In [19]: df2 Out[19]: one two three four five timestamp a NaN -0.282863 -1.509059 bar True NaT c NaN 1.212112 -0.173215 bar False NaT e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h NaN -0.706771 -1.039575 bar True NaT In [20]: df2.dtypes.value_counts() Out[20]: float64 3 object 1 bool 1 datetime64[ns] 1 dtype: int646 Trong các phép toán bằng và so sánh, In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 cũng lan truyền. Điều này khác với hành vi của In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135421, trong đó so sánh với In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135421 luôn trả về In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False5 In [15]: df2 = df.copy() In [16]: df2["timestamp"] = pd.Timestamp("20120101") In [17]: df2 Out[17]: one two three four five timestamp a 0.469112 -0.282863 -1.509059 bar True 2012-01-01 c -1.135632 1.212112 -0.173215 bar False 2012-01-01 e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h 0.721555 -0.706771 -1.039575 bar True 2012-01-01 In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan In [19]: df2 Out[19]: one two three four five timestamp a NaN -0.282863 -1.509059 bar True NaT c NaN 1.212112 -0.173215 bar False NaT e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h NaN -0.706771 -1.039575 bar True NaT In [20]: df2.dtypes.value_counts() Out[20]: float64 3 object 1 bool 1 datetime64[ns] 1 dtype: int647 Để kiểm tra xem một giá trị có bằng _______________43 hay không, có thể sử dụng hàm In [15]: df2 = df.copy() In [16]: df2["timestamp"] = pd.Timestamp("20120101") In [17]: df2 Out[17]: one two three four five timestamp a 0.469112 -0.282863 -1.509059 bar True 2012-01-01 c -1.135632 1.212112 -0.173215 bar False 2012-01-01 e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h 0.721555 -0.706771 -1.039575 bar True 2012-01-01 In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan In [19]: df2 Out[19]: one two three four five timestamp a NaN -0.282863 -1.509059 bar True NaT c NaN 1.212112 -0.173215 bar False NaT e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h NaN -0.706771 -1.039575 bar True NaT In [20]: df2.dtypes.value_counts() Out[20]: float64 3 object 1 bool 1 datetime64[ns] 1 dtype: int648 Một ngoại lệ đối với quy tắc lan truyền cơ bản này là các phép giảm (chẳng hạn như giá trị trung bình hoặc giá trị tối thiểu), trong đó gấu trúc mặc định bỏ qua các giá trị bị thiếu. Xem thêm Các phép toán logicĐối với các hoạt động logic, In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 tuân theo các quy tắc của logic ba giá trị (hoặc logic Kleene, tương tự như R, SQL và Julia). Logic này có nghĩa là chỉ truyền các giá trị còn thiếu khi nó được yêu cầu về mặt logic Ví dụ, đối với phép toán logic “or” (_______8_______61), nếu một trong các toán hạng là In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False62, thì chúng ta đã biết kết quả sẽ là ____8_______62, bất kể giá trị khác là gì. Trong trường hợp này, In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 không lan truyền In [15]: df2 = df.copy() In [16]: df2["timestamp"] = pd.Timestamp("20120101") In [17]: df2 Out[17]: one two three four five timestamp a 0.469112 -0.282863 -1.509059 bar True 2012-01-01 c -1.135632 1.212112 -0.173215 bar False 2012-01-01 e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h 0.721555 -0.706771 -1.039575 bar True 2012-01-01 In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan In [19]: df2 Out[19]: one two three four five timestamp a NaN -0.282863 -1.509059 bar True NaT c NaN 1.212112 -0.173215 bar False NaT e 0.119209 -1.044236 -0.861849 bar True 2012-01-01 f -2.104569 -0.494929 1.071804 bar False 2012-01-01 h NaN -0.706771 -1.039575 bar True NaT In [20]: df2.dtypes.value_counts() Out[20]: float64 3 object 1 bool 1 datetime64[ns] 1 dtype: int649 Mặt khác, nếu một trong các toán hạng là In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False57, thì kết quả phụ thuộc vào giá trị của toán hạng kia. Do đó, trong trường hợp này In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 lan truyền _______________0 Hành vi của phép toán logic “và” (_______8_______69) có thể được bắt nguồn bằng cách sử dụng logic tương tự (ở đây bây giờ In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 sẽ không lan truyền nếu một trong các toán hạng đã là _______________57); _______________1 _______________2 _______________9 trong ngữ cảnh booleanVì giá trị thực của NA là không xác định nên việc chuyển đổi NA thành giá trị Boolean là không rõ ràng. Sau đây gây ra lỗi _______________3 Điều này cũng có nghĩa là không thể sử dụng In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 trong ngữ cảnh khi nó được đánh giá theo giá trị boolean, chẳng hạn như In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False74 trong đó In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False75 có thể có khả năng là In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43. Trong những trường hợp như vậy, có thể tránh được việc kiểm tra In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43 hoặc In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False75 là In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False43, chẳng hạn bằng cách điền trước các giá trị còn thiếu Tình huống tương tự xảy ra khi sử dụng các đối tượng Sê-ri hoặc DataFrame trong các câu lệnh In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False81, xem chức năng NumPyIn [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False82 thực hiện giao thức In [7]: df2["one"] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2["one"]) Out[8]: a False b True c False d True e False f False g True h False Name: one, dtype: bool In [9]: df2["four"].notna() Out[9]: a True b False c True d False e True f True g False h True Name: four, dtype: bool In [10]: df2.isna() Out[10]: one two three four five a False False False False False b True True True True True c False False False False False d True True True True True e False False False False False f False False False False False g True True True True True h False False False False False83 của NumPy. Hầu hết các ufunc đều hoạt động với In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float649 và thường trả về In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float649 _______________4 Cảnh báo Hiện tại, các ufunc liên quan đến ndarray và In [21]: s = pd.Series([1, 2, 3]) In [22]: s.loc[0] = None In [23]: s Out[23]: 0 NaN 1 2.0 2 3.0 dtype: float649 sẽ trả về một object-dtype chứa đầy các giá trị NA _______________5 Kiểu trả về ở đây có thể thay đổi để trả về một kiểu mảng khác trong tương lai Xem thêm về ufunc chuyển đổiNếu bạn có một DataFrame hoặc Sê-ri sử dụng các loại truyền thống có dữ liệu bị thiếu được biểu thị bằng cách sử dụng In [28]: a Out[28]: one two a NaN -0.282863 c NaN 1.212112 e 0.119209 -1.044236 f -2.104569 -0.494929 h -2.104569 -0.706771 In [29]: b Out[29]: one two three a NaN -0.282863 -1.509059 c NaN 1.212112 -0.173215 e 0.119209 -1.044236 -0.861849 f -2.104569 -0.494929 1.071804 h NaN -0.706771 -1.039575 In [30]: a + b Out[30]: one three two a NaN NaN -0.565727 c NaN NaN 2.424224 e 0.238417 NaN -2.088472 f -4.209138 NaN -0.989859 h NaN NaN -1.4135421, thì có các phương thức tiện lợi trong Sê-ri và trong DataFrame có thể chuyển đổi dữ liệu để sử dụng các loại dtypes mới hơn cho số nguyên, chuỗi và booleans được liệt kê. Điều này đặc biệt hữu ích sau khi đọc trong tập dữ liệu khi cho phép người đọc chẳng hạn như và suy ra các kiểu dữ liệu mặc định Trong ví dụ này, trong khi kiểu chữ của tất cả các cột được thay đổi, chúng tôi hiển thị kết quả cho 10 cột đầu tiên Không có gì bằng NaN Python?NaN có thể được sử dụng làm giá trị số trong các phép toán, trong khi Không ai không thể (hoặc ít nhất là không nên). NaN là một giá trị số, như được định nghĩa trong tiêu chuẩn dấu phẩy động IEEE 754. Không có gì là một loại Python nội bộ (NoneType) và sẽ giống như "không tồn tại" hoặc "trống" hơn là "không hợp lệ về mặt số" trong ngữ cảnh này.
NaN tương đương với Python là gì?NaN là viết tắt của Không phải là số và là một trong những cách phổ biến nhất để biểu thị giá trị bị thiếu trong dữ liệu. Nó là một giá trị dấu phẩy động đặc biệt và không thể chuyển đổi thành bất kỳ loại nào khác ngoài float.
NaN và null có giống nhau không?Hoạt động trên các giá trị Null
. Pandas treats None and NaN as essentially interchangeable for indicating missing or null values. |