Skip to main content

Dự kiến hệ thống KRX sẽ go-live chính thức vào tháng 5 tới

· 2 min read

Theo báo Nhân Dân, hệ thống KRX dự kiến sẽ chính thức go-live vào tháng 5 năm nay. Đây là một trong những bước tiến quan trọng nhằm hiện đại hóa thị trường chứng khoán Việt Nam, nâng cao hiệu suất giao dịch và tăng cường khả năng kết nối với thị trường quốc tế.

Những điểm nổi bật của hệ thống KRX:

  • Tăng tốc độ xử lý giao dịch, giúp giảm thời gian chờ và nâng cao trải nghiệm của nhà đầu tư.
  • Cung cấp các sản phẩm mới, bao gồm giao dịch T+0 và các công cụ phái sinh nâng cao.
  • Nâng cao năng lực giám sát thị trường, đảm bảo minh bạch và công bằng hơn trong giao dịch chứng khoán.
  • Tích hợp công nghệ tiên tiến, hỗ trợ các chuẩn mực giao dịch hiện đại.

Hệ thống KRX đã được chuẩn bị trong nhiều năm và hiện đang trong giai đoạn thử nghiệm cuối cùng trước khi triển khai chính thức. Việc hệ thống mới đi vào hoạt động sẽ đánh dấu một cột mốc quan trọng trong quá trình chuyển đổi số của thị trường chứng khoán Việt Nam.

🔗 Xem chi tiết bài viết gốc:
Nhân Dân

📅 Ngày 9 – SQL Server Hằng ngày 365 ngày - Truy vấn dữ liệu nâng cao

· 2 min read

Chào mừng bạn đến với Ngày 9 trong hành trình 365 ngày cùng SQL Server!

Hôm qua bạn đã học GROUP BY để nhóm dữ liệu theo từng phòng ban.
Hôm nay, chúng ta sẽ thực hành những thao tác quan trọng khác như:


🎯 Mục tiêu của bạn hôm nay

  • Lọc dữ liệu theo điều kiện (WHERE, LIKE, BETWEEN)
  • Sắp xếp dữ liệu (ORDER BY)
  • Tính toán dữ liệu (DATEDIFF, AS)
  • Tự tay viết truy vấn SQL để hiểu sâu hơn về dữ liệu

🧠 Kiến thức chính

1. Lọc dữ liệu với WHERE

SELECT * FROM Employees
WHERE Department = 'CNTT';

2. Tìm kiếm với từ khóa (LIKE)

SELECT * FROM Employees
WHERE JobTitle LIKE '%lập trình viên%';

3. Tìm theo khoảng (BETWEEN)

SELECT * FROM Employees
WHERE BirthDate BETWEEN '1990-01-01' AND '1995-12-31';

4. Sắp xếp kết quả (ORDER BY)

SELECT FirstName, LastName, Salary
FROM Employees
ORDER BY Salary DESC;

5. Tính tuổi nhân viên (DATEDIFF)

SELECT FirstName, LastName, 
DATEDIFF(YEAR, BirthDate, GETDATE()) AS Age
FROM Employees;

🧪 Cơ sở dữ liệu mẫu (dùng để thực hành)


✅ Tự đánh giá cuối ngày

  • Biết cách lọc dữ liệu bằng WHERE
  • Biết tìm kiếm bằng LIKE
  • Biết sắp xếp và tính toán với ORDER BYDATEDIFF
  • Tự chạy SQL trong trình duyệt hoặc trên SQL Server

💡 Ngày mai (Ngày 10), bạn sẽ học cách tạo bảng Phòng ban riêng và JOIN với bảng Employees để lấy tên phòng ban thay vì chỉ mã.
Sẵn sàng nhé!

🐍 Ngày 30 - Python hằng ngày 365 ngày - Làm việc với File CSV trong Python

· 2 min read

📘 Python To-Do List App với CSV

📝 Mục tiêu

  • Quản lý danh sách công việc sử dụng Python và lưu trữ bằng file .csv
  • Cho phép người dùng xem, thêm và lưu công việc

📁 File CSV đầu vào (tasks.csv)

Task,Status
Post Fanpage,Done
Post Group,Pending

🔧 Mã nguồn Python đầy đủ

import csv
import os

CSV_FILE = "todo_tasks.csv"

def load_tasks():
tasks = []
if os.path.exists(CSV_FILE):
with open(CSV_FILE, newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
status = row["Status"].strip().lower()
tasks.append({
"Task": row["Task"],
"completed": status in ["done", "completed", "true"]
})
return tasks

def save_tasks(tasks):
with open(CSV_FILE, "w", newline='', encoding='utf-8') as csvfile:
fieldnames = ["Task", "Status"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for task in tasks:
status = "Done" if task["completed"] else "Pending"
writer.writerow({"Task": task["Task"], "Status": status})

def show_tasks(tasks):
print("\n📋 Danh sách công việc:")
for idx, task in enumerate(tasks, 1):
status = "✅" if task["completed"] else "⏳"
print(f"{idx}. {task['Task']} {status}")

def add_task(tasks):
new_task = input("🔹 Nhập tên công việc mới: ")
tasks.append({"Task": new_task, "completed": False})
print("✅ Đã thêm công việc mới.")

def main():
tasks = load_tasks()

while True:
print("\n----- MENU -----")
print("1. Xem danh sách công việc")
print("2. Thêm công việc mới")
print("3. Thoát")
choice = input("Chọn một tùy chọn: ")

if choice == "1":
show_tasks(tasks)
elif choice == "2":
add_task(tasks)
save_tasks(tasks)
elif choice == "3":
print("👋 Tạm biệt!")
break
else:
print("❌ Lựa chọn không hợp lệ. Vui lòng thử lại.")

if __name__ == "__main__":
main()

💡 Mở rộng đề xuất

  • Đánh dấu hoàn thành công việc
  • Xóa công việc
  • Sắp xếp danh sách theo trạng thái hoặc thời gian tạo

🐍 Ngày 29- Python hằng ngày 365 ngày - Lưu và Tải Dữ Liệu với JSON – Quản lý To-Do List với json

· 3 min read

Trong ngày này, chúc ta sẽ nâng cấp ứng dụng To-Do List để lưu công việc vào file data.jsontự động tải lại danh sách khi mở ứng dụng. Đây là bước đầu giúp chương trình có tính lưu trữ lâu dài.


🧠 Mục tiêu:

  • Biết sử dụng json để lưu và tải dữ liệu.
  • Tự động lưu danh sách sau mỗi thay đổi.
  • Tự động tải dữ liệu khi khởi động chương trình.

✍️ Code todo_day29.py

import json
import os

# --- CẤU TRÚC Dữ LIỆU ---
tasks = []

# --- FILE LƯU TRỨ ---
DATA_FILE = "data.json"

# --- TẢI Dữ LIỆU ---
def load_tasks():
global tasks
if os.path.exists(DATA_FILE):
with open(DATA_FILE, "r", encoding="utf-8") as f:
tasks = json.load(f)
else:
tasks = []

# --- LƯU Dữ LIỆU ---
def save_tasks():
with open(DATA_FILE, "w", encoding="utf-8") as f:
json.dump(tasks, f, indent=4, ensure_ascii=False)

# --- CÁC HÀM CHỨC NĂNG ---
def display_menu():
print("\n----- MENU TO-DO LIST -----")
print("1. Thêm công việc mới")
print("2. Xem danh sách công việc")
print("3. Đánh dấu hoàn thành")
print("4. Xóa công việc")
print("5. Thoát")
print("---------------------------")

def addTask(tasks_list):
task_name = input("Nhập tên công việc: ")
tasks_list.append({"name": task_name, "done": False})
save_tasks()
print("✅ Đã thêm công việc.")

def viewTasks(tasks_list):
if not tasks_list:
print("📬 Không có công việc nào.")
return
print("\n📋 DANH SÁCH CÔNG VIỆC:")
for i, task in enumerate(tasks_list, 1):
status = "✅" if task["done"] else "❌"
print(f"{i}. [{status}] {task['name']}")

def markComplete(tasks_list):
viewTasks(tasks_list)
try:
idx = int(input("Nhập số công việc đã hoàn thành: "))
tasks_list[idx - 1]["done"] = True
save_tasks()
print("🎉 Đã đánh dấu hoàn thành.")
except:
print("⚠️ Số không hợp lệ.")

def deleteTask(tasks_list):
viewTasks(tasks_list)
try:
idx_del = int(input("Nhập số công việc muốn xóa: "))
removed = tasks_list.pop(idx_del - 1)
save_tasks()
print(f"🗑️ Đã xóa: {removed['name']}")
except:
print("⚠️ Không hợp lệ.")

# --- CHẠY CHƯƠNG TRÌNH ---
def main():
load_tasks()
while True:
display_menu()
choice = input("Chọn (1-5): ")

if choice == '1':
addTask(tasks)
elif choice == '2':
viewTasks(tasks)
elif choice == '3':
markComplete(tasks)
elif choice == '4':
deleteTask(tasks)
elif choice == '5':
print("👋 Hẹn gặp lại!")
break
else:
print("❌ Lựa chọn không hợp lệ!")

if __name__ == "__main__":
main()

✅ Kết quả mong đợi

  • Bạn có thể thêm, xem, đánh dấu hoàn thành hoặc xóa công việc.
  • Khi thoát và mở lại chương trình, danh sách công việc vẫn được giữ nguyên nhờ file data.json.

💪 Thử thách:

  1. Hiển thị tổng số công việc và số đã hoàn thành.
  2. Thêm ngày tạo cho mỗi công việc.
  3. Tạo file backup_data.json trước khi thóat.

Chúc bạn quản lý công việc ngày một tốt hơn! 🌟

Ngày 27 – Python hằng ngày: Ứng dụng To-Do List bằng Python (hoàn thiện chức năng cơ bản)

· 3 min read

🎯 Mục tiêu

  • Tạo một ứng dụng quản lý công việc đơn giản với giao diện dòng lệnh.
  • Cho phép người dùng thêm, xem, đánh dấu hoàn thành và xóa công việc.

📚 Kiến thức sử dụng

  • List và Dictionary trong Python
  • Hàm và tham số
  • Vòng lặp while, if, elif, else
  • Xử lý input từ người dùng

🧱 Cấu trúc dữ liệu

tasks = [
{
"title": "Học Python",
"completed": False
}
]

🛠 Mã nguồn đầy đủ

tasks = []

def display_menu():
print("\n----- MENU TO-DO LIST -----")
print("1. Thêm công việc mới")
print("2. Xem danh sách công việc")
print("3. Đánh dấu công việc đã hoàn thành")
print("4. Xóa công việc")
print("5. Thoát chương trình")
print("---------------------------")

def addTask(tasks_list):
print("\n>> Thêm công việc mới <<")
title = input("Nhập tên công việc: ").strip()
if title:
task = {"title": title, "completed": False}
tasks_list.append(task)
print("✅ Đã thêm công việc!")
else:
print("❌ Tên công việc không được để trống.")

def viewTasks(tasks_list):
print("\n>> Danh sách công việc <<")
if not tasks_list:
print("Danh sách trống.")
else:
for i, task in enumerate(tasks_list, 1):
status = "✅" if task["completed"] else "❌"
print(f"{i}. {task['title']} [{status}]")

def markComplete(tasks_list):
print("\n>> Đánh dấu hoàn thành <<")
if not tasks_list:
print("Danh sách trống.")
return
viewTasks(tasks_list)
try:
index = int(input("Nhập số thứ tự công việc đã hoàn thành: "))
if 1 <= index <= len(tasks_list):
tasks_list[index - 1]["completed"] = True
print("🎉 Đã đánh dấu hoàn thành.")
else:
print("❌ Số thứ tự không hợp lệ.")
except ValueError:
print("❌ Vui lòng nhập một số.")

def deleteTask(tasks_list):
print("\n>> Xóa công việc <<")
if not tasks_list:
print("Danh sách trống.")
return
viewTasks(tasks_list)
try:
index = int(input("Nhập số thứ tự công việc muốn xóa: "))
if 1 <= index <= len(tasks_list):
deleted = tasks_list.pop(index - 1)
print(f"🗑️ Đã xóa công việc: {deleted['title']}")
else:
print("❌ Số thứ tự không hợp lệ.")
except ValueError:
print("❌ Vui lòng nhập một số.")

def main():
while True:
display_menu()
choice = input("Nhập lựa chọn của bạn (1-5): ").strip()

if choice == '1':
addTask(tasks)
elif choice == '2':
viewTasks(tasks)
elif choice == '3':
markComplete(tasks)
elif choice == '4':
deleteTask(tasks)
elif choice == '5':
print("👋 Cảm ơn bạn đã sử dụng chương trình. Tạm biệt!")
break
else:
print("❌ Lựa chọn không hợp lệ. Nhập số từ 1 đến 5.")

if __name__ == "__main__":
main()

🎥 Xem Video Hướng Dẫn

💡 Mẹo nâng cao (gợi ý cho ngày sau):

Lưu danh sách công việc vào file .json để sử dụng lại sau khi thoát.

Thêm thời gian tạo và deadline cho công việc (sử dụng datetime).

Sắp xếp danh sách theo deadline hoặc trạng thái.

✍️ Thực hành: Chạy chương trình, thêm 2–3 công việc, đánh dấu hoàn thành và xóa thử 1 công việc.

📝 Ngày 6: Sử dụng các toán tử logic (AND, OR, NOT) trong SQL Server

· 4 min read

🎯 Mục tiêu buổi học:

  • Hiểu cách sử dụng các toán tử logic trong điều kiện WHERE.
  • Kết hợp nhiều điều kiện với AND, OR, NOT.
  • Tránh những lỗi phổ biến khi dùng toán tử logic.

1️⃣ Giới thiệu toán tử logic

Khi viết truy vấn SQL, chúng ta thường cần lọc dữ liệu theo nhiều điều kiện. SQL Server cung cấp 3 toán tử logic quan trọng:

Toán tửÝ nghĩaVí dụ
ANDChỉ chọn các dòng thỏa mãn tất cả điều kiệnChọn nhân viên có lương > 5000 chức vụ là "Manager"
ORChọn các dòng thỏa mãn ít nhất một điều kiệnChọn nhân viên có lương > 5000 hoặc có chức vụ là "Manager"
NOTLọc bỏ những dòng thỏa mãn điều kiệnChọn tất cả nhân viên ngoại trừ những người có chức vụ là "Intern"

2️⃣ Ví dụ minh họa

🔹 Sử dụng AND

Giả sử bạn có bảng Employees với các cột EmployeeID, FirstName, Salary, JobTitle.
Bạn muốn tìm những nhân viên có lương trên 5000 và giữ chức vụ Manager:

SELECT * FROM Employees
WHERE Salary > 5000 AND JobTitle = 'Manager';

📌 Giải thích: Câu lệnh trên chỉ trả về các nhân viên có cả hai điều kiện đúng.

🔹 Sử dụng OR

Bây giờ, bạn muốn tìm những nhân viên có lương trên 5000 hoặc giữ chức vụ Manager:

SELECT * FROM Employees
WHERE Salary > 5000 OR JobTitle = 'Manager';

📌 Giải thích: Chỉ cần một trong hai điều kiện đúng là bản ghi sẽ được chọn.

🔹 Sử dụng NOT

Giả sử bạn muốn tìm tất cả nhân viên ngoại trừ những người có chức vụ "Intern":

SELECT * FROM Employees
WHERE NOT JobTitle = 'Intern';

📌 Giải thích: SQL Server sẽ lọc tất cả các bản ghi ngoại trừ những người có JobTitle là "Intern".

🔹 Kết hợp AND, OR, NOT Bạn có thể kết hợp nhiều toán tử logic trong cùng một câu truy vấn. Ví dụ: Tìm những nhân viên có lương trên 5000 hoặc là Manager, nhưng không phải là Intern:

SELECT * FROM Employees
WHERE (Salary > 5000 OR JobTitle = 'Manager') AND NOT JobTitle = 'Intern';

📌 Lưu ý: Dùng dấu ngoặc tròn ()` để kiểm soát thứ tự ưu tiên của điều kiện.

3️⃣ Những lỗi thường gặp khi sử dụng toán tử logic

Quên dấu ngoặc làm thay đổi thứ tự ưu tiên

SELECT * FROM Employees
WHERE Salary > 5000 OR JobTitle = 'Manager' AND NOT JobTitle = 'Intern';

📌 Sai: SQL sẽ ưu tiên thực hiện AND trước OR, có thể gây sai kết quả.

✅ Sửa đúng: Dùng dấu ngoặc để đảm bảo điều kiện chạy đúng.

4️⃣ Bài tập thực hành

Tìm nhân viên có lương trên 7000 và làm ở bộ phận "IT".

Tìm nhân viên có chức vụ là "Sales" hoặc có lương trên 6000.

Tìm tất cả nhân viên ngoại trừ những người có chức vụ "HR".

💡 Gợi ý đáp án:

-- Bài 1
SELECT * FROM Employees
WHERE Salary > 7000 AND Department = 'IT';

-- Bài 2
SELECT * FROM Employees
WHERE JobTitle = 'Sales' OR Salary > 6000;

-- Bài 3
SELECT * FROM Employees
WHERE NOT JobTitle = 'HR';

🚀 Chúc bạn học tốt! Ngày mai, chúng ta sẽ học cách sắp xếp dữ liệu với ORDER BY. Hẹn gặp lại ở Ngày 7 nhé! 🎯

Câu Lệnh SELECT Trong SQL: Hướng Dẫn Chi Tiết

· 3 min read

1. Giới Thiệu Về Câu Lệnh SELECT

Câu lệnh SELECT là một trong những câu lệnh quan trọng nhất trong SQL, giúp truy vấn và lấy dữ liệu từ cơ sở dữ liệu. Nó là nền tảng của mọi thao tác truy vấn, cho phép người dùng chọn các cột cụ thể, lọc dữ liệu theo điều kiện, sắp xếp và nhóm dữ liệu.

2. Cấu Trúc Cơ Bản Của SELECT

SELECT column1, column2, ...
FROM table_name;
  • SELECT: Chỉ định các cột cần lấy dữ liệu.
  • FROM: Xác định bảng chứa dữ liệu.

Ví dụ:

SELECT first_name, last_name FROM employees;

Câu lệnh này lấy dữ liệu từ hai cột first_namelast_name trong bảng employees.

3. Sử Dụng SELECT Với DISTINCT

DISTINCT giúp loại bỏ các giá trị trùng lặp trong kết quả.

SELECT DISTINCT country FROM customers;

Câu lệnh trên trả về danh sách các quốc gia duy nhất trong bảng customers.

4. Lọc Dữ Liệu Với WHERE

Mệnh đề WHERE giúp lọc dữ liệu theo điều kiện nhất định.

SELECT * FROM employees WHERE department = 'IT';

Lệnh này chọn tất cả nhân viên thuộc phòng ban IT.

Các toán tử phổ biến trong WHERE:

  • =: Bằng
  • <> hoặc !=: Khác
  • > hoặc <: Lớn hơn hoặc nhỏ hơn
  • LIKE: Tìm kiếm mẫu dữ liệu
  • IN: Tìm giá trị trong danh sách
  • BETWEEN: Lọc trong khoảng giá trị

Ví dụ:

SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';

5. Sắp Xếp Dữ Liệu Với ORDER BY

Mệnh đề ORDER BY giúp sắp xếp kết quả theo một hoặc nhiều cột.

SELECT first_name, last_name FROM employees ORDER BY last_name ASC;
  • ASC: Sắp xếp tăng dần (mặc định)
  • DESC: Sắp xếp giảm dần

6. Giới Hạn Kết Quả Với LIMIT (MySQL) hoặc TOP (SQL Server)

Khi cần lấy một số lượng dòng giới hạn, ta có thể sử dụng:

  • LIMIT trong MySQL, PostgreSQL:
SELECT * FROM employees LIMIT 10;
  • TOP trong SQL Server:
SELECT TOP 10 * FROM employees;

7. Nhóm Dữ Liệu Với GROUP BY

Mệnh đề GROUP BY giúp nhóm dữ liệu theo một hoặc nhiều cột.

SELECT department, COUNT(*) AS total_employees FROM employees GROUP BY department;

Câu lệnh này đếm số lượng nhân viên trong từng phòng ban.

8. Lọc Dữ Liệu Sau Khi Nhóm Với HAVING

Khác với WHERE, HAVING dùng để lọc dữ liệu sau khi đã nhóm.

SELECT department, COUNT(*) AS total_employees FROM employees
GROUP BY department HAVING COUNT(*) > 10;

Lệnh trên chỉ hiển thị các phòng ban có hơn 10 nhân viên.

9. Kết Hợp Dữ Liệu Từ Nhiều Bảng Với JOIN

Khi cần lấy dữ liệu từ nhiều bảng liên quan, ta sử dụng JOIN.

SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;

Câu lệnh này kết hợp bảng employeesdepartments để lấy tên nhân viên và tên phòng ban của họ.

10. Kết Luận

Câu lệnh SELECT là công cụ mạnh mẽ để truy vấn dữ liệu trong SQL. Nắm vững cách sử dụng SELECT cùng các mệnh đề như WHERE, ORDER BY, GROUP BY, HAVING, và JOIN giúp bạn thao tác dữ liệu hiệu quả hơn. Hãy thực hành nhiều để thành thạo các kỹ thuật này!

Dự kiến hệ thống KRX sẽ go-live chính thức vào tháng 5 tới

· 2 min read

Theo báo Nhân Dân, hệ thống KRX dự kiến sẽ chính thức go-live vào tháng 5 năm nay. Đây là một trong những bước tiến quan trọng nhằm hiện đại hóa thị trường chứng khoán Việt Nam, nâng cao hiệu suất giao dịch và tăng cường khả năng kết nối với thị trường quốc tế.

Hệ thống KRX

Những điểm nổi bật của hệ thống KRX:

  • Tăng tốc độ xử lý giao dịch, giúp giảm thời gian chờ và nâng cao trải nghiệm của nhà đầu tư.
  • Cung cấp các sản phẩm mới, bao gồm giao dịch T+0 và các công cụ phái sinh nâng cao.
  • Nâng cao năng lực giám sát thị trường, đảm bảo minh bạch và công bằng hơn trong giao dịch chứng khoán.
  • Tích hợp công nghệ tiên tiến, hỗ trợ các chuẩn mực giao dịch hiện đại.

Hệ thống KRX đã được chuẩn bị trong nhiều năm và hiện đang trong giai đoạn thử nghiệm cuối cùng trước khi triển khai chính thức. Việc hệ thống mới đi vào hoạt động sẽ đánh dấu một cột mốc quan trọng trong quá trình chuyển đổi số của thị trường chứng khoán Việt Nam.

🔗 Xem chi tiết bài viết gốc:
Nhân Dân

🔥 NÓNG: HOSE bắt đầu kiểm thử hệ thống KRX từ 17/03/2025

· 2 min read

Theo thông tin từ CafeF, Sở Giao dịch Chứng khoán TP.HCM (HOSE) sẽ chính thức bắt đầu kiểm thử hệ thống KRX từ ngày 17/03/2025. Đây là bước quan trọng trong quá trình chuẩn bị triển khai hệ thống giao dịch mới, giúp nâng cao hiệu suất thị trường chứng khoán Việt Nam.

Hệ thống KRX

🚀 Hệ thống KRX có gì đặc biệt?

🔹 Tăng tốc độ xử lý giao dịch, giảm tải hệ thống và nâng cao trải nghiệm nhà đầu tư.
🔹 Hỗ trợ giao dịch T+0, giúp thanh khoản thị trường tốt hơn.
🔹 Cung cấp các công cụ phái sinh mới, mở rộng cơ hội đầu tư.
🔹 Nâng cao năng lực giám sát và minh bạch thị trường.

📆 Lộ trình triển khai

  • 17/03/2025: Bắt đầu kiểm thử hệ thống KRX.
  • Tháng 5/2025: Dự kiến hệ thống go-live chính thức.

Hệ thống KRX là một trong những dự án chuyển đổi số quan trọng nhất của thị trường chứng khoán Việt Nam. Việc triển khai thành công sẽ giúp thị trường tiếp cận chuẩn mực quốc tế và thu hút nhiều nhà đầu tư hơn.

📢 Bạn nghĩ gì về sự thay đổi này? Hãy chia sẻ ý kiến của bạn!

🔗 Xem chi tiết bài viết gốc:

Biểu đồ phân phối chuẩn với khoảng tin cậy 95%

· 2 min read

Giới thiệu

Bài viết này hướng dẫn cách vẽ biểu đồ phân phối chuẩn với khoảng tin cậy 95% bằng thư viện Plotly trong Python.

Mã nguồn

import numpy as np
import plotly.graph_objects as go
from scipy.stats import norm

# Xác định các giá trị cho phân phối chuẩn
mu = 0
sigma = 1
x = np.linspace(mu - 4*sigma, mu + 4*sigma, 1000)
y = norm.pdf(x, mu, sigma)

# Tính z-score cho khoảng tin cậy 95%
confidence_level = 0.95
alpha = 1 - confidence_level
z = norm.ppf(1 - alpha / 2)

# Vùng tô màu cho khoảng tin cậy 95%
x_fill = np.linspace(-z, z, 1000)
y_fill = norm.pdf(x_fill, mu, sigma)

# Tạo biểu đồ bằng Plotly
fig = go.Figure()

# Đường phân phối chuẩn
fig.add_trace(go.Scatter(x=x, y=y, mode='lines', name='Phân phối chuẩn', line=dict(color='blue')))

# Đường z-score
fig.add_trace(go.Scatter(x=[z, z], y=[0, norm.pdf(z, mu, sigma)], mode='lines', name=f'z = {z:.2f}', line=dict(color='red', dash='dash')))
fig.add_trace(go.Scatter(x=[-z, -z], y=[0, norm.pdf(-z, mu, sigma)], mode='lines', name=f'z = -{z:.2f}', line=dict(color='red', dash='dash')))

# Vùng tô màu khoảng tin cậy 95%
fig.add_trace(go.Scatter(x=np.concatenate(([x_fill[0]], x_fill, [x_fill[-1]])),
y=np.concatenate(([0], y_fill, [0])),
fill='tozeroy', fillcolor='rgba(255, 0, 0, 0.3)',
line=dict(color='rgba(255, 0, 0, 0)'),
name='Khoảng tin cậy 95%'))

# Định dạng biểu đồ
fig.update_layout(title='Biểu đồ phân phối chuẩn với khoảng tin cậy 95%',
xaxis_title='Z-score',
yaxis_title='Mật độ xác suất',
template='plotly_white',
xaxis_rangeslider_visible=False,
width=1200, # Đặt chiều rộng lớn hơn
height=600 # Đặt chiều cao hợp lý
)

# Hiển thị biểu đồ
fig.show()

fig.write_html("bieu_do_phan_phoi_chuan.html", full_html=True, include_plotlyjs="cdn")

Kết luận

Mã nguồn trên giúp vẽ biểu đồ phân phối chuẩn với khoảng tin cậy 95% bằng Plotly. Bạn có thể xuất biểu đồ dưới dạng file HTML để dễ dàng chia sẻ hoặc nhúng vào trang web.