Khoa học dữ liệu - Chuẩn bị dữ liệu


Trước khi phân tích dữ liệu, Nhà khoa học dữ liệu phải trích xuất dữ liệu và làm cho dữ liệu trở nên sạch sẽ và có giá trị.


Trích xuất và đọc dữ liệu với gấu trúc

Trước khi dữ liệu có thể được phân tích, nó phải được nhập / trích xuất.

Trong ví dụ dưới đây, chúng tôi chỉ cho bạn cách nhập dữ liệu bằng Pandas trong Python.

Chúng tôi sử dụng read_csv()chức năng để nhập tệp CSV với dữ liệu tình trạng:

Thí dụ

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data)

Giải thích ví dụ

  • Nhập thư viện Pandas
  • Đặt tên cho khung dữ liệu là health_data.
  • header=0 có nghĩa là các tiêu đề cho tên biến phải được tìm thấy ở hàng đầu tiên (lưu ý rằng 0 có nghĩa là hàng đầu tiên trong Python)
  • sep=","có nghĩa là "," được sử dụng làm dấu phân cách giữa các giá trị. Điều này là do chúng tôi đang sử dụng loại tệp .csv (các giá trị được phân tách bằng dấu phẩy)

Mẹo: Nếu bạn có một tệp CSV lớn, bạn có thể sử dụng head()chức năng này để chỉ hiển thị 5 mũi tên hàng đầu:

Thí dụ

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data.head())

Làm sạch dữ liệu

Nhìn vào dữ liệu đã nhập. Như bạn có thể thấy, dữ liệu "bẩn" với các giá trị sai hoặc chưa được đăng ký:

Dữ liệu bẩn
  • Có một số trường trống
  • Xung trung bình là 9 000 là không thể
  • 9 000 sẽ được coi là không phải số, do có dấu cách
  • Một quan sát về xung tối đa được biểu thị là "AF", điều này không có ý nghĩa

Vì vậy, chúng ta phải làm sạch dữ liệu để thực hiện phân tích.


Xóa hàng trống

Chúng tôi thấy rằng các giá trị không phải số (9 000 và AF) nằm trong cùng các hàng với các giá trị bị thiếu.

Giải pháp: Chúng tôi có thể loại bỏ các hàng có quan sát bị thiếu để khắc phục sự cố này.

Khi chúng tôi tải tập dữ liệu bằng Pandas, tất cả các ô trống sẽ tự động được chuyển đổi thành giá trị "NaN".

Vì vậy, việc loại bỏ các ô NaN cung cấp cho chúng ta một tập dữ liệu sạch có thể được phân tích.

Chúng ta có thể sử dụng dropna()chức năng để loại bỏ các NaN. axis = 0 có nghĩa là chúng tôi muốn xóa tất cả các hàng có giá trị NaN:

Thí dụ

health_data.dropna(axis=0,inplace=True)

print(health_data)

Kết quả là một tập dữ liệu không có hàng NaN:

Dữ liệu đã xóa

Danh mục dữ liệu

Để phân tích dữ liệu, chúng ta cũng cần biết các loại dữ liệu mà chúng ta đang xử lý.

Dữ liệu có thể được chia thành ba loại chính:

  1. Numerical - Chứa các giá trị số. Có thể chia thành hai loại:
    • Rời rạc: Các số được tính là "toàn bộ". Ví dụ: Bạn không thể đào tạo 2,5 buổi, đó là 2 hoặc 3
    • Liên tục: Các con số có thể có độ chính xác vô hạn. Ví dụ: bạn có thể ngủ trong 7 giờ, 30 phút và 20 giây hoặc 7,533 giờ
  2. Categorical - Chứa các giá trị không thể đo lường được với nhau. Ví dụ: Một màu sắc hoặc một loại đào tạo
  3. Thông thường - Chứa dữ liệu phân loại có thể được đo lường với nhau. Ví dụ: Điểm trường nơi A tốt hơn B, v.v.

Bằng cách biết loại dữ liệu của mình, bạn sẽ có thể biết kỹ thuật nào nên sử dụng khi phân tích chúng.


Loại dữ liệu

Chúng ta có thể sử dụng info()hàm để liệt kê các kiểu dữ liệu trong tập dữ liệu của mình: 

Thí dụ

print(health_data.info())

Kết quả:

Kiểu dữ liệu float và đối tượng

Chúng tôi thấy rằng tập dữ liệu này có hai loại dữ liệu khác nhau:

  • Float64
  • Sự vật

Chúng tôi không thể sử dụng các đối tượng để tính toán và thực hiện phân tích ở đây. Chúng ta phải chuyển đổi đối tượng kiểu thành float64 (float64 là một số có số thập phân trong Python).

Chúng ta có thể sử dụng astype()hàm để chuyển dữ liệu thành float64.

Ví dụ sau chuyển đổi "Average_Pulse" và "Max_Pulse" thành kiểu dữ liệu float64 (các biến khác đã có kiểu dữ liệu float64):

Thí dụ

health_data["Average_Pulse"] = health_data['Average_Pulse'].astype(float)
health_data["Max_Pulse"] = health_data["Max_Pulse"].astype(float)

print (health_data.info())

Kết quả:

Kiểu dữ liệu float

Bây giờ, tập dữ liệu chỉ có kiểu dữ liệu float64.


Phân tích dữ liệu

Khi chúng tôi đã làm sạch tập dữ liệu, chúng tôi có thể bắt đầu phân tích dữ liệu.

Chúng ta có thể sử dụng describe()hàm trong Python để tóm tắt dữ liệu:

Thí dụ

print(health_data.describe())

Kết quả:

  Khoảng thời gian Average_Pulse Max_Pulse Calorie_Burnage Hours_Work Hours_Sleep
Đếm 10.0 10.0 10.0 10.0 10.0 10.0
Nghĩa là 51.0 102,5 137.0 285.0 6.6 7,5
Std 10.49 15.4 11,35 30,28 3,63 0,53
Min 30.0 80.0 120.0 240.0 0,0 7.0
25% 45.0 91,25 130.0 262,5 7.0 7.0
50% 52,5 102,5 140.0 285.0 8.0 7,5
75% 60.0 113,75 145.0 307,5 8.0 8.0
Max 60.0 125.0 150.0 330.0 10.0 8.0
  • Đếm - Đếm số lượng quan sát
  • Mean - Giá trị trung bình
  • Std - Độ lệch chuẩn (giải thích trong chương thống kê)
  • Min - Giá trị thấp nhất
  • 25% , 50%75% là tỷ lệ phần trăm (giải thích trong chương thống kê)
  • Max - Giá trị cao nhất