Python trong kế toán

Một chuyên viên 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 chuyên viên phân tích dữ liệu là người tìm ra ý nghĩa từ những dữ liệu lộn xộn. Một chuyên viên phân tích dữ liệu cần có các kỹ năng quan trọng sau:

  • Kiến thức chuyên môn - Để khai thác dữ liệu và đưa ra thông tin chính xác có liên quan đến vấn đề cần giải quyết, chuyên viên phân tích dữ liệu cần phải có kiến thức chuyên môn.

  • Kỹ năng lập trình —Là một chuyên viên phân tích dữ liệu, bạn sẽ cần biết sử dụng các thư viện phù hợp để làm sạch dữ liệu, khai thác và thu thập thông tin chi tiết từ đó.

  • Thống kê - Một chuyên viên phân tích 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 phải 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 nghiên cứu cho một bên liên quan hoặc khách hàng. Nghĩa là họ sẽ cần tạo ra một câu chuyện dựa trên dữ liệu và có khả năng tường thuật nó.

    >>> Học python ở đâu

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 với Python từ A đến Z.

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

Chúng ta 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 tích và trực quan hóa. Cuối cùng, chúng ta sẽ kể một câu chuyện xung quanh những phát hiện dựa trên dữ liệu đó.

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

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

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

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

Phân tích

Sau khi tải xuống, bạn sẽ cần chuyển đổi tệp dữ liệu từ dạng .csv sang khung dữ liệu bằng Python bằng cách sử dụng thư viện Pandas.

Nếu bạn chưa cài đặt Pandas, bạn có thể làm đơn giản với “pin install pandas” trong terminal. Nếu bạn gặp bất kỳ khó khăn nào với việc cài đặt hoặc đơ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 sang Python, trước tiên bạn cần import Pandas. Sau đó, bạn có thể đọc tệp và tạo khung dữ liệu với các dòng mã sau:

df = pd.read_csv['diabetes.csv']

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

df.head[]

Từ ả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 chuyên viên phân tích, bạn sẽ cần phải hiểu cơ bản về các biến số này:

  • Pregnancies: Số lần mang thai của bệnh nhân

  • Glucose : Mức glucose của bệnh nhân

  • Huyết áp

  • Độ dày 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

  • BMI : Chỉ số khối cơ thể của bệnh nhân

  • DiabetesPedigreeFunction: Tiền sử bệnh đái tháo đường ở người thân

  • Tuổi tác

  • Kết quả : Bệnh nhân có bị tiểu đường hay không

Đến đây, bạn sẽ biết sự khác nhau giữa các loại biến số này – Biến định lượng [Numeric] và Biến phân loại [Categorical]

Các biến định lượng là thước đo và mang một vài loại ý nghĩa số học. Tất cả các biến trong tập dữ liệu này ngoại trừ "kết quả" đều là những con số.

Các 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 phân loại.

Biến “ kết quả ” có tính phân loại - 0 đại diện cho không mắc bệnh tiểu đường và 1 đại diện cho mắc bệnh tiểu đường.

Ghi chú nhanh

Trước khi tiếp tục phân tích, lưu ý rằng:

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

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

Giữ một tâm trí khách quan trong quá trình phân tích và đừng để suy nghĩa cá nhân của bạn ảnh hưởng đến việc đưa ra quyết định.

Pandas Profiling

Đây là một công cụ rất hữu ích mà các chuyên viên phân tích có thể sử dụng. Nó tạo 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 Pandas Profiling, 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ẽ cho bạn thông tin thống kê chung trên tập dữ liệu như ảnh dưới:

Chỉ cần nhìn vào thống kê 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.

Để tìm ra thông tin được cung cấp ở trên, chúng ta cần chạy một vài dòng mã, nhưng sẽ dễ dàng hơn nhiều nếu sử dụng Pandas Profiling

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ụ:

Đây là thông tin được tạo cho biến được gọi là “Pregnancies.”

Báo cáo này tiết kiệm rất nhiều thời gian ,vì chúng ta không phải xem qua 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 “Pregnancies” có 17 giá trị khác nhau.

  • 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á thấp [chỉ 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 .

Báo cáo cung cấp thông tin cho từng biến. Nó giúp chúng ta hiểu rất nhiều về tập dữ liệu và các cột dữ liệu trong đó.

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 .

Bạn có thể thấy mối tương quan thuận mức độ nhẹ giữa các biến “ Tuổi ” và “ Độ dày của da ” thông qua phần phân tích trực quan.

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

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 và nhanh nhất để làm điều này là tạo hình ảnh trực quan.

Trong hướng dẫn này, chúng ta sẽ sử dụng ba thư viện - 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 dành cho Matplotlib và đây là tài liệu dành cho 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.

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 sử dụng quen với Python nhiều hơn để 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 có thể tạo các biểu đồ đẹp. Sau đó, bạn có thể sử dụng mã của tôi làm mẫu cho bất kỳ nhiệm vụ phân tích hoặc trực quan hóa nào trong tương lai.

Hình dung biến kết quả

Đầu tiên, hãy chạy các dòng mã sau để import Matplotlib, Seaborn, Numpy và Plotly sau khi cài đặt:

import matplotlib.pyplot as plt

color = sns.color_palette[]

get_ipython[].run_line_magic['matplotlib', 'inline']

py.init_notebook_mode[connected=True]

import plotly.graph_objs as go

Tiếp theo, chạy các dòng mã sau để tạo biểu đồ hình tròn trực quan hóa 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']

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 giống như sau:

Bạn có thể thao tác với biểu đồ và chọn thay đổi màu sắc, nhãn và chú giải.

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 tập dữ liệu không bị tiểu đường. Ít hơn một nửa trong số họ có kết quả là 1 [mắc bệnh 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 Pandas Profiling, chúng ta có thể tạo một ma trận bằng cách sử dụng Plotly:

    return {'z': df.values.tolist[],

import plotly.graph_objects as go

fig = go.Figure[data=go.Heatmap[df_to_plotly[dfNew]]]


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

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 và Mang thai

  • Glucose và kết quả

  • Độ dày da và Insulin

Để hiểu rõ hơn về mối tương quan giữa các biến, chúng ta có thể tạo ra một vài lệnh plot:

Trực quan hóa 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]',

fig.update_layout[title_text='Glucose and Insulin']


Chạy các đoạn mã trên, bạn sẽ thấy như hình dưới:

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

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

Bây giờ, chúng ta sẽ trực quan hóa các biến kết quả và độ tuổi. Chúng tôi sẽ tạo một ô vuông bằng cách 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]',

fig.update_layout[title_text='Age and Outcome']


Cốt truyện kết quả sẽ giống như sau:

Từ biểu đồ trên, bạn có thể thấy rằng nhữ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 lớn mắc bệnh tiểu đường là khoảng 35, trong khi đó ở những người không mắc bệnh tiểu đường thấp hơn nhiều.

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

Có thể quan sát thấy một số người cao tuổi không mắc bệnh tiểu đường [thậm chí hơn 80 tuổi].

Trực quan hóa BMI và kết quả

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

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

plot = sns.boxplot[x='Outcome',y="BMI",data=df]

Biểu đồ hộp tạo ra ở đây tương tự với biểu đồ sử dụng Plotly phía trên. Tuy nhiên, Plotly tạo ra trực quan hóa tốt hơn, mang tính tương tác, và các biểu đồ nhìn đẹp hơn so với tạo bằng Seaborn.

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

Bạn có thể thực hiện nhiều trực quan hóa hơn như những hình trên, chỉ cần thay đổi tên biến và chạy các dòng mã giống nhau.

Tôi sẽ để đây như một bài tập cho bạn làm, để hiểu rõ hơn về kỹ năng trực quan hóa của bạn với Python.

Đăng ký khóa khọc lâp trình python tại đây

Kể chuyện dựa trên dữ liệu

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 ta có thể được tóm lại như sau:

Những người mắc bệnh tiểu đường có khả năng cao tuổi 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ó thể có lượng glucose cao hơn trong máu. Những người có mức đường huyết 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 rằng bệnh nhân 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 ].

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


Tham khảo thêm: Khóa học python tại đây

---

HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI

Học Lập trình chất lượng cao [Since 2002]. Học thực tế + Tuyển dụng ngay!

Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội

SĐT: 02435574074 - 0383.180086

Email: hello@niithanoi.edu.vn

Fanpage: //facebook.com/NIIT.ICT/

#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahocreactnative #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python #react

Chủ Đề