← Quay lại

📚 Đáp án tổng hợp cho 8 đề thi DS_CLC (1-8)

Môn học: Khoa học dữ liệu trong Kinh tế và Kinh doanh

8 Đề thi
320 Tổng câu hỏi
219 Câu hỏi duy nhất
84% Tỷ lệ khớp

📋 Mục lục

🐍

1. Python Basics (25 câu)

Câu hỏi về List Operations

names = ['A','B','C']; names[0] = 'Z'; print(names)
Đáp án: D - ['Z','B','C']
Giải thích: List là mutable, names[0] = 'Z' thay đổi phần tử đầu tiên từ 'A' thành 'Z'.
my_list = [1,2,3]; my_list[0]
Đáp án: B - 1
Giải thích: Indexing bắt đầu từ 0, my_list[0] trả về phần tử đầu tiên.
my_list = [1,2,3]; my_list[1:3]
Đáp án: B - [2,3]
Giải thích: Slicing [1:3] lấy từ index 1 đến 2 (không bao gồm 3).

Câu hỏi về String Operations

'a b c'.split()
Đáp án: B - ['a','b','c']
Giải thích: .split() chia chuỗi theo khoảng trắng và trả về list.
'abc'.replace('a','b')
Đáp án: D - 'bbc'
Giải thích: .replace('a','b') thay thế tất cả 'a' bằng 'b'.
' hello '.strip()
Đáp án: A - 'hello'
Giải thích: .strip() loại bỏ khoảng trắng đầu và cuối chuỗi.
'-'.join(['a','b'])
Đáp án: A - 'a-b'
Giải thích: .join() nối các phần tử của list bằng dấu '-'.

Câu hỏi về Tuple và Dictionary

x = (1,2,3); x[0]
Đáp án: A - 1
Giải thích: Tuple là immutable sequence, indexing bắt đầu từ 0.
house = {'price':10}; house['price']=15; house['price']
Đáp án: C - 15
Giải thích: Dictionary có thể thay đổi giá trị, house['price']=15 gán giá trị mới.
{1,2,3} == {3,2,1}
Đáp án: B - TRUE
Giải thích: Set không quan tâm thứ tự, {1,2,3} và {3,2,1} là bằng nhau.

Câu hỏi về Functions và Lambda

add_one = lambda x:x+1; add_one(5)
Đáp án: B - 6
Giải thích: Lambda function lambda x:x+1 với x=5 trả về 5+1=6.
Cú pháp nào dùng để khai báo một hàm trong Python?
Đáp án: B - def myFunc():
Giải thích: Cú pháp chuẩn để khai báo hàm trong Python là def.

Câu hỏi về Operators

Phép toán 7 // 2 trong Python cho kết quả là:
Đáp án: B - 3
Giải thích: // là toán tử chia lấy phần nguyên, 7 // 2 = 3.
Phép toán 7 % 2 trong Python cho kết quả là:
Đáp án: C - 1
Giải thích: % là toán tử modulo (chia lấy dư), 7 % 2 = 1.
print(5 / 2)
Đáp án: A - 2.5
Giải thích: / là phép chia thực, 5 / 2 = 2.5.
print(5 // 2)
Đáp án: C - 2
Giải thích: // là phép chia lấy phần nguyên, 5 // 2 = 2.
print(2 ** 3)
Đáp án: B - 8
Giải thích: ** là toán tử lũy thừa, 2 ** 3 = 8.

Câu hỏi về List Comprehension

[i for i in range(5) if i%2==0]
Đáp án: A - [0,2,4]
Giải thích: List comprehension tạo list các số chẵn từ 0 đến 4.

Câu hỏi về Indentation

Dấu thụt lề (indentation) trong Python có vai trò gì?
Đáp án: C - Xác định cấu trúc khối lệnh
Giải thích: Python sử dụng indentation để định nghĩa khối lệnh thay vì dùng {}.

Câu hỏi về Python Creator

Ai là người phát triển ngôn ngữ Python?
Đáp án: B - Guido van Rossum
Giải thích: Guido van Rossum là người tạo ra Python vào năm 1991.

Câu hỏi về Python Type

Python là ngôn ngữ lập trình thuộc loại nào?
Đáp án: B - Thông dịch, kiểu động
Giải thích: Python là ngôn ngữ thông dịch (interpreted) và có kiểu động (dynamic typing).
🔢

2. NumPy Operations (35 câu)

Câu hỏi về Array Creation

Hàm nào trong NumPy dùng để tạo mảng chứa toàn số 0?
Đáp án: D - np.zeros()
Giải thích: np.zeros() tạo mảng với tất cả phần tử là 0.
np.zeros((2, 3))
Đáp án: A - 2 dòng, 3 cột
Giải thích: np.zeros((2, 3)) tạo ma trận 2x3.
NumPy là viết tắt của:
Đáp án: C - Numerical Python
Giải thích: NumPy = Numerical Python.
Đối tượng chính của NumPy để lưu trữ dữ liệu là:
Đáp án: A - ndarray
Giải thích: ndarray (N-dimensional array) là đối tượng chính của NumPy.

Câu hỏi về Array Operations

np.arange(5) * 2
Đáp án: A - [0 2 4 6 8]
Giải thích: np.arange(5) tạo [0,1,2,3,4], nhân với 2 được [0,2,4,6,8].
arr = np.arange(10); arr[2:5]
Đáp án: D - [2, 3, 4]
Giải thích: np.arange(10) tạo [0,1,2,3,4,5,6,7,8,9], arr[2:5] lấy từ index 2 đến 4.
np.arange(6).reshape(2,3).shape
Đáp án: D - (2,3)
Giải thích: np.arange(6) tạo [0,1,2,3,4,5], .reshape(2,3) chuyển thành ma trận 2x3.
np.arange(8).reshape(2,4).T.shape
Đáp án: B - (4,2)
Giải thích: Ma trận 2x4 sau khi transpose (.T) thành ma trận 4x2.

Câu hỏi về Array Properties

arr = np.array([1, 2, 3]); arr.dtype
Đáp án: B - int32 hoặc int64
Giải thích: .dtype trả về kiểu dữ liệu của mảng, thường là int32 hoặc int64.
np.array([1.5, -0.1, 3]).dtype
Đáp án: A - float64
Giải thích: Mảng có số thập phân sẽ có kiểu float64.
np.array([3.7, -1.2]).astype(int)
Đáp án: A - [3, -1]
Giải thích: .astype(int) chuyển đổi sang integer, làm tròn xuống.

Câu hỏi về Mathematical Operations

np.sqrt(np.array([1,4,9]))
Đáp án: C - [1.0,2.0,3.0]
Giải thích: np.sqrt() tính căn bậc hai của từng phần tử.
np.where([True,False,True],[1,2,3],[9,9,9])
Đáp án: A - [1,9,3]
Giải thích: np.where() chọn từ mảng đầu tiên nếu True, từ mảng thứ hai nếu False.
arr=np.array([3,-1,2]); (arr>0).sum()
Đáp án: B - 2
Giải thích: arr>0 tạo [True,False,True], .sum() đếm số True (2).
np.array([3,-1,2]).mean()
Đáp án: B - 1.333...
Giải thích: Tính trung bình: (3+(-1)+2)/3 = 4/3 ≈ 1.333.
np.array([1,2,3]).cumsum()
Đáp án: B - [1,3,6]
Giải thích: .cumsum() tính tổng tích lũy: [1, 1+2, 1+2+3] = [1,3,6].

Câu hỏi về Array Functions

np.unique([3,3,2,1,2])
Đáp án: B - [1,2,3]
Giải thích: np.unique() trả về các giá trị duy nhất đã sắp xếp.
np.isin([1,2,3],[2,4])
Đáp án: A - [False,True,False]
Giải thích: np.isin() kiểm tra từng phần tử của mảng đầu có trong mảng thứ hai không.
np.dot(np.array([1,2]), np.array([3,4]))
Đáp án: B - 11
Giải thích: Tích vô hướng: 1*3 + 2*4 = 3 + 8 = 11.

Câu hỏi về NumPy Import

Quy ước import NumPy là:
Đáp án: C - import numpy as np
Giải thích: Quy ước chuẩn để import NumPy với alias np.
Tính năng chính của NumPy so với list Python thông thường là:
Đáp án: D - Tốc độ tính toán nhanh và chiếm ít bộ nhớ hơn
Giải thích: NumPy được tối ưu hóa cho tính toán số học nhanh và hiệu quả bộ nhớ.
🐼

3. Pandas Operations (75 câu)

Câu hỏi về DataFrame Basics

Hai cấu trúc dữ liệu cốt lõi của pandas là:
Đáp án: C - Series và DataFrame
Giải thích: Series (1D) và DataFrame (2D) là hai cấu trúc cơ bản nhất của pandas.
Series trong pandas là:
Đáp án: C - Mảng một chiều có nhãn
Giải thích: Series là cấu trúc dữ liệu 1 chiều với index (nhãn) cho mỗi phần tử.
Pandas được xây dựng dựa trên thư viện nào?
Đáp án: A - NumPy
Giải thích: Pandas được xây dựng trên NumPy, sử dụng NumPy arrays làm backend.

Câu hỏi về DataFrame Operations

df=pd.DataFrame({'A':[1,2,3]}); df['A'].mean()
Đáp án: A - 2
Giải thích: Tính trung bình của cột A: (1+2+3)/3 = 2.
df=pd.DataFrame({'A':[1,2,3]}); df['A'].sum()
Đáp án: A - 6
Giải thích: Tổng của cột A: 1+2+3 = 6.
df=pd.DataFrame({'A':[1,2,3]}); df['A'].cumsum().tolist()
Đáp án: A - [1,3,6]
Giải thích: Tổng tích lũy: [1, 1+2, 1+2+3] = [1,3,6].
df=pd.DataFrame({'A':[1,2,3]}); df['A'].apply(lambda x:x**2).tolist()
Đáp án: A - [1,4,9]
Giải thích: Áp dụng hàm lambda x**2 cho từng phần tử: [1², 2², 3²] = [1,4,9].
df=pd.DataFrame({'A':[1,2,3]}); df.sort_values('A',ascending=False)['A'].tolist()
Đáp án: B - [3,2,1]
Giải thích: Sắp xếp giảm dần: [3,2,1].
df=pd.DataFrame({'A':[1,1,2]}); df['A'].unique().tolist()
Đáp án: C - [1,2]
Giải thích: .unique() trả về các giá trị duy nhất: [1,2].
df=pd.DataFrame({'A':[1,1,2]}); df['A'].nunique()
Đáp án: A - 2
Giải thích: .nunique() đếm số giá trị duy nhất: 2.
df=pd.DataFrame({'A':[1,2,3]}); df.query('A>1').shape[0]
Đáp án: A - 2
Giải thích: .query('A>1') lọc các dòng có A > 1, có 2 dòng.
df=pd.DataFrame({'A':[1,2,3],'B':[3,4,5]}); df[['A','B']].sum().tolist()
Đáp án: A - [6,12]
Giải thích: Tổng từng cột: A = 1+2+3=6, B = 3+4+5=12.

Câu hỏi về DataFrame Properties

df=pd.DataFrame({'A':[1,2,3]}); df.shape
Đáp án: A - (3,1)
Giải thích: DataFrame có 3 dòng, 1 cột.
df=pd.DataFrame({'A':[1,2,3]}); df.info().__class__.__name__
Đáp án: C - NoneType
Giải thích: df.info() không trả về giá trị (return None).
df=pd.DataFrame({'A':[1,2,3]}); 'A' in df.columns
Đáp án: A - TRUE
Giải thích: Kiểm tra cột 'A' có trong DataFrame không.

Câu hỏi về DataFrame Manipulation

df=pd.DataFrame({'A':[1,2,3]}); df.rename(columns={'A':'X'}).columns[0]
Đáp án: C - 'X'
Giải thích: .rename(columns={'A':'X'}) đổi tên cột 'A' thành 'X'.
df=pd.DataFrame({'A':[1,2,3]}); df.set_index('A').index.name
Đáp án: C - 'A'
Giải thích: df.set_index('A') đặt cột 'A' làm index, .index.name trả về 'A'.
df=pd.DataFrame({'A':[1,2,3]}); df.reset_index().index[0]
Đáp án: A - 0
Giải thích: df.reset_index() tạo index mới bắt đầu từ 0.

Câu hỏi về DataFrame Selection

Để chọn cột 'Name' từ DataFrame df, ta dùng:
Đáp án: A - df.Name hoặc df['Name']
Giải thích: Có thể dùng cả hai cách để chọn cột.
df.loc[0]
Đáp án: B - Chọn dòng có index 0
Giải thích: df.loc[0] chọn dòng có index 0.
df.head() mặc định hiển thị bao nhiêu dòng đầu tiên?
Đáp án: B - 5 dòng
Giải thích: df.head() mặc định hiển thị 5 dòng đầu.

Câu hỏi về DataFrame Statistics

s = pd.Series([1, 2, 3, 4]); s.mean()
Đáp án: B - 2.5
Giải thích: Trung bình: (1+2+3+4)/4 = 2.5.
df.info() hiển thị thông tin gì về DataFrame?
Đáp án: C - Kiểu dữ liệu và thông tin bộ nhớ
Giải thích: df.info() hiển thị kiểu dữ liệu, số dòng/cột, và thông tin bộ nhớ.

Câu hỏi về DataFrame Export

df=pd.DataFrame({'A':[1,2,3]}); type(df.to_dict())
Đáp án: A - dict
Giải thích: df.to_dict() chuyển DataFrame thành dictionary.
df = pd.DataFrame({'A':[1,2], 'B':[3,4]}); df.to_csv('out.csv', index=False) sẽ tạo file CSV với?
Đáp án: A - Không có cột index
Giải thích: index=False nghĩa là không xuất index.
📁

4. File I/O Operations (20 câu)

Câu hỏi về CSV Operations

pd.read_csv('sample_data.csv').shape
Đáp án: C - (số dòng, số cột)
Giải thích: .shape trả về tuple (rows, columns).
pd.read_csv('sample_data.csv').head(3).shape[0]
Đáp án: B - 3
Giải thích: .head(3) lấy 3 dòng đầu, .shape[0] trả về số dòng.
Hàm pd.read_csv() trong pandas dùng để:
Đáp án: B - Đọc dữ liệu từ file CSV
Giải thích: pd.read_csv() dùng để đọc dữ liệu từ file CSV.
Tham số header=None trong pd.read_csv() có ý nghĩa gì?
Đáp án: B - Dòng đầu không phải là tên cột
Giải thích: header=None nghĩa là không có header, dòng đầu là dữ liệu.
Tham số index_col trong pd.read_csv() dùng để:
Đáp án: B - Chỉ định cột nào làm index
Giải thích: index_col chỉ định cột nào sẽ được dùng làm index.
Tham số skiprows trong pd.read_csv() có tác dụng gì?
Đáp án: B - Bỏ qua các dòng được chỉ định
Giải thích: skiprows bỏ qua các dòng cụ thể khi đọc file.
Để đọc dữ liệu từ một URL sử dụng pandas, ta làm thế nào?
Đáp án: B - Dùng pd.read_csv(url) trực tiếp
Giải thích: Pandas có thể đọc trực tiếp từ URL.
Đọc file 'sample_data.csv' với header=None. Tên của cột đầu tiên là gì? (df.columns[0])
Đáp án: D - 'Unnamed: 0'
Giải thích: Khi header=None, pandas tự động đặt tên cột là 'Unnamed: 0', 'Unnamed: 1', ...
Đọc file với index_col=0, df.index.name là?
Đáp án: A - Tên cột đầu tiên
Giải thích: Khi index_col=0, cột đầu tiên trở thành index và tên của nó là df.index.name.

Câu hỏi về Excel Operations

Hàm pd.read_excel() dùng để làm gì?
Đáp án: A - Đọc dữ liệu từ file Excel
Giải thích: pd.read_excel() dùng để đọc dữ liệu từ file Excel.

Câu hỏi về JSON Operations

JSON là viết tắt của:
Đáp án: B - JavaScript Object Notation
Giải thích: JSON = JavaScript Object Notation.
Hàm pd.read_json() dùng để:
Đáp án: B - Đọc dữ liệu từ file JSON
Giải thích: pd.read_json() dùng để đọc dữ liệu từ file JSON.

Câu hỏi về HTML Operations

Hàm pd.read_html() có tác dụng gì?
Đáp án: B - Đọc bảng từ trang web HTML
Giải thích: pd.read_html() dùng để đọc các bảng từ trang web HTML.

Câu hỏi về Database Operations

Trong Python, để kết nối với cơ sở dữ liệu SQLite, ta dùng thư viện:
Đáp án: B - sqlite3
Giải thích: Thư viện sqlite3 được tích hợp sẵn trong Python để làm việc với SQLite.
🔧

5. Data Processing (15 câu)

Câu hỏi về Missing Data

Để xử lý dữ liệu thiếu trong pandas, ta có thể dùng:
Đáp án: D - dropna() và fillna()
Giải thích: dropna() xóa dữ liệu thiếu, fillna() thay thế dữ liệu thiếu.
df=pd.DataFrame({'A':[1,np.nan,3]}); df['A'].isnull().sum()
Đáp án: A - 1
Giải thích: .isnull() tìm giá trị thiếu, .sum() đếm số lượng.
pd.DataFrame({'A':[1,np.nan,3]}) dùng df.dropna().shape[0]
Đáp án: C - 1
Giải thích: dropna() xóa dòng có NaN, chỉ còn lại 1 dòng.

Câu hỏi về String Processing

pd.DataFrame({'col':['abc','AbC','xyz']}).col.str.contains('abc',case=False).sum()
Đáp án: A - 2
Giải thích: str.contains('abc',case=False) tìm chuỗi chứa 'abc' (không phân biệt hoa thường), có 2 kết quả.

Câu hỏi về Value Counts

pd.Series([1,2,3,3,2]).value_counts().sort_index().index[0]
Đáp án: A - 1
Giải thích: .value_counts() đếm tần suất, .sort_index() sắp xếp theo index, .index[0] lấy giá trị đầu tiên.
📈

6. Data Science Concepts (15 câu)

Câu hỏi về Data Science Foundation

Khoa học dữ liệu là sự kết hợp của ba trụ cột chính nào?
Đáp án: B - Toán học & Thống kê, Khoa học máy tính, Kiến thức chuyên ngành
Giải thích: Ba trụ cột của Data Science: Toán học & Thống kê, Khoa học máy tính, và Kiến thức chuyên ngành.
Bước đầu tiên trong chu trình khai thác dữ liệu là gì?
Đáp án: C - Xác định bài toán
Giải thích: Quy trình khoa học dữ liệu bắt đầu với việc xác định bài toán cần giải quyết.
Trong quy trình khoa học dữ liệu, việc 'làm sạch dữ liệu' thuộc bước nào?
Đáp án: B - Xử lý dữ liệu
Giải thích: Làm sạch dữ liệu thuộc bước xử lý dữ liệu trong quy trình khoa học dữ liệu.

Câu hỏi về Data Science Roles

Data Engineer chủ yếu đảm nhận công việc nào?
Đáp án: B - Thiết kế hạ tầng và thu thập dữ liệu
Giải thích: Data Engineer chuyên về thiết kế hệ thống, pipeline dữ liệu và thu thập dữ liệu.

Câu hỏi về Visualization

Matplotlib được sử dụng chủ yếu để:
Đáp án: C - Trực quan hóa dữ liệu
Giải thích: Matplotlib là thư viện chính để tạo biểu đồ và trực quan hóa dữ liệu.
Thư viện nào được xây dựng dựa trên Matplotlib và cung cấp giao diện đẹp hơn?
Đáp án: B - Seaborn
Giải thích: Seaborn được xây dựng trên Matplotlib và cung cấp giao diện đẹp hơn.

Câu hỏi về API

API là viết tắt của:
Đáp án: D - Application Programming Interface
Giải thích: API = Application Programming Interface, giao diện lập trình ứng dụng.

Câu hỏi về Encoding

Encoding UTF-8 thường được sử dụng để:
Đáp án: D - Mã hóa ký tự Unicode
Giải thích: UTF-8 là bộ mã hóa Unicode, hỗ trợ tất cả ký tự Unicode.