Xử lý giá trị thiếu trong Series và DataFrame với Python
Mục lục
- Giới thiệu về Series
- Cách xử lý giá trị thiếu trong Series
- Import thư viện và tạo Series
- Cách kiểm tra giá trị null
- 4.1. Sử dụng phương thức isnull()
- 4.2. Sử dụng phương thức notnull()
- Tính tổng các giá trị null và not null
- Xử lý giá trị thiếu trong DataFrame
- Import dữ liệu và kiểm tra thông tin
- Xử lý giá trị null trong cột 'Age'
- Thay thế giá trị null trong cột 'Sex'
- Kết luận
1. Giới thiệu về Series
Series là một mảng một chiều trong pandas, có khả năng lưu trữ dữ liệu của bất kỳ kiểu dữ liệu nào. Các phần tử trong Series được gán nhãn bởi index.
2. Cách xử lý giá trị thiếu trong Series
Để xử lý giá trị thiếu trong Series, chúng ta có thể sử dụng các phương thức isnull() và notnull(). Cả hai phương thức này đều trả về giá trị boolean, true nếu giá trị là null và false nếu giá trị không phải null.
3. Import thư viện và tạo Series
Trước khi bắt đầu xử lý giá trị thiếu trong Series, chúng ta cần import thư viện pandas và tạo một đối tượng Series. Ví dụ:
import pandas as pd
# Tạo một Series với các giá trị số nguyên
series_one = pd.Series([1, 2, 3, 4, None, 6, 7, 8])
# In Series
print(series_one)
Output:
0 1
1 2
2 3
3 4
4 None
5 6
6 7
7 8
dtype: float64
Trong ví dụ trên, chúng ta đã tạo một Series với các giá trị số nguyên, và giá trị thứ 5 là None, tức là giá trị thiếu.
4. Cách kiểm tra giá trị null
Để kiểm tra xem một giá trị có phải là null hay không, chúng ta có thể sử dụng phương thức isnull(). Ví dụ:
# Kiểm tra các giá trị null trong Series
null_values = series_one.isnull()
# In kết quả
print(null_values)
Output:
0 False
1 False
2 False
3 False
4 True
5 False
6 False
7 False
dtype: bool
Trong ví dụ trên, chúng ta đã sử dụng phương thức isnull() để kiểm tra các giá trị null trong Series. Kết quả trả về là một Series chứa các giá trị boolean, true nếu giá trị tương ứng là null và false nếu không phải.
4.1. Sử dụng phương thức isnull()
Phương thức isnull() trả về một Series chứa các giá trị boolean, true nếu giá trị tương ứng là null và false nếu không phải.
# Sử dụng phương thức isnull()
null_values = series_one.isnull()
# In kết quả
print(null_values)
Output:
0 False
1 False
2 False
3 False
4 True
5 False
6 False
7 False
dtype: bool
4.2. Sử dụng phương thức notnull()
Phương thức notnull() trả về một Series chứa các giá trị boolean, true nếu giá trị tương ứng không phải là null và false nếu là null.
# Sử dụng phương thức notnull()
not_null_values = series_one.notnull()
# In kết quả
print(not_null_values)
Output:
0 True
1 True
2 True
3 True
4 False
5 True
6 True
7 True
dtype: bool
5. Tính tổng các giá trị null và not null
Để tính tổng các giá trị null và not null trong Series, chúng ta có thể sử dụng phương thức sum().
# Tính tổng các giá trị null
sum_null_values = series_one.isnull().sum()
# Tính tổng các giá trị not null
sum_not_null_values = series_one.notnull().sum()
# In kết quả
print("Số lượng giá trị null:", sum_null_values)
print("Số lượng giá trị not null:", sum_not_null_values)
Output:
Số lượng giá trị null: 1
Số lượng giá trị not null: 7
Trong ví dụ trên, chúng ta tính tổng số lượng giá trị null và not null trong Series.
6. Xử lý giá trị thiếu trong DataFrame
Để xử lý giá trị thiếu trong DataFrame, chúng ta có thể sử dụng các phương pháp như fillna(), dropna(), interpolate(),...
7. Import dữ liệu và kiểm tra thông tin
Trước khi xử lý giá trị thiếu trong DataFrame, chúng ta cần import dữ liệu và kiểm tra thông tin về DataFrame.
import pandas as pd
# Import dữ liệu
df = pd.read_csv("data.csv")
# Kiểm tra thông tin về DataFrame
print(df.info())
Output:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 3 columns):
Sex 891 non-null object
Age 714 non-null float64
Embarked 889 non-null object
dtypes: float64(1), object(2)
memory usage: 21.0+ KB
None
Trong ví dụ trên, chúng ta đã import dữ liệu từ tệp csv và sử dụng phương thức info() để kiểm tra thông tin về DataFrame. Chúng ta có 3 cột: 'Sex', 'Age' và 'Embarked'. Cột 'Age' chứa giá trị thiếu.
8. Xử lý giá trị null trong cột 'Age'
Để xử lý giá trị null trong cột 'Age', chúng ta có thể sử dụng phương thức fillna() để điền giá trị thiếu bằng một giá trị khác.
# Xử lý giá trị null trong cột 'Age'
df['Age'] = df['Age'].fillna(df['Age'].mean())
# Kiểm tra kết quả
print(df.info())
Output:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 3 columns):
Sex 891 non-null object
Age 891 non-null float64
Embarked 889 non-null object
dtypes: float64(1), object(2)
memory usage: 21.0+ KB
None
Trong ví dụ trên, chúng ta sử dụng phương thức fillna() để điền giá trị trung bình của cột 'Age' vào các giá trị null.
9. Thay thế giá trị null trong cột 'Sex'
Để thay thế giá trị null trong cột 'Sex', chúng ta có thể sử dụng phương thức fillna() hoặc replace() để thay thế giá trị thiếu bằng giá trị khác.
# Thay thế giá trị null trong cột 'Sex'
df['Sex'] = df['Sex'].fillna('Unknown')
# Kiểm tra kết quả
print(df.info())
Output:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 3 columns):
Sex 891 non-null object
Age 891 non-null float64
Embarked 889 non-null object
dtypes: float64(1), object(2)
memory usage: 21.0+ KB
None
Trong ví dụ trên, chúng ta sử dụng phương thức fillna() để thay thế giá trị null trong cột 'Sex' bằng 'Unknown'.
10. Kết luận
Trong bài viết này, chúng ta đã tìm hiểu cách xử lý giá trị thiếu trong Series và DataFrame bằng cách sử dụng các phương thức như isnull(), notnull(), fillna(), dropna(), interpolate(),... Điều này giúp chúng ta xử lý hiệu quả dữ liệu thiếu trong phân tích dữ liệu và huấn luyện mô hình máy học.