Nhà khoa học dữ liệu phỏng vấn trăn

Chuẩn bị cho cuộc phỏng vấn về khoa học dữ liệu bằng cách nghiên cứu danh sách đầy đủ các câu hỏi Python kèm theo câu trả lời. Includes coding as well as theoretical questions

Data science is a well-paid and meaningful career. To maximize their chances of success, data scientists maintain a rich set of skills like Python, SQL, R, and other tools for working on data science projects

One way to improve your odds of landing a data scientist job is to have an in-demand data science technical skill like Python. It is one of the main programming languages used for data science, because it is simple, readable, and supports external libraries

Data scientists use Python for statistics and mathematical calculations. It is widely used for Machine Learning, specifically for writing Natural Language Processing and sentiment analysis algorithms. It’s also possible to write Python algorithms to analyze medical images and help detect and prevent fraud

Python is not the only language used for data science. R là một ngôn ngữ lập trình phổ biến khác để làm việc với dữ liệu. To learn about differences between Python and R, read our comparison article Python vs R for Data Science

Python is considered a simple programming language, but it has a lot of features to remember. Supporting libraries like pandas can further enhance its capabilities. We compiled a list of python data science interview questions to help you remember and practice everything you need to know before going into the interview

Basic Python Data Science Interview Questions

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Let’s start with the simplest python data science interview questions. Người phỏng vấn sử dụng những câu hỏi này để đánh giá kiến ​​thức của ứng viên về Python và khả năng viết mã của họ

Câu hỏi phỏng vấn khoa học dữ liệu Python không mã hóa

Writing Python code is important, but knowing its underlying principles is just as important. Usually interview questions are basic. For example, what are variables in Python and how to use them for data analysis

Let’s look at some questions asked of candidates during actual interviews

Question #1. Data structures in Python

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

This python data science interview question was asked during an interview with Walmart. The easy answer is to list data structures in Python. danh sách, bộ, tuple, từ điển

It’s great if you can describe the characteristics and features of each data structure and explain differences between them. For example, a list can contain many different types of values and can be mutated, whereas tuples are an immutable pair of two values

For a detailed answer, check out the ‘Solution Discussion’ section of this question on StrataScratch. Link is given above

Question #2. Difference between sorted(somelist) and somelist. sort()

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Link to the question. https. //platform. stratascratch. com/technical/2115-python-list

This question comes from the General Assembly, and it is a good indicator of a candidate's depth of knowledge of Python

The short answer is that the sorted(list) function results in a new list with sorted values, whereas somelist. sort() sorts the original list in place, keeping its identity

Refer to the ‘Solution Discussion’ section of this question on StrataScratch platform to get a detailed breakdown of differences between two functions

Question #3. Memory Stored and Retrieved in Python’s Dictionary

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Link to the question. https. //platform. stratascratch. com/technical/2091-python-dictionary

Dictionaries in Python store information as key-value pairs

person = { 'age': 24, 'firstName': 'George', 'lastName': 'Smith' }

We can retrieve a value of a specific key using square brackets - person[age], which would retrieve the value of ‘age’ key. Be prepared to answer similar questions. For example, to explain dictionary comprehension in Python

To better understand how Python dictionaries store data, check the ‘Solution Discussion’ section of this question on the StrataScratch platform

Question #4. Identifying Missing Values in a Data Set

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Link to the question. https. //platform. stratascratch. com/technical/2254-missing-values-in-data-set

The easiest way to identify missing values is to use df. isnull() or df. isna() functions, available for Pandas dataframes. We can check the entire dataset using the df. isnull. values. any() function, which returns true if there are missing values, and false if there are none

For a more detailed answer, check the ‘Solution Discussion’ section on StrataScratch platform

Question #5. Generate a sorted vector from two sorted vectors

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Link to the question. https. //platform. stratascratch. com/technical/2104-sorted-vectors

Experience and knowledge of list comprehension in Python can help you easily answer this question

First, create a new array with the combined size of the first and second arrays. Then write a function that goes over arr_1 and arr_2 simultaneously, determines which is the smaller number from two arrays and adds it to the new array. And continues doing this until the end

You can look at the actual code on the ‘Solution Discussions’ section on StrataScratch platform

Coding Python Data Science Interview Questions

In the process of interviewing for a job, aspiring data scientists have to solve coding challenges as well. Bạn nên làm quen với việc viết mã Python

Follow these steps to easily solve even the most difficult questions

1. Understand the question

Before answering the question, make sure you completely understand it. For example, what columns need to be returned and other details for solving the question

When dealing with difficult questions, read them multiple times to wrap your head around them

Nếu bạn đã cố gắng hết sức để hiểu câu hỏi nhưng một số điều vẫn chưa rõ ràng, hãy hỏi người phỏng vấn để làm rõ

2. Analyze data

Looking at available table(s) can help you come up with a logical solution. Once you completely understand the verbal or written description of the question, look at the table and find columns that contain values that you’ll use in your calculations

To get the general idea of columns and values contained in them, look at types of values in each column. It will tell you if you need to convert values in certain columns

3. Lập kế hoạch tiếp cận của bạn

Khi bạn hoàn toàn hiểu cấu trúc của câu hỏi và dữ liệu có sẵn, bạn có thể bắt đầu giải nó. In theory, you can start writing Python code right away, but there’s a better approach

We recommend you to think about the problem in logical steps. Hãy nghĩ về tất cả các hoạt động và tính toán bạn cần thực hiện để đi từ dữ liệu có sẵn đến câu trả lời cuối cùng. Sau đó viết ra các bước hợp lý này và các chi tiết quan trọng cho từng bước

Python data science interview questions are usually very complex. One remedy is to organize your thoughts on paper. Bằng cách này, bạn sẽ thấy việc theo dõi và viết mã cho từng bước dễ dàng hơn nhiều

4. viết mã

Hãy suy nghĩ về những tính năng của Python mà giải pháp của bạn sẽ sử dụng. Nhập tất cả các thư viện khoa học dữ liệu cần thiết như numpy và python

Nếu bạn bối rối về việc xâu chuỗi nhiều hàm lại với nhau, hãy tạo các biến để lưu trữ kết quả của mỗi lệnh gọi hàm

Bắt đầu với một giải pháp cơ bản và dần dần thêm phức tạp vào nó. Xuất mã để xem các thay đổi gia tăng có tác dụng mong muốn không

Câu hỏi số 6. dự án đắt tiền

Hãy bắt đầu danh sách các thách thức mã hóa của chúng tôi với câu hỏi đơn giản này từ Microsoft. Như mọi khi, việc tìm ra câu trả lời đúng bắt nguồn từ việc chú ý đến dữ liệu và đặt ra các bước hợp lý để giải quyết câu hỏi

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Liên kết đến câu hỏi. https. //nền tảng. tầng lớp. com/coding/10301-đắt-dự án

Hiểu câu hỏi

Để có câu trả lời, chúng ta phải tính phần trung bình của ngân sách phân bổ cho mỗi nhân viên

Câu hỏi yêu cầu chúng tôi xuất tên dự án, ngân sách cho mỗi khách hàng và sắp xếp các giá trị số theo thứ tự tăng dần

Phân tích dữ liệu

Không thực tế khi bắt đầu viết mã Python trước khi bạn hoàn toàn hiểu dữ liệu có sẵn

Trả lời câu hỏi này yêu cầu bạn phải làm việc với hai bảng - ms_projects chứa thông tin về các dự án và ms_emp_projects lưu trữ thông tin chi tiết của từng nhân viên

Trước tiên, hãy xem loại giá trị trong mỗi cột dữ liệu có sẵn

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Nhìn vào dữ liệu thực tế trong bảng thậm chí có thể minh họa nhiều hơn và giúp bạn đưa điều này vào ngữ cảnh

ms_projects table

Table. ms_projects

idtitlebudget1Project1294982Project2324873Project3439094Project4157765Project536268

Hiển thị tất cảChuyển đổi dTypes

Cột id chứa các số để xác định từng dự án. Cột tiêu đề chứa tên của từng dự án và ngân sách chứa tổng ngân sách cho từng dự án

bảng ms_emp_projects

Bảng. ms_emp_projects

emp_idproject_id105921105932105943105954105965

Hiển thị tất cảChuyển đổi dTypes

Cột emp_id này chỉ đơn giản là một danh sách các số để xác định từng nhân viên và cột duy nhất khác được sử dụng để chỉ định dự án mà nhân viên đó được chỉ định

Lập kế hoạch tiếp cận của bạn

Để trả lời câu hỏi này, chúng ta cần tính tỷ lệ ngân sách trên nhân viên và sắp xếp danh sách cuối cùng theo thứ tự cụ thể

Vì thông tin về dự án và nhân viên được chia thành hai bảng nên chúng ta sẽ phải kết hợp chúng lại

Tiếp theo, chúng ta cần tìm số lượng công nhân cho mỗi dự án. Chúng tôi sử dụng nguyên tắc giống như trong SQL -  tạo các nhóm nhân viên làm việc trong cùng một dự án, sau đó lấy số lượng nhân viên trong mỗi nhóm

Chúng ta có thể tính tỷ lệ ngân sách trên mỗi nhân viên bằng cách chia ngân sách cho số lượng nhân viên được chỉ định cho từng dự án

Cuối cùng, chúng ta cần sắp xếp các hàng sao cho những hàng có ngân sách cao nhất cho mỗi nhân viên được ưu tiên trước, theo sau là các giá trị thấp hơn

viết mã

Hãy dịch cách tiếp cận logic của chúng ta sang mã Python

Bước 1. Kết hợp dữ liệu từ hai bảng

Chúng tôi sử dụng chức năng hợp nhất () từ thư viện Pandas, đây là giải pháp thay thế cho THAM GIA trong SQL. Nó cho phép chúng tôi kết hợp dữ liệu từ hai khung dữ liệu

Chúng tôi sử dụng từ khóa 'bật' để chỉ định thứ nguyên được chia sẻ giữa hai tập dữ liệu và từ khóa 'làm thế nào' để cho Python biết phải làm gì với các bản ghi không có giá trị khớp

import pandas as pd
import numpy as np

df=pd.merge(ms_projects, ms_emp_projects, how = 'inner',left_on = ['id'], right_on=['project_id'])

Bước 2. Tổng hợp số lượng công nhân cho mỗi dự án

In this step, we use the groupby() function to create groups of employees working on different products. We use the size() function to get a total number of employees in each group. This function in python works similar to the count() aggregate function in SQL

df1=df.groupby(['title','budget'])['emp_id'].size().reset_index()

Once we have calculated the number of employees for each group, we use the reset_index() to go back to default behavior. By default, each row in a dataframe is assigned a numeric index to identify it

Step 3. Calculate budget-per-employee ratio

We created a new property called ‘budget_emp_ratio’. We calculate values for this property by dividing the values in the budget column by the total number of employees

df1['budget_emp_ratio'] = (df1['budget']/df1['emp_id']).round(0)

Note that in the previous step, we aggregated values in the emp_id column for each group. So the emp_id column now contains a total number of employees

We also round the result of this division to the nearest whole number

Step 4. Output ordered values

Next, we use the sort_values() function to arrange budget_emp_ratio values in a descending order (from highest to lowest), and output them as well as project names in the final result

df2=df1.sort_values(by='budget_emp_ratio',ascending=False)
result = df2[["title","budget_emp_ratio"]]

Here is what our final solution looks like

import pandas as pd
import numpy as np

df=pd.merge(ms_projects, ms_emp_projects, how = 'inner',left_on = ['id'], right_on=['project_id'])
df1=df.groupby(['title','budget'])['emp_id'].size().reset_index()
df1['budget_emp_ratio'] = (df1['budget']/df1['emp_id']).round(0)
df2=df1.sort_values(by='budget_emp_ratio',ascending=False)
result = df2[["title","budget_emp_ratio"]]

Output

The widget allows us to run our code, see the output and check if it’s the right answer

Our output exactly matches the expected output, so it is accepted as correct

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Question #7. Total Cost Of Orders

A prime example of a Python data science interview question where a candidate has to use functions from pandas and numpy libraries to get the answer

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Link to the question. https. //platform. stratascratch. com/coding/10183-total-cost-of-orders

Understand the question

We are asked to calculate the total of values in a certain column. Another condition is that we calculate the total for each different user

Question description tells us to output the id, first_name, and aggregate total_order_cost. It also specifies the way to order records

Phân tích dữ liệu

Let’s take a quick look at the types of columns in two tables. You might need to change the type of data, or use specific functions depending on type of data

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

The customers table contains typical information to describe each customer - their name, location, and contacts

Each record in the orders table stores information like a unique identifier for each order, identifier for customer who placed the order, order date, description, and cost

One important detail is to notice the cust_id column of the  orders table. Values of this column reference the identity of each customer, stored in the id column of the customers table

Next, look at actual tables filled with data

bảng khách hàng

Table. customers

idfirst_namelast_namecityaddressphone_number8JohnJosephSan Francisco928-386-81647JillMichaelAustin813-297-06924WilliamDanielDenver813-368-12005HenryJacksonMiami808-601-751313EmmaIsaacMiami808-690-5201

Hiển thị tất cảChuyển đổi dTypes

orders table

Table. orders

idcust_idorder_dateorder_detailstotal_order_cost132019-03-04Coat100232019-03-01Shoes80332019-03-07Skirt30472019-02-01Coat25572019-03-10Shoes80

Hiển thị tất cảChuyển đổi dTypes

We must aggregate dollar values of each customer’s orders, stored in the total_order_cost column of the orders table


Lập kế hoạch tiếp cận của bạn

Solving questions like this one requires a thorough understanding of simple concepts like variables in Python, as well as knowledge of merge(), groupby() and other functions from the pandas library

We need data from both tables to aggregate the value of orders placed by individual customers. Then we create a group of rows for each individual customer to store the information about orders placed by each order

Finally, we need aggregation Python functions to calculate the total of values in each group

Write the code


For more discussion about different approaches to the question, check out the question on our platform

Output

Mô tả câu hỏi cho biết đầu ra phải là ba cột này, với tên của khách hàng được sắp xếp theo thứ tự bảng chữ cái

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Intermediate Python Data Science Interview Questions

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Now let’s look at python data science interview questions that are a bit more complex. You might have to answer these if you’re interviewing for a middle data analyst or similar data scientist role

Question #8. Distances Traveled

This is a question from Lyft, where you have to find 10 users with highest distance values

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Link to the question. https. //nền tảng. tầng lớp. com/coding/10324-quãng đường đã đi

Understand the question

Các điều kiện cho câu hỏi phỏng vấn khoa học dữ liệu python này khá rõ ràng. Chúng tôi cần tìm những người dùng có TOP 10 quãng đường đã đi và xuất ra ba cột sau. id, tên và khoảng cách

Phân tích dữ liệu

Trong câu hỏi này, dữ liệu có sẵn được lưu trữ trong hai bảng. Chúng ta cần làm việc với dữ liệu từ cả hai bảng để đi đến câu trả lời cuối cùng

Trước tiên, hãy xem loại giá trị trong mỗi cột. Đầu tiên, là bảng lyft_rides, chứa thông tin về các chuyến đi được đặt qua ứng dụng Lyft

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Thứ hai là lyft_users, lưu trữ thông tin về người dùng ứng dụng

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn


Cột user_id của bảng lyft_rides_log xác định khách hàng đã đặt chuyến đi. Một người dùng có thể đã đặt nhiều chuyến đi, vì vậy có thể an toàn khi cho rằng cột này có thể có các giá trị trùng lặp

Id người dùng và tên của họ được lưu trữ trong bảng lyft_users

Nó sẽ giúp xem xét dữ liệu thực tế trong hai bảng này


bảng lyft_rides_log

Bảng. lyft_rides_log

iduser_id distance101893102405610328831043383105187

Hiển thị tất cảChuyển đổi dTypes


bảng lyft_users

Bảng. lyft_users

idname1Dustin Smith2Jay Ramirez3Joseph Cooke4Melinda Young5Sean Parker

Hiển thị tất cảChuyển đổi dTypes


Nhìn vào hàng thứ năm trong bảng lyft_rides_log. Giá trị user_id của nó là 1, giá trị này chúng ta có thể tra cứu trong bảng lyft_users để biết thêm thông tin về người dùng. Trong trường hợp này, chúng tôi có thể tìm ra tên đầy đủ của họ, không có trong bảng lyft_rides_log

Lập kế hoạch tiếp cận của bạn

Chia nhỏ bất kỳ thử thách mã hóa nào thành một số bước dễ quản lý có thể giúp bạn tránh được lỗi

Để có được thông tin đầy đủ về người dùng và các chuyến đi mà họ đã đặt qua ứng dụng, chúng tôi sẽ phải kết hợp hai bảng thành một

Tiếp theo, chúng ta cần chia các chuyến đi thành các nhóm, một nhóm dành cho mỗi người dùng duy nhất đã đặt chuyến đi. Sau đó, chúng tôi có thể thêm khoảng cách cho mỗi người dùng

Khi chúng tôi tổng hợp khoảng cách cho từng người dùng, thì chúng tôi cần xếp hạng các nhóm dựa trên giá trị này

Bước cuối cùng sẽ là chọn người dùng có thứ hạng TOP 10 và trả về các cột đã chỉ định

Write the code

Để giải quyết câu hỏi này, chúng ta sẽ cần các hàm Python để kết hợp dữ liệu, nhóm các giá trị và xếp hạng các hàng dựa trên các giá trị trong một cột cụ thể

Bước 1. Kết hợp dữ liệu từ hai bảng

Chúng ta có thể sử dụng hàm merge() để kết hợp dữ liệu từ hai bảng

import pandas as pd
import numpy as np

df = pd.merge(lyft_users, lyft_rides_log, left_on='id', right_on='user_id')

Bước 2. Tổng hợp số dặm đã đi và sắp xếp dữ liệu

Chúng ta có thể sử dụng hàm groupby() để tạo các nhóm hàng dựa trên danh tính của người dùng

Chúng ta cũng cần hàm tổng hợp sum() để cộng tất cả các giá trị khoảng cách cho mỗi nhóm

Sau đó, chúng tôi sử dụng sort_values() để sắp xếp các giá trị theo thứ tự giảm dần

result = df.groupby(['user_id', 'name'])['distance'].sum().to_frame().sort_values(by = 'distance', ascending = False).reset_index()


Chúng tôi sử dụng hàm to_frame() để chuyển đổi các giá trị chuỗi thành khung dữ liệu. Điều này là cần thiết để xâu chuỗi hàm sort_values() để sắp xếp các hàng

Bước 3. Xếp hạng các hàng dựa trên khoảng cách của chúng

Tiếp theo, chúng tôi tạo cột 'xếp hạng' và sử dụng hàm rank() để tạo giá trị cho nó. Chúng tôi xác định thứ hạng dựa trên các giá trị trong cột 'khoảng cách' của mỗi hàng

________số 8_______

Bước 4. Trả lại đầu ra cuối cùng

Chúng tôi đặt điều kiện để chọn các giá trị có 10 giá trị cao nhất trong cột khoảng cách và xuất các cột 'user_id', 'name' và 'khoảng cách'

result[result['rank']<=10][['user_id', 'name', 'distance']]

Và giải pháp cuối cùng

import pandas as pd
import numpy as np

df=pd.merge(ms_projects, ms_emp_projects, how = 'inner',left_on = ['id'], right_on=['project_id'])
0


Output

Chạy giải pháp cuối cùng của chúng tôi sẽ trả về kết quả đúng

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Câu hỏi số 9. Bài đăng rác

Người phỏng vấn Facebook đặt câu hỏi này để kiểm tra khả năng viết mã Python của ứng viên. Quan trọng hơn, câu hỏi này có thể hữu ích để kiểm tra khả năng chú ý đến chi tiết của họ

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Liên kết đến câu hỏi. https. //nền tảng. tầng lớp. com/coding/10134-spam-posts

Understand the question

Đọc câu hỏi nhiều lần để hiểu đúng nhiệm vụ trong tay. Ngoài ra, câu hỏi giải thích những gì cấu thành một bài đăng spam và cách xác định các bài đăng đó trong dữ liệu có sẵn

Phân tích dữ liệu

Nhìn vào loại giá trị trong mỗi cột có thể giúp bạn hình thành ấn tượng đầu tiên về dữ liệu có sẵn

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

facebook_posts dường như là bảng chính chứa hầu hết thông tin, ngoại trừ dữ liệu xem

Nếu thấy cần thiết, bạn có thể truy cập dữ liệu xem cho từng bài đăng bằng cách kiểm tra chéo các giá trị post_id. Cả hai bảng chia sẻ cột này

Hãy xem trước hai bảng này với dữ liệu thực tế

bảng facebook_posts

Bảng. facebook_posts

post_idposterpost_textpost_keywordspost_date02Trận đấu với Lakers đêm qua thật tuyệt. [bóng rổ,lakers,nba]2019-01-0111 Lebron James là đẳng cấp hàng đầu. [bóng rổ,lebron_james,nba]2019-01-0222Măng tây ăn được. [măng tây,món ăn]2019-01-0131Spaghetti là món ăn Ý. [spaghetti,food]2019-01-0243Người dùng 3 không chia sẻ sở thích[#spam#]2019-01-01

Hiển thị tất cảChuyển đổi dTypes


bảng facebook_post_view

Bảng. facebook_post_views

post_idviewer_id4041425051

Hiển thị tất cảChuyển đổi dTypes



Lập kế hoạch tiếp cận của bạn

Trước tiên, bạn nên tìm các bài đăng trên facebook có thể được phân loại là spam. Theo mô tả câu hỏi, chúng ta cần xem xét các giá trị trong cột post_keywords của mỗi hàng để xem cột đó có chứa từ 'spam' hay không

Chúng tôi cũng cần một số cách để tính toán các bài đăng spam. Một cách là tạo một cột mới và lưu trữ 1 nếu bài đăng là spam và 0 nếu không phải. Để làm được điều đó, chúng ta cần áp dụng một hàm trên các giá trị trong trục 'is_spam'. Chúng ta có thể sử dụng hàm apply() từ thư viện gấu trúc để làm điều này. Phải mất một đối số, một hàm lambda gán 0 hoặc 1 tùy thuộc vào phân loại của bài đăng

Trong trường hợp bạn chưa biết, hàm Lambda chỉ là một cú pháp ngắn hơn để định nghĩa một hàm. Thường hữu ích cho các chức năng một dòng đơn giản

Tiếp theo, chúng ta có thể cộng các giá trị trong cột is_spam mới và tính tỷ lệ chia sẻ của các bài đăng đó so với tổng số bài đăng. Đó là một phép tính tỷ lệ phần trăm đơn giản, trong đó bạn chia một số cho một số khác và nhân kết quả với 100

Để tính lượt chia sẻ, chúng tôi cần lưu trữ tổng số bài đăng spam và số lượng tất cả các bài đăng. Sau khi được tính toán, chúng tôi có thể loại bỏ hai cột đó và xuất ngày và chia sẻ thư rác

Write the code

Hãy cố gắng tự viết giải pháp trong tiện ích bên dưới


Output

Câu trả lời cuối cùng phải chứa hai cột này

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Câu hỏi số 10. Những Thành Phố Có Những Ngôi Nhà Đắt Nhất

Đây là câu hỏi từ Zillow, một nền tảng nơi bạn có thể duyệt danh sách nhà

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Liên kết đến câu hỏi. https. //nền tảng. tầng lớp. com/coding/10315-thành-phố-có-nhà-đắt-nhất

Understand the question

Tiền đề của câu hỏi phỏng vấn khoa học dữ liệu python này khá rõ ràng. Những người phỏng vấn mong bạn đưa ra những thành phố có giá nhà trung bình đắt hơn giá trung bình quốc gia

Phân tích dữ liệu

Để giải quyết câu hỏi này, chúng ta chỉ cần làm việc với một bảng chứa id danh sách, tiểu bang, thành phố và địa chỉ của bất động sản cũng như giá thị trường của nó

Trước tiên, hãy xem xét các loại giá trị trong cột

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Tên cột cho bảng này là mô tả. Sẽ an toàn khi giả định rằng cột id xác định từng danh sách thuộc tính riêng lẻ trên nền tảng. Trong khi tiểu bang, thành phố và street_address biểu thị vị trí của nó. Bảng mkt_price lưu trữ một giá trị số nguyên cho giá của tài sản tính bằng đô la

Đối với tính duy nhất của giá trị, sẽ an toàn khi cho rằng các cột thành phố và tiểu bang có thể chứa các giá trị trùng lặp. Tuy nhiên, các giá trị trong id xác định từng thuộc tính riêng lẻ và phải là duy nhất

Tiếp theo, hãy xem bảng zillow_transactions thực tế

Bảng. zillow_transactions

idstatecitystreet_addressmkt_price1NYThành phố New York66 Trout Drive4497612NYThành phố New YorkAtwater2775273NYThành phố New York58 Phố Gates2683944NYThành phố New YorkNorcross2799295NYThành phố New York337 Shore Ave. 151592

Hiển thị tất cảChuyển đổi dTypes

Nhìn vào dữ liệu có sẵn xác nhận các giả định của chúng tôi là chính xác

Lập kế hoạch tiếp cận của bạn

Bước đầu tiên là tìm giá trung bình của bất động sản ở mỗi thành phố. Mỗi bản ghi trong bảng có sẵn mô tả từng danh sách riêng lẻ, nhưng không hiển thị thông tin về giá trung bình cho từng thành phố

Tuy nhiên, chúng ta có thể sử dụng hàm mean() từ thư viện numpy để tổng hợp các danh sách riêng lẻ và tìm giá nhà trung bình cho mỗi thành phố. Chúng ta có thể làm tương tự để tìm giá trung bình của tất cả các ngôi nhà trong cả nước

Cuối cùng, chúng tôi sẽ so sánh hai mức trung bình và đưa ra các thành phố cao hơn mức trung bình quốc gia

Write the code

Hãy thử viết giải pháp trong tiện ích bên dưới

Output

Theo mô tả câu hỏi, đầu ra phải là danh sách các thành phố đáp ứng các tiêu chí

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Câu hỏi phỏng vấn khoa học dữ liệu Python nâng cao

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Cuối cùng, hãy xem một số ví dụ về các câu hỏi phỏng vấn khoa học dữ liệu trăn khó nhất. Bạn dễ gặp những câu hỏi này khi phỏng vấn các vị trí cấp cao

Nhìn vào dữ liệu có sẵn có thể giúp bạn hiểu những câu hỏi khó này. Trước khi cố gắng giải nó, hãy đọc tiền đề câu hỏi nhiều lần để hiểu nó. Sau đó nghĩ về giải pháp và cách dịch nó sang mã Python



Câu hỏi số 11. Days At Number One

Nếu cuối cùng bạn làm việc tại Spotify, bạn có thể được giao những nhiệm vụ tương tự. Ví dụ: để thống kê về từng bài hát hoặc phân tích dữ liệu chính xác cho các công cụ đề xuất, v.v.

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Link to the question. https. //nền tảng. tầng lớp. com/coding/10173-days-at-number-one

Understand the question

Trước tiên, hãy hiểu nhiệm vụ trong tầm tay. Chúng tôi được yêu cầu tìm hiểu thời gian mỗi bài hát đứng ở vị trí số một trên Spotify, cả trên bảng xếp hạng quốc tế và trong nước

Phân tích dữ liệu

Nhìn vào dữ liệu có thể giúp bạn có được suy nghĩ để giải quyết câu hỏi

Trước hết, hãy xem mô tả câu hỏi và tìm các cột chứa các giá trị quan trọng để tính toán

Đối với câu hỏi này, chúng tôi có hai bảng với nhiều cột, vì vậy có thể mất một lúc để tìm các giá trị quan trọng

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Bây giờ chúng ta đã có ý tưởng chung về các giá trị trong mỗi cột, hãy xem xét dữ liệu thực tế

Pay attention to position, trackname and date columns in spotify_daily_rankings_2017_us table

Bảng. spotify_daily_ranks_2017_us

positiontracknameartiststreamsurldate1Shape of YouEd Sheeran1467892https. //mở ra. spotify. com/track/7qiZfU4dY1lWllzX7mPBI32017-02-091Tài khoản ngân hàng21 Savage1176086https. //mở ra. spotify. com/track/5eqK0tbzUPo2SoeZsov04s2017-08-051rockstarPost Malone2072302https. //mở ra. spotify. com/track/7wGoVu4Dady5GV0Sv4UIsx2017-10-291Bad và Boujee (feat. Lil Uzi Vert)Migos1823391https. //mở ra. spotify. com/track/4Km5HrUvYTaSUfiSGPJeQR2017-01-271Despacito - RemixLuis Fonsi1480367https. //mở ra. spotify. com/track/5CtI0qwDJkDQGwXD1H1cLb2017-07-03

Hiển thị tất cảChuyển đổi dTypes


Các giá trị tương tự có sẵn trong bảng spotify_worldwide_daily_song_rank

Bảng. spotify_worldwide_daily_song_rank

idpositiontracknameartiststreamsurldateregion30365152Heart Won't ForgetMatoma28047https. //mở ra. spotify. com/track/2of2DM5LqTh7ohmmVXUKsH2017-02-04no85559160Ai đó trong đám đông - Từ nhạc phim "La La Land"Emma Stone17134https. //mở ra. spotify. com/track/7xE4vKvjqUTtHyJ9zi0k1q2017-02-26fr1046089175The GreatestSia10060https. //mở ra. spotify. com/track/7xHWNBFm6ObGEQPaUxHuKO2017-03-06cl35082425Không thể nào quênMontana thuộc Pháp46603https. //mở ra. spotify. com/track/3B54sVLJ402zGa6Xm4YGNe2017-10-01no7768221Bad và Boujee (feat. Lil Uzi Vert)Migos1823391https. //mở ra. spotify. com/track/4Km5HrUvYTaSUfiSGPJeQR2017-01-27us

Hiển thị tất cảChuyển đổi dTypes

Một điều rõ ràng - chúng ta sẽ phải làm việc với các giá trị ngày để tìm ra sự khác biệt về thời gian giữa chúng

Lập kế hoạch tiếp cận của bạn

Việc có thể chia nhỏ câu hỏi thành một vài bước dễ quản lý có thể giúp bạn viết mã không có lỗi, ngay cả khi bạn đang viết bên ngoài trình soạn thảo mã, chẳng hạn như trên bảng trắng hoặc một tờ giấy

Chúng ta phải theo dõi thứ hạng bài hát trên cả bảng xếp hạng trong nước và quốc tế, vì vậy chúng ta nên kết hợp hai bảng

Câu hỏi nêu rõ rằng chúng ta cần đếm số ngày mỗi bài hát đứng ở vị trí số một. We need to find instances when a record satisfies number one position both for the US and worldwide

The next step is to create a column to store the number of days each individual song has stayed as number one both in the US and worldwide

Finally, we must output the highest number of days each song lasted in the number one position

Write the code

Step 1. Combine data from table

Pandas library provides a merge() function which combines data from two tables, similar to JOINs in SQL

import pandas as pd
import numpy as np

df=pd.merge(ms_projects, ms_emp_projects, how = 'inner',left_on = ['id'], right_on=['project_id'])
1

We can use the second parameter to specify the columns that are common between two tables

Tables we merged have many columns with identical names. When merged, all of these columns will be combined into one table. Since columns in one table can not have identical names, they will be assigned a suffix

For example, the position column from the first (left) table will become position_x, whereas the position from the second table will become position_y

Step 2. Find songs that satisfy the condition

This question has a very clear condition - we need to find instances when a US track has stayed on number 1 on both domestic and international spotify rankings

We create the top1 variable to store all records of number one songs in the US. Chúng tôi đạt được điều này bằng cách kiểm tra các giá trị của cột position_x, cột này chứa các giá trị của cột vị trí lưu trữ tất cả các bản ghi của các bài hát số một tại Hoa Kỳ

import pandas as pd
import numpy as np

df=pd.merge(ms_projects, ms_emp_projects, how = 'inner',left_on = ['id'], right_on=['project_id'])
2

Then we take values where the value of position_y column is 1, and store them as integers in a new column called world_position

Đừng quên giá trị position_y là giá trị của cột vị trí trong bảng xếp hạng toàn cầu

We need to use the astype() function to ensure that values are stored as integers. Later on, we will calculate the sum of values in this column

Almost all of the functions mentioned above are from the Pandas library. Read this article to better understand why and how to import Pandas as pd in Python

Step 3. Calculate the number of days

We use the groupby() function to get unique groups for each value in the trackname column. In other words, create an arbitrary group of records for each song. Finally, calculate the aggregate sum of values in the world_position column for each group and store it in the ndays column

We use the transform() function to calculate the total number of days. It works similarly to window aggregate functions in SQL. It calculates the total value in the world_position column for each group, and stores the total in a new column. Unlike normal aggregate functions, transform does not collapse all records into one

import pandas as pd
import numpy as np

df=pd.merge(ms_projects, ms_emp_projects, how = 'inner',left_on = ['id'], right_on=['project_id'])
3

This step is easier to understand if we look at the actual table before we apply transform() function on it

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Python will look at values in the trackname column, and separate rows into two groups, one for each distinct value in this column. For each group, it will add up values in the world_position and store them in the ndays column

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn


Step 4. Order songs alphabetically

We use the groupby() to make sure we’re working with unique songs, and max() function to get the highest ndays value from each group

import pandas as pd
import numpy as np

df=pd.merge(ms_projects, ms_emp_projects, how = 'inner',left_on = ['id'], right_on=['project_id'])
4

Then we use the to_frame() function to convert ndays series to dataframe format

As a final step, we use the reset_index() function to reset the index column, and arrange songs in an alphabetical order

With that, we arrive at the final solution

import pandas as pd
import numpy as np

df=pd.merge(ms_projects, ms_emp_projects, how = 'inner',left_on = ['id'], right_on=['project_id'])
5


Output

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn


Question #12. Apple Product Counts

This is a question from Google, but candidates have to analyze apple product data

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Link to the question. https. //platform. stratascratch. com/coding/10141-apple-product-counts

Understand the question

Reading the first sentence of the question should be a sign that we will use aggregation to solve this question

Description contains important details and assumptions to help you approach the question the right way. Candidates are given specific instructions on how to format and arrange output values

Phân tích dữ liệu

The data necessary to find answers is split between two tables

Finding a solution will require some way to combine data in two tables. To merge them, we’ll have to find the shared dimension - a common column between two tables

Let’s scan the table and look at types of values in each column

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

The user_id column in both tables seems to contain unique values to identify the user

It’s safe to assume that other text values (type object), like event_type, event_name, location, and device, can be duplicate. Likely we will have to sort values in the device column

playbook_events table

Table. playbook_events

user_idoccurred_atevent_typeevent_namelocationdevice69912014-06-09 18. 26. 54engagementhome_pageUnited Statesiphone 5188512014-08-29 13. 18. 38signup_flowenter_infoRussiaasus chromebook149982014-07-01 12. 47. 56engagementloginFrancehp pavilion desktop81862014-05-23 10. 44. 16engagementhome_pageItalymacbook pro96262014-07-31 17. 15. 14engagementloginRussianexus 7

Hiển thị tất cảChuyển đổi dTypes

playbook_users table

Table. playbook_users

user_idcreated_atcompany_idlanguageactivated_atstate112013-01-01 04. 41. 131german2013-01-01active522013-01-05 15. 30. 452866tiếng Tây Ban Nha2013-01-05hoạt động1082013-01-10 11. 04. 581848spanish2013-01-10active1672013-01-16 20. 40. 246709arabic2013-01-16active1752013-01-16 11. 22. 224797russian2013-01-16active

Hiển thị tất cảChuyển đổi dTypes


Lập kế hoạch tiếp cận của bạn

This question asks us to find users with Apple devices. So we need to make a Python list that contains names of specified Apple products in a lowercase string format

We need to work with data from both dataframes, so we need to merge two tables

Once we have combined data from two tables, we need to divide users into groups with different language values and find the number of users in each group

It’s also a good idea to give the aggregated column a new name, to make it clear that this column contains a total number of users for each language

Then you need to create a new column. The value of this column will be 1 for Apple users, and 0 for others. There are multiple ways to accomplish this. One is to filter the dataframe to keep only users with Apple devices and then merge it with the list of all users

Write the code

Try to solve the question yourself


Output

The final answer should have three columns. Rows should be ordered based on the number of total users

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn



Question #13. Best Selling Item

Interviewers at Amazon ask this question to check a candidate's ability to solve complex data science problems in python. Solving this question requires discipline to carefully read the question, pay attention to its concepts and start writing code only after everything is clear

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Link to the question. https. //platform. stratascratch. com/coding/10172-best-selling-item

The question clearly states that you don’t have to worry about monthly sales from different years. It also defines the criteria for finding a best selling product

Phân tích dữ liệu

We have just one table with numerous columns. First, let’s look at types of values

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn


Let’s start with the invoiceno column, which probably contains unique numbers for each transaction

stockcode values likely also describe the product, but most likely we will not work with this column

mô tả phải là tên hoặc mô tả ngắn về sản phẩm. The question specifically indicates that we should return values in this column

Cột số lượng có khả năng chứa số lượng sản phẩm đã mua trong mỗi giao dịch. We will need to multiply values in this column by unitprice to get the total value of the transaction

The invoicedate is important, because the datetime value shows when the transaction took place

The question doesn’t ask us anything about individual customers, so the customerId and country columns can be ignored

Now, let’s preview the online_retail table with data

Table. online_retail

invoicenostockcodedescriptionquantityinvoicedateunitpricecustomeridcountry54458621890S/6 WOODEN SKITTLES IN COTTON BAG32011-02-212. 9517338United Kingdom54110484509GSET OF 4 FAIRY CAKE PLACEMATS32011-01-133. 29United Kingdom56077222499WOODEN UNION JACK BUNTING32011-07-204. 96Vương quốc Anh55515022488BẢN CHALKBLE HÌNH CHỮ NHẬT ĐÁ ĐÁ TỰ NHIÊN52011-05-313. 29United Kingdom57052121625VINTAGE UNION JACK APRON32011-10-116. 9512371Thụy Sĩ

Hiển thị tất cảChuyển đổi dTypes


Lập kế hoạch tiếp cận của bạn

Solution to this question can be broken down into three steps

In the first step, we need to take datetime values in the online_retail dataframe and convert them to months

Sau đó, tổng hợp tổng giá thanh toán cho từng mặt hàng và lưu trữ vào một cột mới. The question tells us that best-selling stands for highest dollar amount paid, not units sold. Việc tính toán tổng số tiền phải trả cho mỗi sản phẩm là hiển nhiên - nhân giá theo số lượng

Vì mỗi bản ghi trong bảng chỉ mô tả một giao dịch nên có thể giả định rằng có nhiều giao dịch cho mỗi sản phẩm. Chúng tôi cần đảm bảo có được tổng số tất cả các giao dịch

Bạn cũng sẽ cần sử dụng hàm rank() để xếp hạng các tháng theo doanh số bán hàng của họ. Cuối cùng, xuất các cột sau - tháng, mô tả và tổng_đã thanh toán

Write the code

Cố gắng tự mình giải quyết thử thách


Output

Câu trả lời phải có ba cột - tháng, mô tả mặt hàng bán chạy nhất trong tháng đó và tổng số tiền đã thanh toán cho mặt hàng đó

Nhà khoa học dữ liệu phỏng vấn trăn
Nhà khoa học dữ liệu phỏng vấn trăn

Tóm lược

Trong bài viết này, chúng tôi đã xem xét các câu hỏi phỏng vấn phổ biến về khoa học dữ liệu Python được hỏi trong các cuộc phỏng vấn ngày hôm nay. Chúng tôi đề cập đến cả hai loại câu hỏi mã hóa và không mã hóa. Chúng ta đã xem cách kết hợp dữ liệu từ hai bảng, xếp hạng các bản ghi dựa trên các giá trị trong một cột cụ thể, chia các hàng thành các nhóm, tính tổng cho mỗi nhóm và các thao tác phổ biến khác trong Python

Nếu bạn thấy bài viết này hữu ích, bạn cũng có thể xem danh sách dài hơn về “câu hỏi phỏng vấn trăn” hoặc “câu hỏi phỏng vấn khoa học dữ liệu”

StrataScratch cho phép bạn thực hành giải quyết các câu hỏi thực tế được hỏi trong các cuộc phỏng vấn ngày hôm nay. Chúng tôi có hơn một trăm câu hỏi phỏng vấn về khoa học dữ liệu Python từ Google, Amazon, Uber, Microsoft và các công ty lớn khác trong lĩnh vực này

Bạn có thể sử dụng tiện ích Python tích hợp để viết mã và nhận phản hồi ngay lập tức. Nếu bạn gặp khó khăn, có những gợi ý để tiếp cận một câu hỏi. Thậm chí còn có một phần thảo luận nơi các chuyên gia có kinh nghiệm chia sẻ và thảo luận về các giải pháp của họ