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ý:
- 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:
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:
- 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ờ
- 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
- 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ả:
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ả:
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% và 75% là tỷ lệ phần trăm (giải thích trong chương thống kê)
- Max - Giá trị cao nhất