You are on page 1of 13

3/8/2023

CHƯƠNG 2: TRỰC QUAN HÓA SO SÁNH


TRỰC QUAN HÓA DỮ DỮ LIỆU KẾ TOÁN
LIỆU KẾ TOÁN VỚI
PYTHON Click to add text Trình bày: Phùng Anh Thư

NỘI DUNG
2.1. Giới thiệu về trực quan hóa so sánh
Mục tiêu học tập
2.2. Thực hiện trực quan hóa so sánh với Python
Hiểu khái niệm TQH so sánh, giải thích sự phù hợp các loại biểu đồ đối với 2.2.1. Biểu đồ cột/thanh (Column/Bar Chart)
mục tiêu TQH so sánh. 2.2.2. Biểu đồ cột/thanh theo nhóm (Grouped Column/Bar Chart)
Đánh giá điểm mạnh, hạn chế các loại biểu đồ TQH so sánh dữ liệu kế toán.
Áp dụng ngôn ngữ Python và thư viện để thực hiện vẽ TQH biểu đồ so sánh 2.2.3. Biểu đồ cột xếp chồng (Stacked Column Chart)
dữ liệu kế toán. 2.2.4. Biểu đồ vùng (Area Chart)
Thiết kế và thực hiện dự án TQH biểu đồ so sánh dữ liệu kế toán, tài chính. 2.2.5. Biểu đồ vùng xếp chồng (Stacked Area Chart)
2.2.6. Biểu đồ đường (Line Chart)

3
3/8/2023

2.1 Giới thiệu về trực quan hóa so sánh


BÀI TẬP ỨNG DỤNG
2.3 Ứng dụng trực quan hóa dữ liệu kế toán so sánh
2.3.1 Trực quan hóa dữ liệu kế toán so sánh giao dich phát sinh – Dự án 2-01
2.3.2 Trực quan hóa dữ liệu kế toán so sánh số dư tài khoản – Dự án 2-02
2.3.3 Trực quan hóa dữ liệu kế toán so sánh chỉ tiêu trên BCTC
– Dự án 2-03; – Dự án 2-04; – Dự án 2-05

2.2 Thực hiện trực quan hóa so sánh


Biểu đồ so sánh độ lớn của dữ liệu 2.2.1 Biểu đồ cột/thanh (Column/Bar Chart)

Bar plot:
Biểu đồ so sánh giá trị theo thời gian của dữ liệu Các ô thanh được vẽ theo chiều dọc,
Số loại dữ liệu cần so sánh không nhiều.
bar (x, height [, width, bottom, align, data])
Barh plot:
Các ô thanh được vẽ theo chiều ngang
Số loại dữ liệu cần so sánh nhiều hoặc tên dài
barh - barh (y, width [, height, left, align])

Line chart Sparkline chart Area chart


3/8/2023

2.2.1 Biểu đồ cột/thanh (Column/Bar Chart)


Bài thực hành 01: Bar plot (thư viện matplotlib)
• Cho biến năm từ 2019 đến 2023
2.2.1 Biểu đồ cột/thanh • Biến lợi nhuận tương ứng 2.53, 2.97, 3.62,
(Column/Bar Chart) 3.97, 4.71 tỷ đồng
Định dạng tiền tệ 1. Tiến hành vẽ bar plot bằng matplotlib:
map(lambda x: {:15,.1f}'.format(x))) plt.bar(x,y)
2. Thêm Align và và adgecolor như gợi ý
color='g', align='edge', edgecolor='red';
3. Thiết lập các title, xlabel và ylabel như gợi ý
plt.title; plt.xlabel; plt.ylabel
4. Nhận xét biểu đồ vừa vẽ.

9 10

2.2.1 Biểu đồ cột/thanh (Column/Bar Chart)


Bài thực hành 02 Bar plot (thư viện matplotlib)
Yêu cầu 1:
Tạo df_chiphi = pd.DataFrame({
'chi nhanh': ['Bình Chánh', 'Bình Thạnh', 'Tân Bình', 'Thủ Đức'],
'chi phi': [7.5e6, 6.0e6, 5.6e6, 7.0e6]
})
df_chiphi
Yêu cầu 2:
a,Vẽ biểu đồ chi phí theo từng chi nhánh thiết lập xoay giá trị thể hiện cho trục x
b,Vẽ biểu đồ chi phí theo từng chi thiết lập định dạng tiền tệ giá trị thể hiện cho trục y
Gợi ý sử dụng
plt.xticks(rotation=‘…’) => thiết lập xoay giá trị thể hiện cho trục x
plt.yticks(df_chiphi['chi phi'], df_chiphi['chi phi'].map(lambda x: '{:15,.0f}'.format(x)))
=> thiết lập định dạng tiền tệ

11 12
3/8/2023

2.2.1 Biểu đồ cột/thanh (Column/Bar Chart)


Bài thực hành 02 Bar plot (thư viện matplotlib) 2.2.2. Biểu đồ cột/thanh theo nhóm (Grouped Column/Bar Chart)

• Biểu đồ thanh được nhóm là một loại biểu đồ sử dụng các thanh được
nhóm lại với nhau để trực quan hóa các giá trị của nhiều biến cùng
một lúc.
• Bài thực hành 01 (Grouped Column/Bar Chart bằng thư viện
matplotlib ) biểu thị doanh thu từng dòng sản phẩm theo các chi nhánh
tương tứng.
• Bài thực hành 02 (Grouped Column/Bar Chart bằng thư viện seaborn )
biểu thị số lượng khách hàng đến cửa hàng theo thời gian khác nhau
vào các ngày trong tuần.

13 14

2.2.2. Biểu đồ cột/thanh theo nhóm (Grouped Column/Bar Chart) 2.2.2. Biểu đồ cột/thanh theo nhóm (Grouped Column/Bar Chart)
Bài thực hành 03 Grouped Bar Chart (thư viện matplotlib) Bài thực hành 04 Grouped Bar Chart (thư viện seaborn)

• Cho các chi nhánh 'G1', 'G2', 'G3', 'G4', 'G5'


• Tạo dataframe và truyền vào dữ liệu các cột tương ứng
• Doanh thu dòng sản phẩm A ứng với từng chi nhánh như
sau • Số lượng khách đến cửa hàng các ngày trong tuần (thứ 2 -CN), và thời
• A_means = [20, 34, 30, 35, 27]; A_std = (2, 3, 4, 1, 2) gian (buổi sáng, chiều, tối) khách đến cửa hàng
• B_means = [25, 32, 34, 20, 25]; B_std = (3, 5, 2, 3, 3) • Vẽ biểu đồ nhóm các cột thể hiện Số lượng khách hàng đến cửa hàng
• Vẽ biểu đồ nhóm các cột thể hiện doanh thu thể hiện doanh
theo thời gian các ngày trong tuần
thu cho từng chi nhánh và theo dòng sản phẩm • Gợi ý
• Gợi ý tạo figure • Sử dụng thư viện searborn; Import thư viện
• fig, ax = plt.subplots()
• Sử dụng sns.barplot(x=‘…', y=‘…', hue=‘…', data=df) vẽ biểu đồ
• rects1 = ax.bar(ind - width/2, A_means, width, yerr=A_std,
• Thêm tên biểu đồ: plt.title(‘…', fontsize=16)
• label='Doanh thu SP A')
• Thêm axis titles: plt.xlabel('Ngày trong tuần'); plt.ylabel('Số lượng
• rects2 = ax.bar(ind + width/2, B_means, width, yerr=B_std, khách')
• label='Doanh thu SP B')
• Điều chỉnh rotation của x-axis labels: plt.xticks(rotation=45)

15 16
3/8/2023

2.2.2. Biểu đồ cột/thanh theo nhóm (Grouped Column/Bar Chart)


Bài thực hành 04 Grouped Bar Chart (thư viện seaborn)
2.2.3. Biểu đồ cột xếp chồng (Stacked Column Chart)

• Biểu đồ thanh hoặc biểu đồ cột có thể là một biểu đồ có các thanh hình
chữ nhật có chiều dài và chiều cao tỷ lệ với giá trị mà chúng biểu thị.
Các ô thanh thường được vẽ theo chiều ngang hoặc chiều dọc.
• Các ô thanh xếp chồng lên nhau đại diện cho các nhóm khác nhau trên
đỉnh cao nhất của 1 nhóm khác. Đỉnh của thanh phụ thuộc vào chiều
cao của toàn bộ các dữ liệu cùng nhóm. Giá trị sẽ xếp chồng lên nhau
thay vì xuất phát từ giá trị 0.
• Bài thực hành 05- Stacked bar chart (thư viện matplotlib) Doanh số 6
tháng đầu năm 2022 của Chi nhánh 1 và 2.
• Bài thực hành 06- Vẽ biểu đồ bar và stacked bar chart thư viện
matplotlib) thông qua dataframe.
17 18

2.2.3. Biểu đồ cột xếp chồng (Stacked Column Chart)


2.2.3. Biểu đồ cột xếp chồng (Stacked Column Chart) Bài thực hành 06
Bài thực hành 05 Stacked bar chart (thư viện matplotlib) Vẽ biểu đồ bar và stacked bar chart thông qua dataframe (thư viện matplotlib)
Doanh số 6 tháng đầu năm 2022 của • Cho dataframe như hình bên

Chi nhánh 1 tương ứng 20, 35, 30, 35, 27, 32 tỷ đồng; • A. Vẽ biểu đồ so sánh số lượng nv của các chi nhánh

Doanh số 6 tháng đầu năm 2022 của Gợi ý : Group chi nhánh => Vẽ biểu đồ bar

Chi nhánh 2 tương ứng 25, 32, 34, 20, 25, 35 tỷ đồng. • B. Thêm plt.title thêm tên biểu đồ, plt.ylabel thêm nhãn trục y,
plt.xlabel thêm nhãn trục x
Tiến hành vẽ biểu đồ
• C. Vẽ biểu đồ Số lượng nhân viên theo chi nhánh sử dụng
Doanh số theo chi nhánh 6 tháng đầu năm 2022 sử dụng stacked bar chart, phân biệt hai nhóm nam, nữ
Stacked bar chart
Gợi ý: biểu đồ thể hiện giới tính nam phía dưới => Sử dụng
Gợi ý bottom=df_nam['sonv']
Sử dụng bottom=…. Để chọn bar ở bên dưới D. Vẽ biểu đồ ngang số lượng nhân viên theo chi nhánh
E. Nhận xét biểu đồ nào phù hợp

19
3/8/2023

Dữ liệu 2-06. Dữ liệu Bảng cân đối kế toán của công ty


• Dự án 2-06 minh họa Trực quan hóa dữ liệu kế toán so sánh chỉ tiêu
trên BCTC
• Sử dụng kiến thức Chương 2 và dữ liệu Bảng cân đối kế toán của công ty
1,Các em hãy thực hiện đọc file dữ liệu “balancesheet” , tiến hành xử lý
dữ liệu và làm sạch.
• 2,Thực hiện vẽ biểu đồ line plot cho các chỉ số Total Liabilities, Total
Equity, Total Liabilities & Shareholders Equity
• 3, Thực hiện vẽ biểu đồ stacked bar thể hiện Nợ phải trả (total
liabilities), Tổng tài sản (total asets) qua các năm từ lúc công ty được
niêm yết đến 2021.
• Nhận xét dữ liệu so sánh và biểu đồ vừa vẽ.

Gợi ý thực hiện


• Đọc dữ liệu
• Thực hiện phân tích cấu trúc dữ liệu
• Có thể sử dụng pd.to_datetime để set dữ liệu thời gian nếu cần
• Có thể sử dụng pivotable hoặc transpose nếu cần
• Tiến hành vẽ và phân tích biểu đồ tùy yêu cầu của đề bài.
• Sau khi đã vẽ được biểu đồ so sánh
• Biến động Nợ phải trả, Vốn chủ sở hữu qua các năm 2013-2021
• Tiến hành xem xét cách thể hiện biểu đồ bằng cách tốt nhất.

23 24
3/8/2023

2.2.4 Biểu đồ vùng (Area plot)

Biểu đồ vùng về cơ bản là biểu đồ


đường, nhưng khoảng cách giữa trục
x và đường được lấp đầy bằng một
màu hoặc hình. Nó rất hữu ích để
hiển thị các mối quan hệ một phần
cho toàn bộ, chẳng hạn như hiển thị
đóng góp của bán hàng cá nhân vào
tổng doanh số trong một năm. Nó
giúp bạn phân tích cả thông tin xu
hướng tổng thể và cá nhân.

25 26

2.2.4 Biểu đồ vùng (Area plot)


2.2.4 Biểu đồ vùng (Area plot)
Bài thực hành 07 (Area plot từ dataframe thư viện matplotlib)

27 28
3/8/2023

2.2.4 Biểu đồ vùng (Area plot)


Bài thực hành 07 (Area plot từ dataframe thư viện matplotlib) 2.2.4 Biểu đồ vùng (Area plot)
Thực hành 08 (Vẽ area plot từ dataframe sử dụng thưc viện seaborn)

• Cho doanh thu các chi nhánh


An Giang, Bình Phước, Cần
Thơ theo 3 quý đầu năm
tương ứng như dataframe

Tiến hành vẽ biểu đồ Area plot


thể hiện doanh thu các chi
nhánh trên.
Nêu ý nghĩa biểu đồ?

29 30

2.2.6. Biểu đồ đường (Line chart)


Gợi ý
Vẽ biểu đồ line plot : plot(x,y)
Bài thực hành 02 Biểu đồ đường sẽ biểu diễn các giá trị biến thiên theo
import thư viện pandas; matplotlib; seaborn dòng thời gian
Tạo theme sns.set_theme()
Tạo biến màu sắc Minh họa line style; marker,
color_map = ['red', 'steelblue', 'pink'] Thêm labels, Thêm legend; set_titile
Vẽ biểu đồ set_xticks, Set_xlim; Set_ylim; set_yticks;
plt.stackplot(df.Thang, df.AG, df.BP, df.CT,
Thêm lưới tọa độ grid
labels=['An Giang', 'Bình Phước', 'Cần Thơ'],
colors=color_map)

31 32
3/8/2023

2.2.6. Biểu đồ đường (Line chart)


Thực hành 09
Vẽ biểu đồ kết hợp giữa các line plot thể hiện Lợi nhuận, doanh thu và Lợi nhuận
biên của SGH 2018 -2020 (biết lợi nhuận và doanh thu các năm như bên dưới) Dự án 2-01 minh họa trực quan hóa dữ liệu kế toán so sánh
Nhận xét biểu đồ ở hình bên phải.
giao dich phát sinh

Cho dữ liệu giao dịch phát sinh qua các kênh bán hàng online.
Yêu cầu
1, Tiến hành vẽ biểu đồ doanh thu các kênh bán hàng
Understock.com ; Shoppe.com; iBay.com; Walcart; Bullseye
2, Nhận xét biểu đồ

33

Dự án 2-01 Dự án 2-01
Dữ liệu giao dịch phát sinh qua các kênh bán hàng online. Dữ liệu giao dịch phát sinh qua các kênh bán hàng online.
Gợi ý thực hiện
1.a Tiến hành đọc dữ liệu từ file csv: sử dụng lệnh pd.read_csv()
1.b Xem thử cột ngày tháng năm đã đúng dạng dữ liệu chưa, thực hiện
chuyển đổi nếu chưa pd.to_datetime()
1.c Xem 5 dòng đầu tiên của dữ liệu df.head()

35 36
3/8/2023

Dự án 2-01
Dự án 2-01 Dữ liệu giao dịch phát sinh qua các kênh bán hàng online.
Dữ liệu giao dịch phát sinh qua các kênh bán hàng online.
• 2. a.Tiến hành vẽ plot với dataframe; thể hiện kênh bán hàng "Bullseye" và
ngày giao dịch "Date "
Chọn kích thước của figure
fig = plt.figure(figsize=())
ax = fig.add_subplot()
ax.plot(x,y)
• b.Tiến hành vẽ plot với dataframe; thể hiện kênh bán hàng "Bullseye" kênh
bán hàng “Walcart” và ngày giao dịch "Date " (Tiến hành tương tự 2a)
• c.Tiến hành vẽ plot với dataframe; thể hiện tất cả các kênh bán hàng và
ngày giao dịch "Date “ (Tiến hành tương tự 2a)

37 38

Dự án 2-01
Dự án 2-01
Dữ liệu giao dịch phát sinh qua các kênh bán hàng online.
Gợi ý thực hiện Dữ liệu giao dịch phát sinh qua các kênh bán hàng online.
3.a Tiến hành tạo dataframe doanh thu bằng cách thiết lập index là “Date”, 5. a.Thêm legend cho các kênh bán hàng, Thực hiện lệnh ax.legend
Thực hiện lệnh df.set_index('Date')
5.b Điều chỉnh y-ticks and y-tick labels với định dạng tiền tệ,
3.b Tiến hành thực hiện việc set_title là “Daily Sales Q12020”; set_xlabel 'Date‘; và set_ylabel là
“Revenue (USD)” Thực hiện lệnh ytick_labels = [f'{value:,.2f}' for value in
Thực hiện lệnh ax.set_title(); ax.set_xlabel(); ax.set_ylabel() ytick_values]
4.a Tiến hành set xtick_values sao cho định dạng ngày tháng năm là yyyy-mm-dd cho từng tháng tương 5,c Set đường annotation “Understock sale event”
ứng 4 tháng đầu năm.
Thực hiện lệnh pd.Timestamp Thực hiện lệnh ax.annotate()
4. bTiến hành set xtick_values sao cho định dạng ngày tháng năm là thứ-ngày-tháng cho từng tháng tương 6, Tiến hành lưu biểu đồ dưới dạng picture
ứng 4 tháng đầu năm.
Thực hiện lệnh pd.Timestamp Thực hiện lệnh fig.savefig()

39 40
3/8/2023

Dự án 2-01
Dữ liệu giao dịch phát sinh qua các kênh bán hàng online. Dự án 2-04 minh họa trực quan hóa dữ liệu kế toán
so sánh chỉ tiêu trên BCTC


Sử dụng kiến thức Chương 1, Chương 2 và dữ liệu Báo cáo
lưu chuyển tiền tệ của công ty tiến hành vẽ biểu đồ
• Các em hãy thực hiện đọc file dữ liệu “cashflow” , tiến hành
xử lý dữ liệu và làm sạch.
• Thực hiện vẽ biểu đồ cho thấy tình hình các luồng tiền từ các
hoạt động kinh doanh, tài chính, và đầu tư qua các năm từ lúc
công ty được niêm yết đến 2021
• Nhận xét biểu đồ vừa vẽ.
41

Bài 2-04: Dữ liệu cashflow


Gợi ý thực hiện
• Đọc dữ liệu
• Thực hiện phân tích cấu trúc dữ liệu
• Có thể sử dụng pd.to_datetime để set dữ liệu thời gian nếu cần
• Có thể sử dụng pivotable hoặc transpose nếu cần
• Tiến hành vẽ và phân tích biểu đồ tùy yêu cầu của đề bài.
• Sau khi đã vẽ được biểu đồ cho thấy tình hình các luồng tiền từ các
hoạt động kinh doanh, tài chính, và đầu tư qua các năm từ lúc công ty
được niêm yết đến 2021
• Tiến hành xem xét cách thể hiện biểu đồ bằng cách tốt nhất.
44
3/8/2023

BTVN

• Dự án thực hành 2-02 minh họa trực quan hóa dữ liệu kế


toán so sánh số dư tài khoản

• Cho dữ liệu Sổ nhật ký chung


• Tiến hành làm sạch dữ liệu
• Vẽ biểu đồ trực quan hóa dữ liệu so sánh số dư tài khoản các
khoản mục
• Nhận xét biểu đồ
45 46

2-02 Dữ liệu sổ nhật ký chung


Gợi ý thực hiện
• Đọc dữ liệu
• Thực hiện phân tích cấu trúc dữ liệu
• Có thể sử dụng pd.to_datetime để set dữ liệu thời gian nếu cần
• 2-02 dữ liệu Sổ nhật ký chung
• Có thể sử dụng groupby để nhóm các tài khoản nếu cần
• Có thể sử dụng pivotable hoặc transpose nếu cần
• Có thể tính tổng, đếm số lượng, sử dụng phép tính trừ…. Để check dữ
liệu phát sinh bên Nợ và bên Có, xem xét cân bằng của dữ liệu
• Tiến hành vẽ và phân tích biểu đồ.

48
3/8/2023

Dự án 2-03: Danh sách công ty VN INDEX 30

• Dự án 2-03: Tìm hiểu cấu trúc dữ liệu, và tiến hành xử lý, làm sạch
dữ liệu.
• Với dữ liệu thuộc Báo cáo tài chính tại 1 trong số công ty thuộc
VN INDEX 30 (qua các năm từ lúc công ty được niêm yết đến
2021).
• Các em hãy lựa chọn 1 doanh nghiệp mà mình quan tâm.
• Sau đó dựa vào Các BCTC (KQKD, BCLCTT, BCDKT) tìm hiểu
cấu trúc dữ liệu, và tiến hành xử lý, làm sạch dữ liệu.

Gợi ý thực hiện


• Đọc dữ liệu
• Tìm hiểu cấu trúc dữ liệu
• Có thể xóa các NaN….; kiểm tra các format, kiểu dữ liệu…
• Có thể sử dụng pd.to_datetime để set dữ liệu thời gian nếu cần
• Có thể sử dụng pivotable hoặc transpose nếu cần
• Có thể sử dụng groupby để nhóm các đối tượng nếu cần
• Có thể tính tổng, đếm số lượng, sử dụng các phép tính toán ….

51

You might also like