Hướng dẫn dùng dataframe fillna python

Phương thức pandas.DataFrame.fillna () được sử dụng để điền vào cột (một hoặc nhiều cột) chứa NA / NaN / None với 0, trống, trống hoặc bất kỳ giá trị được chỉ định nào, v.v. NaN được coi là một giá trị bị thiếu. Khi bạn xử lý máy học, việc xử lý các giá trị bị thiếu là rất quan trọng, không xử lý các giá trị này sẽ dẫn đến tác dụng phụ với kết quả không chính xác.

Tệp CSV nhận được từ các nguồn của bên thứ ba, hầu hết thời gian nó có giá trị null cho khoảng trống / trống. Bằng cách sử dụng pandas.read_csv (), chúng tôi có thể tải tệp CSV vào DataFrame và pandas chuyển đổi tất cả các giá trị null thành NaN trong DataFrame.

Bạn có thể thả các hàng có giá trị NaN bằng pandas.DataFrame.dropna () hoặc xử lý NaN bằng cách điền các giá trị cụ thể bằng phương thức fillna ().

pandas fillna Key Points

  • Nó được sử dụng để điền các giá trị NaN với các giá trị được chỉ định (0, trống, v.v.).
  • Nếu bạn muốn xem xét vô cùng (inf-inf) được NA trong tính toán, bạn có thể đặt pandas.options.mode.use_inf_as_na = True.
  • Ngoài NaN, gấu trúc None cũng coi như mất tích.

Liên quan: gấu trúc thả hàng & cột với NaN bằng cách sử dụng dropna ()

  • 1. Ví dụ nhanh về pandas fillna ()
  • 2. Cú pháp pandas.DataFrame.fillna ()
  • 3. pandas fillna NaN với Không giá trị
  • 4. gấu trúc điền vào một cột
  • 5. điền vào nhiều cột
  • 6. Điền với thông số giới hạn
  • 7. Hoàn thành Ví dụ về pandas fillna
    • Sự kết luận
    • Người giới thiệu

1. Ví dụ nhanh về pandas fillna ()

Dưới đây là các ví dụ nhanh về cung và cách sử dụng phương thức pandas fillna ().


# fillna() on all columns
df2=df.fillna('None')

# fillna() on once column
df2['Discount'] =  df['Discount'].fillna(0)

# fillna() on multiple columns
df2[['Discount','Fee']] =  df[['Discount','Fee']].fillna(0)

# fillna() on multiple columns with different values
df2 =  df.fillna(value={'Discount':0,'Fee':10000})

# fill with limit
df2=df.fillna(value={'Discount':0,'Fee':0},limit=1)

Dưới đây là cú pháp của phương thức pandas.DataFrame.fillna (). Điều này nhận giá trị tham số, phương thức, trục, vị trí, giới hạn và truyền xuống và trả về một DataFrame mới. Khi inplace = True được sử dụng, nó trả về Không có khi thay thế xảy ra trên đối tượng DataFrame hiện có.


# Syntax of pandas.DataFrame.fillna()
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
  • value – Sử dụng vô hướng, dict, Series hoặc DataFrame nhưng không sử dụng danh sách.
  • method – Lấy một trong các giá trị sau {‘backfill “,” bfill “,” pad “,” ffill “, None}. Mặc định Không có.
  • axis – 0 hoặc ‘chỉ mục’, 1 hoặc ‘cột’. Được sử dụng để trục xác định để điền các giá trị.
  • inplace – Sai mặc định. Khi được sử dụng True, nó cập nhật đối tượng DataFrame hiện có.
  • limit – Chỉ định số lần điền sẽ xảy ra. Đây là số giá trị NaN liên tiếp lớn nhất được thay thế bằng giá trị đã chỉ định.
  • downcast – Nó sử dụng một cặp khóa-giá trị dict chỉ định kiểu dữ liệu cho downcast. Giống như Float64 đến int64ngày thành chuỗi, v.v.

Hãy tạo một DataFrame


# Create DataFrame
import pandas as pd
import numpy as np
df = pd.DataFrame(({
     'Courses':["Spark",'Java',"Scala",'Python'],
     'Fee' :[20000,np.nan,26000,24000],
     'Duration':['30days','40days','NA','40days'],
     'Discount':[1000,np.nan,2500,None]
               }))
print(df)

3. pandas fillna NaN với Không giá trị

Phương thức fillna () được sử dụng để điền các giá trị NaN / NA trên một cột được chỉ định hoặc trên toàn bộ DataaFrame với bất kỳ giá trị nhất định nào. Bạn có thể chỉ định sửa đổi bằng cách sử dụng tại chỗ hoặc giới hạn số lần điền để thực hiện hoặc chọn một trục có điền vào các hàng / cột hay không, v.v. Ví dụ Dưới đây điền vào tất cả các giá trị NaN bằng Không có giá trị nào.


# fillna to replace all NaN
df2=df.fillna('None')
print(df2)

# Outputs
#  Courses      Fee Duration Discount
#0   Spark  20000.0   30days   1000.0
#1    Java     None   40days     None
#2   Scala  26000.0     None   2500.0
#3  Python  24000.0   40days     None

Để cập nhật việc sử dụng DataFrame hiện có df.fillna(‘None’, inplace=True). Bạn cũng có thể sử dụng phương thức pandas.DataFrame.replace () để thay thế NaN bằng giá trị 0. tương tự, bạn cũng có thể thay thế NaN bằng chuỗi trống hoặc chuỗi trống.

4. gấu trúc điền vào một cột

Ví dụ trên đã điền tất cả các giá trị NaN trên toàn bộ DataFrame. đôi khi bạn chỉ cần thay thế trên một cột, bạn có thể làm như vậy bằng cách chọn cột DataFrame cho phương thức fillna ().


# fillna on one column
df2['Discount'] =  df['Discount'].fillna('0')
print(df2)

# Outputs
#  Courses      Fee Duration Discount
#0   Spark  20000.0   30days   1000.0
#1    Java     None   40days        0
#2   Scala  26000.0     None   2500.0
#3  Python  24000.0   40days        0

5. điền vào nhiều cột

Sử dụng phương thức pandas fillna () để điền một giá trị được chỉ định trên nhiều cột DataFrame, các cột cập nhật ví dụ bên dưới DiscountFee 0 cho các giá trị NaN.


# fillna() on multiple columns
df2[['Discount','Fee']] =  df[['Discount','Fee']].fillna('0')
print(df2)

#Outputs
  Courses      Fee Duration Discount
0   Spark  20000.0   30days   1000.0
1    Java        0   40days        0
2   Scala  26000.0     None   2500.0
3  Python  24000.0   40days        0

Bây giờ, hãy xem cách điền giá trị khác nhau cho mỗi cột. Cột cập nhật ví dụ dưới đây Discount 0 và cột Fee 10000 cho các giá trị NaN.


# fillna() on multiple columns
df2 =  df.fillna(value={'Discount':'0','Fee':10000})
print(df2)

# Outputs
#  Courses      Fee Duration Discount
#0   Spark  20000.0   30days   1000.0
#1    Java  10000.0   40days        0
#2   Scala  26000.0      NaN   2500.0
#3  Python  24000.0   40days        0

6. Điền với thông số giới hạn

Để kiểm soát cách điền các giá trị NaN, hãy sử dụng limit tham số. So sánh kết quả dưới đây với kết quả trên để thấy sự khác biệt.


# fill with limit
df2=df.fillna(value={'Discount':0,'Fee':0},limit=1)
print(df2)

# Outputs
#  Courses      Fee Duration  Discount
#0   Spark  20000.0   30days    1000.0
#1    Java      0.0   40days       0.0
#2   Scala  26000.0      NaN    2500.0
#3  Python  24000.0   40days       NaN

7. Hoàn thành Ví dụ về pandas fillna


import pandas as pd
import numpy as np
df = pd.DataFrame(({
     'Courses':["Spark",'Java',"Scala",'Python'],
     'Fee' :[20000,np.nan,26000,24000],
     'Duration':['30days','40days',np.nan,'40days'],
     'Discount':[1000,np.nan,2500,None]
               }))
print(df)

# fillna() on all columns
df2=df.fillna('None')
print(df2)

# fillna() on once column
df2['Discount'] =  df['Discount'].fillna(0)
print(df2)

# fillna() on multiple columns
df2[['Discount','Fee']] =  df[['Discount','Fee']].fillna(0)
print(df2)

# fillna() on multiple columns
df2 =  df.fillna(value={'Discount':0,'Fee':10000})
print(df2)

# fill with limit
df2=df.fillna(value={'Discount':0,'Fee':0},limit=1)
print(df2)

Sự kết luận

Trong bài này, bạn đã học phương thức DataFrame fillna () để điền vào một cột, nhiều cột chứa NaN với một giá trị xác định. Cũng đã học cách thay thế các giá trị khác nhau cho mỗi cột.

Học vui vẻ !!

Người giới thiệu