Pandas là gì?
Pandas là một thư viện mã nguồn mở được phát triển bởi Wes McKinney vào năm 2008. Pandas được sử dụng chủ yếu để thao tác, phân tích và dọn dẹp dữ liệu. Pandas cung cấp rất nhiều cấu trúc dữ liệu cũng như các phép tính hỗ trợ thao tác dữ liệu số và dữ liệu thời gian(time series). Pandas nhanh, mạnh và hiệu quả.
Cái tên Pandas có nguồn gốc là Panel Data. Pandas hữu ích cho 5 thao tác chính với phân tích dữ liệu - Tải dữ liệu, quản lý, chuẩn bị, mô hình và phân tích dữ liệu.
Câu hỏi phỏng vấn Pandas phổ biến
Dataframe trong Pandas là gì?
Một dataframe là một cấu trúc bảng có thể thay đổi dùng cho biểu diễn dữ liệu được gắn nhãn với các trục - hàng và cột.
Cú pháp tạo dataframe
import pandas as pd
dataframe = pd.DataFrame(data, index, columns, dtype)Trong đó:
- data - biểu diễn các định dạng khác nhau như map, list, ndarray, series,...
- index - tham số tuỳ chọn dùng để biểu diễn một chỉ mục đến nhãn hàng.
- columns - tham số tuỳ chọn cho nhãn cột.
- dtype - kiểu dữ liệu cho từng cột. Cũng là tuỳ chọn.
Kết hợp các dataframe khác nhau như thế nào?
Dataframe có thể kết hợp bằng các cách như sau:
- Phương thức append(): Phương thức này được sử dụng để xếp chồng các dataframe theo chiều ngang.
df1.append(df2)- Phương thức concat(): Phương thức này được sử dụng để xếp chồng các khung dữ liệu theo chiều dọc. Nó hữu ích khi các dataframe có cùng cột và trường giống nhau.
pd.concat([df1, df2])- Phương thức join(): Phương thức này dùng cho trích xuất dữ liệu từ dataframe khác có nhiều hơn một cột chung.
df1.join(df2)Có thể tạo một serie từ một đối tượng dictionary trong Pandas không?
Mảng một chiều có thể lưu trữ các kiểu dữ liệu khác nhau được gọi là một serie. Ta có thể tạo serie từ một đối tượng dictionary trong Pandas như sau:
import pandas as pd
dict_info = {'key1' : 2.0, 'key2' : 3.1, 'key3' : 2.2}
series_obj = pd.Series(dict_info)
print (series_obj)Kết quả:
x 2.0
y 3.1
z 2.2
dtype: float64Nếu một chỉ mục không được chỉ định trong phương thức input, thì các khoá của dictionary được sắp xếp theo thứ tự tăng dần để tạo chỉ mục. Trong trường hợp chỉ mục được truyền vào, thì các giá trị của nhãn chỉ mục sẽ được trích xuất từ dictionary.
Cách xác định và xử lý giá trị bị mất trong dataframe?
Ta có thể xác định nếu một dataframe mất dữ liệu bằng cách dùng phương thức isnull() và isna().
missing_data_count=df.isnull().sum()Ta có thể xử lý dữ liệu bị mất bằng cách thay giá trị trong cột với 0:
df['column_name'].fillna(0)Hoặc thay thế với giá trị trung bình của cột
df['column_name'] = df['column_name'].fillna((df['column_name'].mean()))Reindexing trong Pandas là gì?
Reindexing là quá trình điều chỉnh dataframe thành một chỉ mục mới với logic điền tuỳ chọn. Nếu các giá trị bị thiếu trong chỉ mục trước, thì NaN/NA được đặt vào vị trí. Một đối tượng mới được trả về trừ khi chỉ mục mới được tạo ra tương đương với chỉ mục hiện tại. Giá trị sao chép được đặt thành False. Điều này cũng được sử dụng để thay đổi chỉ mục của các hàng và cột trong dataframe.
Cách thêm cột vào dataframe?
import pandas as pd
data_info = {'first' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'second' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(data_info)
#To add new column third
df['third']=pd.Series([10,20,30],index=['a','b','c'])
print (df)
#To add new column fourth
df['fourth']=df['first']+info['third']
print (df)Các xoá chỉ mục, hàng và cột khỏi dataframe?
Để xoá mục
- Thực thi
del df.index.namecho xoá chỉ mục bằng tên. - Hoặc gán
df.index.namevới None.
Column 1
Names
John 1
Jack 2
Judy 3
Jim 4Để xoá chỉ mục tên "Names":
df.index.name = None
# Or run the below:
# del df.index.name
print(df)Kết quả
Column 1
John 1
Jack 2
Judy 3
Jim 4Để xoá hàng/cột
- Phương thức
drop()được dùng để xoá hàng/cột khỏi dataframe. - Đối số trục được truyền cho phương thức drop trong đó nếu giá trị là 0, nó chỉ ra là xóa một hàng còn nếu là 1, nó phải xoá cột.
- Ngoài ra, chúng ta có thể xóa các hàng/cột tại chỗ bằng cách đặt giá trị
inplacethànhTrue. Điều này đảm bảo rằng công việc được hoàn thành mà không cần phải phân công lại. - Có thể xóa các giá trị trùng lặp từ hàng/cột bằng cách sử dụng phương thức
drop_duplicates().
Có thể lấy mục từ serie A mà không ảnh hưởng đến serie B?
Điều này có thể thực hiện bằng cách sử dụng phương thức ~ (ký hiệu phủ định) và isin() như dưới đây.
import pandas as pd
df1 = pd.Series([2, 4, 8, 10, 12])
df2 = pd.Series([8, 12, 10, 15, 16])
df1=df1[~df1.isin(df2)]
print(df1)Kết quả:
Output:
0 2
1 4
dtype: int64Có thể lấy phần không trùng của serie A và B hay không?
Chúng ta có thể thực hiện được điều này bằng cách thực hiện kết hợp cả hai serie, rồi lấy giao điểm của cả hai serie. Sau đó, chúng ta tiếp cận để lấy các mục của phần kết hợp mà không có trong danh sách giao điểm.
Code minh hoạ như sau:
import pandas as pd
import numpy as np
df1 = pd.Series([2, 4, 5, 8, 10])
df2 = pd.Series([8, 10, 13, 15, 17])
p_union = pd.Series(np.union1d(df1, df2)) # union of series
p_intersect = pd.Series(np.intersect1d(df1, df2)) # intersection of series
unique_elements = p_union[~p_union.isin(p_intersect)]
print(unique_elements)Kết quả:
0 2
1 4
2 5
5 13
6 15
7 17
dtype: int64Trong khi import dữ liệu từ các nguồn khác nhau, có thể xác định ngày tháng hay không?
Có, nhưng với một số trợ giúp. Chúng ta cần thêm đối số parse_dates trong khi đang đọc dữ liệu từ các nguồn. Hãy xem xét một ví dụ trong đó ta đọc dữ liệu từ file CSV, ta có thể gặp các định dạng ngày giờ khác nhau mà thư viện Pandas không thể đọc được. Trong trường hợp này, Pandas cung cấp sự linh hoạt để xây dựng trình phân tích cú pháp ngày tùy chỉnh với sự trợ giúp của các hàm lambda như bên dưới:
import pandas as pd
from datetime import datetime
dateparser = lambda date_val: datetime.strptime(date_val, '%Y-%m-%d %H:%M:%S')
df = pd.read_csv("some_file.csv", parse_dates=['datetime_column'], date_parser=dateparser)Mẹo ôn phỏng vấn Pandas
- Bắt đầu với các câu hỏi định nghĩa và so sánh quan trọng trong Pandas.
- Tự nói lại câu trả lời trong 1 đến 2 phút để luyện cách trình bày rõ ràng.
- Luôn chuẩn bị thêm ví dụ thực tế hoặc tình huống bạn từng gặp khi làm dự án.
- Đánh dấu các câu chưa chắc để ôn lại trước buổi phỏng vấn cuối cùng.
Câu hỏi thường gặp về phỏng vấn Pandas
Nên học Pandas theo thứ tự nào trước khi đi phỏng vấn?
Bạn nên học từ khái niệm nền tảng, sau đó chuyển sang câu hỏi so sánh, trường hợp sử dụng và cuối cùng là các tình huống thực tế liên quan đến Pandas. Cách học này giúp bạn vừa trả lời được câu hỏi cơ bản vừa giải thích được tư duy khi làm việc thực tế.
Làm sao trả lời tốt câu hỏi phỏng vấn Pandas khi chưa có nhiều kinh nghiệm?
Hãy trả lời ngắn gọn theo cấu trúc định nghĩa, mục đích sử dụng, ưu nhược điểm và ví dụ đơn giản. Với Pandas, nhà tuyển dụng thường đánh giá khả năng hiểu bản chất và cách diễn đạt rõ ràng chứ không chỉ kiểm tra việc nhớ lý thuyết.
Tóm tắt
Bộ câu hỏi phỏng vấn Pandas này giúp bạn ôn nhanh các khái niệm quan trọng, câu hỏi phổ biến và cách trả lời dễ hiểu bằng tiếng Việt. Hãy ưu tiên những phần bạn còn yếu, tự diễn giải lại bằng lời của mình và luyện thêm ví dụ thực tế để tăng sự tự tin khi phỏng vấn.