Nan có giống như trong python không?

None đại diện cho một mục bị thiếu. Điều này có nghĩa là bất kỳ cột (Sê-ri) nào chứa một None không thể thuộc loại số (e. g. _______________ và float)

  • NaN, viết tắt của not-a-number, là một kiểu số. Điều này có nghĩa là NaN có thể xuất hiện trong các cột loại intfloat

  • Xem xét Sê-ri được khởi tạo với None

    Sê-ri kết quả chứa một NaN thay vì None. Điều này là do Pandas tự động chuyển đổi None thành NaN với điều kiện là giá trị khác (NaN5) là một số, sau đó cho phép loại cột là NaN6. Nếu None không được chuyển thành NaN, thì loại cột sẽ kết thúc bằng NaN9, điều này không chính xác và làm cho một số hoạt động nhất định trong Pandas kém hiệu quả hơn

    Hãy tạo một Chuỗi với NaN

    None1

    Như 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ừ None đến NaNNaN đã được đưa trực tiếp

    Chúng ta đã thấy rằng None được tự động chuyển đổi thành NaN khi loại Sê-ri là số

    Đối với Sê-ri không phải là số, None không cần phải chuyển thành NaN

    None9

    Để so sánh, việc tạo Sê-ri với NaN

    None1

    Ở đây, NaN chỉ đơn giản là một NaN vì các giá trị số được cho phép trong một Sê-ri chứa các loại dữ liệu khác (trong trường hợp này là một None4);. Lưu ý rằng vì Sê-ri chứa các loại hỗn hợp nên dtype là NaN9

    Thực tế là None không phải là một kiểu số, trong khi NaN là, dẫn đến hậu quả khi thực hiện phép tính số học

    Khi thực hiện phép tính với None

    None9

    Ở đây, chúng tôi gặp lỗi vì tổng giữa một loại không phải là số (None) và một số không được xác định

    Ngược lại

    Ở đây, không có lỗi nào được đưa ra và thay vào đó, một NaN được trả về. Bất kỳ phép tính số học nào liên quan đến một NaN sẽ dẫn đến một NaN khác.

    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: float64
    
    8 để 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: float64
    
    9 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: float64
    
    8 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: object
    
    1 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: object
    
    2 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: object
    
    3 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: object
    
    4

    _______________

    Để 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: object
    
    7 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: object
    
    8 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: object
    
    9 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: object
    
    1 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.413542
    
    1

    _______________

    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.413542
    
    2 không cung cấp thông tin hữu ích

    _______________

    Kiểu số nguyên và dữ liệu bị thiếu

    Bở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: float64
    
    8 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.413542
    
    4 (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.413542
    
    5)

    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.413542
    
    6 đạ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.413542
    
    6 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: float64
    
    8

    _______________

    Chèn dữ liệu bị thiếu

    Bạ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: float64
    
    8 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.413542
    
    6

    Đố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ệu

    Cá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ụ

    • Khi tổng hợp dữ liệu, các giá trị NA (thiếu) sẽ được coi là 0

    • Nếu dữ liệu đều là NA, kết quả sẽ là

    • Các phương thức tích lũy thích và bỏ qua các giá trị NA theo mặc định, nhưng bảo toàn chúng trong các mảng kết quả. Để ghi đè hành vi này và bao gồm các giá trị NA, hãy sử dụng

      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.511893
      
      3

    _______________

    Tổng/sản lượng trống/nance

    Cả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.511893
    
    4; . 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 GroupBy

    Cá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ếu

    Cá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ám

    có 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.511893
    
    6

    _______________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.511893
    
    8 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  False
    
    0

    Điền vào một PandasObject

    Bạ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. dropna

    Bạ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 suy

    Theo 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

    Nan có giống như trong python không?

    _______________0

    Nan có giống như trong python không?

    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  False
    
    0

    _______________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  False
    
    04 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  False
    
    0. 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

    • Nếu bạn đang xử lý một chuỗi thời gian đang phát triển với tốc độ ngày càng tăng, thì

      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  False
      
      08 có thể phù hợp

    • Nếu bạn có các giá trị xấp xỉ hàm phân phối tích lũy, thì

      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  False
      
      09 sẽ hoạt động tốt

    • Để điền vào các giá trị còn thiếu với mục tiêu vẽ đồ thị mượt mà, hãy xem xé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  False
      
      10

    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  False
    
    1

    _______________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

    Nan có giống như trong python không?

    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  False
    
    12 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  False
    
    13 của gấu trúc để nội suy ở các giá trị mới

    _______________7

    giới hạn nội suy

    Giố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.511893
    
    6. 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: float64
    
    8 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: float64
    
    8 đượ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  False
    
    18. 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]: False
    
    9

    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: float64
    
    8 đượ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: bool
    
    0

    Thay thế các giá trị chung

    Thườ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: bool
    
    3

    Đố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: bool
    
    5

    Thay thế chuỗi/biểu thức chính quy

    Ghi 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  False
    
    26, 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  False
    
    27 đượ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: float64
    
    8(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: bool
    
    7

    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: bool
    
    8

    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: bool
    
    9

    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  False
    
    30(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: Int64
    
    0

    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: Int64
    
    1

    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  False
    
    3

    In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
    Out[14]: 
    0       1
    1       2
    2    <NA>
    3       4
    dtype: Int64
    
    2

    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: Int64
    
    3

    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: Int64
    
    4

    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: Int64
    
    5

    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  False
    
    32 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  False
    
    33. 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  False
    
    34 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  False
    
    33 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: Int64
    
    6

    Đ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  False
    
    31 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  False
    
    37 ở 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: Int64
    
    7

    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: Int64
    
    8

    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: Int64
    
    9

    Thiếu quy tắc truyền dữ liệu và lập chỉ mục

    Mặ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: int64
    
    0

    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: int64
    
    1

    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: int64
    
    2

    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  False
    
    4

    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: int64
    
    3

    Xem thêm

    Thử nghiệm _______________9 vô hướng để biểu thị các giá trị còn thiếu

    Cả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  False
    
    43 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  False
    
    43 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  False
    
    43 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.413542
    
    1,
    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: object
    
    1 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  False
    
    48 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  False
    
    4

    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: int64
    
    4

    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ánh

    Nó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  False
    
    43. 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  False
    
    43 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.413542
    
    1

    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: int64
    
    5

    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: float64
    
    9

    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: int64
    
    6

    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  False
    
    43 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.413542
    
    1, 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.413542
    
    1 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  False
    
    5

    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: int64
    
    7

    Để 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: int64
    
    8

    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  False
    
    43 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  False
    
    62, 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  False
    
    43 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: int64
    
    9

    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  False
    
    57, 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  False
    
    43 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  False
    
    43 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 boolean

    Vì 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  False
    
    43 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  False
    
    74 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  False
    
    75 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  False
    
    43. 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  False
    
    43 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  False
    
    75 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  False
    
    43, 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  False
    
    81, xem

    chức năng NumPy

    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  False
    
    82 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  False
    
    83 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: float64
    
    9 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: float64
    
    9

    _______________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: float64
    
    9 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 đổi

    Nế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.413542
    
    1, 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.