Thực hiện hiệu quả các thuật toán học máy hoặc ngay cả khi thực hiện một số phân tích dữ liệu trên bộ dữ liệu, chúng tôi yêu cầu dữ liệu sạch. Có một câu nói nổi tiếng về mô hình số với dữ liệu, thùng rác trong thùng rác ra, chúng tôi có thể mong đợi kết quả tốt khi dữ liệu của chúng tôi không sạch sẽ. Trong bài viết này, chúng tôi sẽ khám phá các kỹ thuật phổ biến mà chúng tôi có thể sử dụng để làm sạch dữ liệu CSV bằng thư viện Python Pandas. Chúng tôi sẽ làm sạch dữ liệu dựa trên những điều sau: Trong gấu trúc, một giá trị bị thiếu thường được biểu thị bằng Kiểm tra làm sạch dữ liệu CSV
1. Làm sạch các giá trị bị thiếu trong tệp CSV
import pandas as pd
#importing dataset
df = pd.read_csv['IMDB-Movie-Data.csv']
df.isnull[].sum[]
0, vì nó dựa trên gói numpy, nó là giá trị NAN dấu phẩy động đặc biệt đặc biệt với Numpy.
Bạn có thể tìm thấy bộ dữ liệu được sử dụng trong bài viết này ở đây.
Tìm các giá trị bị thiếu
Trước tiên, hãy xem cách chúng ta có thể tìm thấy nếu có một giá trị bị thiếu trong dữ liệu của chúng tôi.
#Approach 1: Trực quan
import pandas as pd import seaborn as sb import matplotlib.pyplot as plt #importing Dataset df = pd.read_csv['IMDB-Movie-Data.csv'] #Creating the heatmap plt.figure[figsize = [8,6]] sb.heatmap[df.isnull[], cbar=False , cmap = 'magma']
Phương thức
import pandas as pd #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] df.isnull[].sum[]1 trả về các giá trị boolean cho biết nếu có một giá trị bị thiếu trong dữ liệu.
Tuy nhiên, quá trình này có thể chỉ giới hạn ở các bộ dữ liệu từ trung bình đến nhỏ.
#Approach 2
Chúng ta có thể sử dụng phương thức
import pandas as pd #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] df.isnull[].sum[]2 Sau khi áp dụng
import pandas as pd #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] df.isnull[].sum[]3, điều này sẽ trả về tổng các giá trị bị thiếu trong mỗi cột trong khung dữ liệu.
import pandas as pd #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] df.isnull[].sum[]
Làm sạch các giá trị bị thiếu từ dữ liệu
Chúng tôi thấy rằng bộ dữ liệu của chúng tôi có một số giá trị bị thiếu trong đó, chúng tôi nên làm gì tiếp theo để có được dữ liệu sạch?
Chúng ta có thể thả các hàng và cột chứa các giá trị bị thiếu trong chúng hoặc thay thế các giá trị bị thiếu bằng giá trị thích hợp, tức là trung bình, trung bình hoặc chế độ.
- Bỏ các giá trị bị thiếu:
#imporing pandas import pandas as pd #Importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] #Size of original dataset print[df.shape] #Dropping the missing rows. df_dropped = df.dropna[how = 'any']
Mã trên sẽ thả các hàng từ DataFrame có các giá trị bị thiếu.
Hãy cùng nhìn vào phương pháp
import pandas as pd #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] df.isnull[].sum[]4 một cách chi tiết:
- df.dropna [] - thả tất cả các hàng có bất kỳ giá trị nan nào
- df.dropna [How = xông all
- df.dropna [ngưỡng = 2] - thả hàng nếu nó không có ít nhất hai giá trị không phải là NANnot NaN
- df.dropna [tập hợp con = [1]] - chỉ giảm nếu nan trong cột cụ thể
Người ta phải cẩn thận khi xem xét giảm các giá trị bị thiếu vì nó có thể ảnh hưởng đến chất lượng của bộ dữ liệu.
2. Thay thế các giá trị bị thiếuReplacing Missing values
import pandas as pd #importing the dataset df = pd.read_csv['IMDB-Movie-Data.csv'] #Creating a copy of dataframe df_new = df df_new['Metascore'] = df_new['Metascore'].fillna[[df_new['Metascore'].mean[]]] #printing the dataframes after replacing null values print[df_new.isna[].sum[]] print[df.isna[].sum[]]
Mô -đun Pandas có phương thức .fillna [], chấp nhận một giá trị mà chúng tôi muốn thay thế thay cho các giá trị NAN. Chúng tôi chỉ tính giá trị trung bình của cột và chuyển nó như một đối số đầu vào cho phương thức
import pandas as pd #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] df.isnull[].sum[]5.
2. Đối phó với các ngoại lệ
Các ngoại lệ có thể thay đổi quá trình của toàn bộ dự đoán do đó nó là điều cần thiết chúng ta phát hiện và loại bỏ các ngoại lệ.
Sử dụng điểm z
Hãy để phát hiện ra các ngoại lệ trong cột phiếu bầu trong tập dữ liệu của chúng tôi và lọc các ngoại lệ bằng điểm số Z.
Ý tưởng đằng sau phương pháp này nằm ở chỗ các giá trị nằm 3 độ lệch chuẩn so với giá trị trung bình sẽ được gọi là ngoại lệ.
#importing required modules import pandas as pd import numpy as np from scipy import stats #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] #filtering outliers df_new = df[[np.abs[stats.zscore[df.Votes]] < 3]]
Cột mà phương pháp này được áp dụng phải là một biến số và không phân loại.
Sử dụng lượng tử
Bằng phương pháp này, các giá trị giảm xuống dưới 0,01 lượng tử và 0,99 lượng tử trong chuỗi sẽ được lọc ra.
#importing required modules import pandas as pd import numpy as np from scipy import stats #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] #Selecting limits q_low = df["Votes"].quantile[0.01] q_hi = df["Votes"].quantile[0.99] #filtering outliers df_filtered = df[[df["Votes"] < q_hi] & [df["Votes"] > q_low]]
3. Xử lý các mục trùng lặp
Chúng tôi có thể kiểm tra bất kỳ bản sao nào trong DataFrame bằng phương pháp
import pandas as pd #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] df.isnull[].sum[]6. Điều này trả về một loạt gấu trúc chứ không phải một khung dữ liệu.
import pandas as pd #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] df.isnull[].sum[]6 method. This returns a Pandas Series and not a DataFrame.
Để kiểm tra các giá trị trùng lặp trong một cột cụ thể, chúng tôi có thể cung cấp tên cột làm đối số đầu vào vào phương thức
import pandas as pd #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] df.isnull[].sum[]7.
Hãy cùng xem điều này trong hành động.
May mắn thay, chúng tôi không có giá trị trùng lặp trong khung dữ liệu của mình, vì vậy chúng tôi sẽ nối một số giá trị từ chính khung dữ liệu để tạo các giá trị trùng lặp.
#Import the required modules import pandas as pd import numpy as np #importing and appending similar rows to of the dataframe df = pd.read_csv['IMDB-Movie-Data.csv'] df1 = df.append[df.iloc[20:30,:]] df1.duplicated[].sum[]
Output: 10
Bây giờ, phương thức
import pandas as pd #importing dataset df = pd.read_csv['IMDB-Movie-Data.csv'] df.isnull[].sum[]8 được sử dụng để bỏ các giá trị trùng lặp từ DataFrame.
#Importing the required modules #Import the required modules import pandas as pd import numpy as np #importing and appending similar rows to of the dataframe df = pd.read_csv['IMDB-Movie-Data.csv'] df1 = df.append[df.iloc[20:30,:]] #dropping the duplicates df1 = df1.drop_duplicates[] #checking the duplicates df1.duplicated[].sum[]
output: 0
Bản tóm tắt
Làm sạch dữ liệu CSV trong Python rất dễ dàng với gấu trúc và mô -đun numpy. Luôn luôn thực hiện làm sạch dữ liệu trước khi chạy một số phân tích trên đó để đảm bảo phân tích là chính xác.
Cái gì tiếp theo?
- Phân tích dữ liệu Python
- Mô -đun Numpy
- Phân tích dữ liệu so với khoa học dữ liệu
Tài nguyên
- Trang web chính thức của Pandas
- Tài liệu numpy.org