Hướng dẫn phân tích dữ liệu python

Nhà phân tích dữ liệu sử dụng các công cụ lập trình để khai thác một lượng lớn dữ liệu phức tạp và tìm thông tin liên quan từ dữ liệu này

Nói tóm lại, một nhà phân tích là người tìm ra ý nghĩa từ dữ liệu lộn xộn. Một nhà phân tích dữ liệu cần có các kỹ năng trong các lĩnh vực sau để trở nên hữu ích tại nơi làm việc

  • Chuyên môn về miền — Để khai thác dữ liệu và đưa ra những hiểu biết sâu sắc có liên quan đến nơi làm việc của họ, nhà phân tích cần phải có chuyên môn về miền
  • Kỹ năng lập trình —Là một nhà phân tích dữ liệu, bạn sẽ cần biết các thư viện phù hợp để sử dụng nhằm làm sạch dữ liệu, khai thác và hiểu rõ hơn về dữ liệu đó
  • Thống kê - Một nhà phân tích có thể cần sử dụng một số công cụ thống kê để rút ra ý nghĩa từ dữ liệu
  • Kỹ năng trực quan hóa - Một nhà phân tích dữ liệu cần có kỹ năng trực quan hóa dữ liệu tuyệt vời để tóm tắt và trình bày dữ liệu cho bên thứ ba
  • Kể chuyện — Cuối cùng, một nhà phân tích cần truyền đạt những phát hiện của họ cho các bên liên quan hoặc khách hàng. Điều này có nghĩa là họ sẽ cần tạo một câu chuyện dữ liệu và có khả năng tường thuật nó

Trong bài viết này, tôi sẽ hướng dẫn bạn quy trình phân tích dữ liệu từ đầu đến cuối với Python

Nếu bạn làm theo hướng dẫn này và viết mã mọi thứ theo cách tôi đã làm, thì bạn có thể sử dụng các mã và công cụ này cho các dự án phân tích dữ liệu trong tương lai

Chúng tôi sẽ bắt đầu với việc tải xuống và làm sạch tập dữ liệu, sau đó chuyển sang phần phân tích và trực quan hóa. Cuối cùng, chúng tôi sẽ kể một câu chuyện xung quanh những phát hiện dữ liệu của chúng tôi

Tôi sẽ sử dụng bộ dữ liệu từ Kaggle có tên là Cơ sở dữ liệu về bệnh tiểu đường của người Ấn Độ Pima, bạn có thể tải xuống bộ dữ liệu này để thực hiện phân tích

Điều kiện tiên quyết

Đối với toàn bộ phân tích này, tôi sẽ sử dụng Máy tính xách tay Jupyter. Bạn có thể sử dụng bất kỳ IDE Python nào bạn thích

Bạn sẽ cần cài đặt các thư viện trong suốt quá trình và tôi sẽ cung cấp các liên kết hướng dẫn bạn qua quá trình cài đặt

Phân tích

Ảnh của Luke Chesser trên Bapt

Sau khi tải xuống tập dữ liệu, bạn sẽ cần đọc. csv dưới dạng khung dữ liệu trong Python. Bạn có thể làm điều này bằng thư viện Pandas

Nếu bạn chưa cài đặt nó, bạn có thể làm như vậy với một “pip install pandas” đơn giản trong thiết bị đầu cuối của mình. Nếu bạn gặp bất kỳ khó khăn nào trong quá trình cài đặt hoặc chỉ đơn giản là muốn tìm hiểu thêm về thư viện Pandas, bạn có thể xem tài liệu của họ tại đây

đọc dữ liệu

Để đọc khung dữ liệu vào Python, trước tiên bạn cần nhập Pandas. Sau đó, bạn có thể đọc tệp và tạo khung dữ liệu với các dòng mã sau

import pandas as pd
df = pd.read_csv['diabetes.csv']

Để kiểm tra phần đầu của khung dữ liệu, hãy chạy

df.head[]

Hình ảnh của tác giả

Từ ảnh chụp màn hình ở trên, bạn có thể thấy 9 biến số khác nhau liên quan đến sức khỏe của bệnh nhân

Là một nhà phân tích, bạn sẽ cần có hiểu biết cơ bản về các biến này

  • mang thai. Số lần mang thai của bệnh nhân
  • đường. Nồng độ glucose của bệnh nhân
  • Huyết áp
  • độ dày của da. Độ dày của da bệnh nhân tính bằng mm
  • insulin. Mức insulin của bệnh nhân
  • chỉ số khối cơ thể. Body Mass Index của bệnh nhân
  • Bệnh Tiểu ĐườngPhả HệChức Năng. Tiền sử đái tháo đường của người thân
  • Tuổi tác
  • kết quả. Bệnh nhân có bị tiểu đường hay không

Là một nhà phân tích, bạn sẽ cần biết sự khác biệt giữa các loại biến này - Số và Phân loại

Biến số là các biến là thước đo và có một số loại ý nghĩa số. Tất cả các biến trong bộ dữ liệu này ngoại trừ "kết quả" là số

Biến phân loại còn được gọi là biến danh nghĩa và có hai hoặc nhiều loại có thể được phân loại

Biến "kết quả" là phân loại - 0 đại diện cho việc không mắc bệnh tiểu đường và 1 đại diện cho sự hiện diện của bệnh tiểu đường

Ghi chú nhanh

Trước khi tiếp tục phân tích, tôi muốn ghi chú nhanh

Các nhà phân tích cũng là con người và chúng ta thường có định kiến ​​về những gì chúng ta mong đợi thấy trong dữ liệu

Ví dụ, bạn sẽ cho rằng một người lớn tuổi có nhiều khả năng mắc bệnh tiểu đường. Bạn sẽ muốn thấy mối tương quan này trong dữ liệu, điều này có thể không phải lúc nào cũng đúng

Giữ một tâm trí cởi mở trong quá trình phân tích và đừng để sự thiên vị của bạn ảnh hưởng đến việc ra quyết định

hồ sơ gấu trúc

Đây là một công cụ rất hữu ích mà các nhà phân tích có thể sử dụng. Nó tạo ra một báo cáo phân tích trên khung dữ liệu và giúp bạn hiểu rõ hơn về mối tương quan giữa các biến

Để tạo báo cáo Hồ sơ Pandas, hãy chạy các dòng mã sau

import pandas_profiling as pp
pp.ProfileReport[df]

Báo cáo này sẽ cung cấp cho bạn một số thông tin thống kê tổng thể về tập dữ liệu, giống như thế này

Hình ảnh của tác giả

Chỉ cần nhìn vào số liệu thống kê của tập dữ liệu, chúng ta có thể thấy rằng không có ô nào bị thiếu hoặc trùng lặp trong khung dữ liệu của mình

Thông tin được cung cấp ở trên thường yêu cầu chúng tôi chạy một vài dòng mã để tìm, nhưng được tạo dễ dàng hơn rất nhiều với Hồ sơ Pandas

Pandas Profiling cũng cung cấp thêm thông tin về từng biến. Tôi sẽ chỉ cho bạn một ví dụ

Hình ảnh của tác giả

Đây là thông tin được tạo cho biến có tên “Mang thai. ”

Là một nhà phân tích, báo cáo này tiết kiệm rất nhiều thời gian vì chúng tôi không phải xem xét từng biến riêng lẻ và chạy quá nhiều dòng mã

Từ đây, chúng ta có thể thấy rằng

  • Biến “Mang thai” có 17 giá trị riêng biệt
  • Số lần mang thai tối thiểu của một người là 0 và tối đa là 17
  • Số lượng giá trị 0 trong cột này khá ít [chỉ có 14. 5%]. Điều này có nghĩa là trên 80% bệnh nhân trong bộ dữ liệu đang mang thai

Trong báo cáo, có thông tin như thế này được cung cấp cho từng biến. Điều này giúp chúng tôi rất nhiều trong việc hiểu tập dữ liệu và tất cả các cột trong đó

Hình ảnh của tác giả

Biểu đồ trên là một ma trận tương quan. Nó giúp chúng ta hiểu rõ hơn về mối tương quan giữa các biến trong tập dữ liệu

Có một mối tương quan tích cực nhỏ giữa các biến "Tuổi" và "Độ dày của da", có thể được xem xét thêm trong phần trực quan hóa của phân tích

Vì không có hàng nào bị thiếu hoặc trùng lặp trong khung dữ liệu như đã thấy ở trên, nên chúng tôi không cần thực hiện bất kỳ thao tác làm sạch dữ liệu bổ sung nào

Trực quan hóa dữ liệu

Bây giờ chúng ta đã có hiểu biết cơ bản về từng biến, chúng ta có thể thử tìm mối quan hệ giữa chúng

Cách đơn giản nhất và nhanh nhất để thực hiện việc này là tạo trực quan hóa

Trong hướng dẫn này, chúng tôi sẽ sử dụng ba thư viện để hoàn thành công việc — Matplotlib, Seaborn và Plotly

Nếu bạn là người mới bắt đầu hoàn toàn với Python, tôi khuyên bạn nên bắt đầu và làm quen với Matplotlib và Seaborn

Đây là tài liệu về Matplotlib, và đây là tài liệu về Seaborn. Tôi thực sự khuyên bạn nên dành thời gian đọc tài liệu và thực hiện các hướng dẫn sử dụng hai thư viện này để cải thiện kỹ năng trực quan hóa của bạn

Plotly là một thư viện cho phép bạn tạo các biểu đồ tương tác và yêu cầu bạn phải quen thuộc hơn một chút với Python để thành thạo. Bạn có thể tìm thấy hướng dẫn cài đặt và các yêu cầu tại đây

Nếu bạn làm theo đúng hướng dẫn này, bạn sẽ có thể tạo các biểu đồ đẹp với ba thư viện này. Sau đó, bạn có thể sử dụng mã của tôi làm mẫu cho mọi tác vụ phân tích hoặc trực quan hóa trong tương lai

Trực quan hóa biến kết quả

Trước tiên, hãy chạy các dòng mã sau để nhập Matplotlib, Seaborn, Numpy và Plotly sau khi cài đặt

# Visualization Importsimport matplotlib.pyplot as plt
import seaborn as sns
color = sns.color_palette[]
get_ipython[].run_line_magic['matplotlib', 'inline']
import plotly.offline as py
py.init_notebook_mode[connected=True]
import plotly.graph_objs as go
import plotly.tools as tls
import plotly.express as px
import numpy as np

Tiếp theo, hãy chạy các dòng mã sau để tạo biểu đồ hình tròn hiển thị biến kết quả

dist = df['Outcome'].value_counts[]
colors = ['mediumturquoise', 'darkorange']
trace = go.Pie[values=[np.array[dist]],labels=dist.index]
layout = go.Layout[title='Diabetes Outcome']
data = [trace]
fig = go.Figure[trace,layout]
fig.update_traces[marker=dict[colors=colors, line=dict[color='#000000', width=2]]]
fig.show[]

Điều này được thực hiện với thư viện Plotly và bạn sẽ nhận được một biểu đồ tương tác trông như thế này

Hình ảnh của tác giả

Bạn có thể thử với biểu đồ và chọn thay đổi màu sắc, nhãn và chú thích

Tuy nhiên, từ biểu đồ trên, chúng ta có thể thấy rằng hầu hết bệnh nhân trong bộ dữ liệu không bị tiểu đường. Chưa đến một nửa trong số họ có kết quả là 1 [bị tiểu đường]

Ma trận tương quan với Plotly

Tương tự như ma trận tương quan được tạo trong Hồ sơ Pandas, chúng ta có thể tạo một ma trận bằng Plotly

def df_to_plotly[df]:
return {'z': df.values.tolist[],
'x': df.columns.tolist[],
'y': df.index.tolist[] }
import plotly.graph_objects as go
dfNew = df.corr[]
fig = go.Figure[data=go.Heatmap[df_to_plotly[dfNew]]]
fig.show[]

Các mã trên sẽ tạo ra một ma trận tương quan tương tự như ở trên

Hình ảnh của tác giả

Một lần nữa, tương tự như ma trận được tạo ở trên, có thể quan sát thấy mối tương quan thuận giữa các biến

  • Tuổi tác và thời kỳ mang thai
  • Glucose và kết quả
  • Độ dày của da và Insulin

Để hiểu rõ hơn về mối tương quan giữa các biến, chúng ta sẽ tạo một số biểu đồ

Hình dung mức độ glucose và insulin

fig = px.scatter[df, x='Glucose', y='Insulin']
fig.update_traces[marker_color="turquoise",marker_line_color='rgb[8,48,107]',
marker_line_width=1.5]
fig.update_layout[title_text='Glucose and Insulin']
fig.show[]

Chạy các mã trên sẽ cung cấp cho bạn một cốt truyện giống như thế này

Hình ảnh của tác giả

Có mối tương quan thuận giữa các biến glucose và insulin. Điều này có ý nghĩa, bởi vì một người có mức glucose cao hơn sẽ phải dùng nhiều insulin hơn

Trực quan hóa kết quả và tuổi tác

Bây giờ, chúng ta sẽ trực quan hóa các biến kết quả và tuổi tác. Chúng tôi sẽ tạo một boxplot để làm như vậy, sử dụng mã bên dưới

fig = px.box[df, x='Outcome', y='Age']
fig.update_traces[marker_color="midnightblue",marker_line_color='rgb[8,48,107]',
marker_line_width=1.5]
fig.update_layout[title_text='Age and Outcome']
fig.show[]

Cốt truyện kết quả sẽ trông giống như thế này

Hình ảnh của tác giả

Từ cốt truyện trên, bạn có thể thấy rằng người lớn tuổi có nhiều khả năng mắc bệnh tiểu đường. Độ tuổi trung bình của người trưởng thành mắc bệnh tiểu đường là khoảng 35, trong khi độ tuổi này thấp hơn nhiều đối với những người không mắc bệnh tiểu đường

Tuy nhiên, có rất nhiều ngoại lệ

Có một số người già không mắc bệnh tiểu đường [thậm chí có người trên 80 tuổi], có thể quan sát được trong boxplot

Hình dung chỉ số BMI và kết quả

Cuối cùng, chúng ta sẽ trực quan hóa các biến “BMI” và “Kết quả”, để xem liệu có mối tương quan nào giữa hai biến không

Để làm điều này, chúng tôi sẽ sử dụng thư viện Seaborn

________số 8

Hình ảnh của tác giả

Ô vuông được tạo ở đây tương tự như ô được tạo ở trên bằng Plotly. Tuy nhiên, Plotly tốt hơn trong việc tạo các hình ảnh trực quan có tính tương tác và các biểu đồ trông đẹp hơn so với các biểu đồ được tạo trong Seaborn

Từ biểu đồ hộp ở trên, chúng ta có thể thấy rằng chỉ số BMI cao hơn tương quan với kết quả tích cực. Những người mắc bệnh tiểu đường có xu hướng có chỉ số BMI cao hơn những người không mắc bệnh tiểu đường

Bạn có thể tạo nhiều trực quan hóa hơn như những cái ở trên, chỉ bằng cách thay đổi tên biến và chạy cùng một dòng mã

Tôi sẽ coi đó như một bài tập để bạn thực hiện, để nắm bắt tốt hơn các kỹ năng trực quan hóa của bạn với Python

Kể chuyện dữ liệu

Ảnh của Blaz Photo trên Bapt

Cuối cùng, chúng ta có thể kể một câu chuyện xung quanh dữ liệu mà chúng ta đã phân tích và trực quan hóa. Những phát hiện của chúng tôi có thể được chia nhỏ như sau

Những người mắc bệnh tiểu đường có nhiều khả năng già hơn những người không mắc bệnh. Họ cũng có nhiều khả năng có chỉ số BMI cao hơn hoặc bị béo phì. Họ cũng có nhiều khả năng có lượng đường trong máu cao hơn. Những người có mức glucose cao hơn cũng có xu hướng sử dụng nhiều insulin hơn và mối tương quan thuận này cho thấy bệnh nhân mắc bệnh tiểu đường cũng có thể có mức insulin cao hơn [có thể kiểm tra mối tương quan này bằng cách tạo biểu đồ phân tán]

Đó là tất cả cho bài viết này. Tôi hy vọng bạn thấy hướng dẫn này hữu ích và có thể sử dụng nó làm tài liệu tham khảo trong tương lai cho các dự án bạn cần tạo. Chúc may mắn trong hành trình khoa học dữ liệu của bạn và học tập vui vẻ

Học mọi thứ bạn có thể, bất cứ lúc nào bạn có thể, từ bất kỳ ai bạn có thể;

Chủ Đề