# Top 30 Python Data Science Interview Questions [2024]

Sep 03, 2024 8 Min Read 750 Views

*(Last Updated)*

In the rapidly evolving field of data science, proficiency in Python has become pivotal for success. As you prepare for your next technical interview, grasping the right Python data science interview questions can set you apart from the competition. Python’s versatility and its extensive library ecosystem make it an indispensable tool for data science professionals.

Therefore, if you’re a budding data scientist or looking to advance in your career, understanding the nuances of Python applications in data science is key.

**This insight into Python’s role within data science underscores the importance of being well-prepared with both foundational and advanced Python data science interview questions.**

This article aims to equip you with a comprehensive set of Python data science interview questions, covering a broad spectrum from basic Python data science interview questions coding to more advanced Python data science technical interview questions.

#### Table of contents

- Basic Python Data Science Interview Questions
- What built-in data types are used in Python?
- How are data analysis libraries used in Python? What are some of the most common libraries?
- What is negative Indexing in Python? [with example]
- What is dictionary comprehension in Python? [with example]
- Is Python an object-oriented programming language?
- What library would you prefer for plotting Seaborn or Matplotlib?
- What is the difference between lists and tuples in Python?
- How would you sort a dictionary in Python?
- What is the difference between a series and a data frame in Pandas?
- Is memory de-allocated when you exit Python?
- Intermediate Python Data Science Interview Questions
- What is the zip() and enumerate() function in Python?
- Given two strings A and B, return whether or not A can be shifted some number of times to get B.
- How do map, reduce, and filter functions work?
- What is the difference between del(), clear(), remove(), and pop()?
- Given two strings, string1, and string2, determine if there exists a one-to-one character mapping between each character of string1 to string2.
- Given two strings, string1 and string2, write a function is_subsequence to find out if string1 is a subsequence of string2.
- What is the difference between pass, continue, and break?
- Write a function that can take a string and return a list of bigrams.
- What are namespaces in Python? [explain in brief]
- What is the difference between 'is' and '=='?
- Advanced Python Data Science Interview Questions
- Write a function to generate N samples from a normal distribution and plot them on the histogram.
- Write a function that takes in a list of dictionaries with both a key and a list of integers, and returns a dictionary with the standard deviation of each list.
- Given a list of stock prices in ascending order by datetime, write a function that outputs the max profit by buying and selling at a specific interval.
- Write a function to simulate the overlap of two computing jobs and output an estimated cost.
- Given a dataset of test scores, write Pandas code to return cumulative bucketed scores of <50, <75, <90, <100.
- Given a data frame of students’ favorite colors and test scores, write a function to select only those rows (students) where their favorite color is blue or red and their test grade is above 80.
- Write a function that returns the maximum number in the list.
- Write a function shortest_transformation to find the length of the shortest transformation sequence from begin_word to end_word through the elements of word_list.
- Given a dictionary with keys of letters and values of a list of letters, write a function nearest_key to find the key with the input value closest to the beginning of the list.
- Develop a k-means clustering algorithm in Python from the ground up.
- Concluding Thoughts...
- FAQs
- Is pursuing a career in data science still advisable in 2024?
- What is a 'list' in the context of Python programming during interviews?
- How is Python described in interviews?

## Basic Python Data Science Interview Questions

### 1. What built-in data types are used in Python?

Python offers several built-in data types that are foundational for data manipulation and programming. These include:

**int**: Used for integer values.**float**: Handles floating-point numbers.**str**: Manages strings of characters.**bool**: Boolean values like True and False.**list**: A mutable sequence of elements.**tuple**: An immutable sequence of elements.**set**: An unordered collection of unique elements.**dict**: A collection of key-value pairs.

Understanding these data types is crucial as they form the basis of Python programming, especially in data science where data manipulation and analysis are key.

### 2. How are data analysis libraries used in Python? What are some of the most common libraries?

Python is renowned for its robust libraries that simplify data analysis, including:

**Pandas**: Offers data structures like DataFrames and Series for easy data manipulation.**NumPy**: Provides support for large, multi-dimensional arrays and matrices.**Matplotlib**: A plotting library useful for creating static, interactive, and animated visualizations.**Seaborn**: Built on top of Matplotlib, it provides a high-level interface for drawing attractive statistical graphics.

These libraries are integral for performing complex data analysis tasks efficiently in Python.

### 3. What is negative Indexing in Python? [with example]

Negative indexing in Python allows access to the list elements from the end. For instance, consider the list `a = [1, 2, 3, 4, 5]`

:

`a[-1]`

would give the last element, which is`5`

.`a[-2]`

would return`4`

, the second last element.

This feature is particularly useful for quickly accessing data from the end without needing to know the length of the list.

### 4. What is dictionary comprehension in Python? [with example]

Dictionary comprehension offers a concise way to create dictionaries. The syntax is `{key: value for vars in iterable}`

. For example:

`squares = {x: x*x for x in range(6)}`

This creates a dictionary `squares`

where each key is an integer and its value is the square of the key.

### 5. Is Python an object-oriented programming language?

Yes, Python supports object-oriented programming (OOP) principles, making it a multi-paradigm language that facilitates OOP with classes and objects. It allows for concepts like inheritance, encapsulation, and polymorphism, which are fundamental in creating reusable and modular code.

### 6. What library would you prefer for plotting Seaborn or Matplotlib?

Choosing between Seaborn and Matplotlib depends on the specific needs:

**Matplotlib**provides extensive control and customization over plots.**Seaborn**is preferable for making attractive statistical plots quickly and provides themes and high-level interfaces.

For detailed customization, Matplotlib is ideal, while for high-level statistical plotting, Seaborn is more convenient.

### 7. What is the difference between lists and tuples in Python?

The primary difference is mutability:

**Lists**are mutable, meaning they can be modified after creation (e.g., adding or removing elements).**Tuples**are immutable, meaning their contents cannot be changed once created.

This distinction affects performance and usage: tuples can be faster and are useful where fixed data is needed.

### 8. How would you sort a dictionary in Python?

Dictionaries can be sorted by keys or values using `sorted()`

:

```
my_dict = {'one': 1, 'three': 3, 'five': 5}
sorted_by_key = {k: my_dict[k] for k in sorted(my_dict)}
sorted_by_value = {k: v for k, v in sorted(my_dict.items(), key=lambda item: item[1])}
```

This results in dictionaries sorted by keys and values respectively.

### 9. What is the difference between a series and a data frame in Pandas?

**Series**: A one-dimensional array with labels. It can hold any data type.**DataFrame**: A two-dimensional table with row and column labels. It resembles a spreadsheet or SQL table and is suitable for representing complex data relationships.

Understanding these structures is fundamental for effective data manipulation in Pandas.

### 10. Is memory de-allocated when you exit Python?

Memory de-allocation in Python is generally handled by Python’s garbage collector, which deallocates memory not in use automatically. However, in cases of circular references or references from global namespaces, memory might not be freed upon Python exit, depending on the environment and operating system.

*Before we move into the next section, ensure you have a good grip on data science essentials like Python, MongoDB, Pandas, NumPy, Tableau & PowerBI Data Methods. If you are looking for a detailed course on Data Science, you can join GUVI’s Data Science Career Program with Placement Assistance. You’ll also learn about the trending tools and technologies and work on some real-time projects.** *

*Additionally, if you want to explore Python through a self-paced course, try GUVI’s Python course**.*

## Intermediate Python Data Science Interview Questions

Let’s move a level up, and read some intermediate Python Interview Questions on Data Science:

### 11. What is the zip() and enumerate() function in Python?

In Python, the `zip()`

function is used to combine several iterable (like lists or tuples) into a single iterable. It pairs elements from each iterable based on their index, creating tuples. For example:

```
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 90, 88]
result = list(zip(names, scores))
```

This code would output: `[('Alice', 85), ('Bob', 90), ('Charlie', 88)]`

.

On the other hand, `enumerate()`

adds a counter to an iterable and returns it as an enumerate object. This is particularly useful when you need both the index and the value:

```
for index, name in enumerate(names):
print(f"{index}: {name}")
```

This would print:

```
0: Alice
1: Bob
2: Charlie
```

### 12. Given two strings A and B, return whether or not A can be shifted some number of times to get B.

To determine if one string can be cyclically shifted to become another string, you can check if the second string, B, is a substring of the concatenation of two copies of the first string, A:

```
def can_shift(A, B):
return B in (A + A)
```

For instance, with A = “abcde” and B = “deabc”, this function would return `True`

, indicating that A can be shifted to get B.

### 13. How do map, reduce, and filter functions work?

**map()**: Applies a function to all items in an input list. Example:`items = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, items))`

**reduce()**: Applies a rolling computation to sequential pairs of values in a list. This function is part of the`functools`

module:`from functools import reduce result = reduce((lambda x, y: x * y), items)`

**filter()**: Creates a list of elements for which a function returns true:`even_items = list(filter(lambda x: x % 2 == 0, items))`

### 14. What is the difference between del(), clear(), remove(), and pop()?

**del()**: Deletes items from a list or entire variables.**clear()**: Empties the entire list.**remove()**: Removes the first matched item.**pop()**: Removes the item at a specific index and returns it.

### 15. Given two strings, string1, and string2, determine if there exists a one-to-one character mapping between each character of string1 to string2.

To check for a one-to-one mapping, you can use a dictionary to track the mappings of characters:

```
def is_one_to_one_map(string1, string2):
if len(string1) != len(string2):
return False
mapping = {}
for char1, char2 in zip(string1, string2):
if char1 in mapping:
if mapping[char1] != char2:
return False
else:
mapping[char1] = char2
return True
```

### 16. Given two strings, string1 and string2, write a function is_subsequence to find out if string1 is a subsequence of string2.

A function to determine if one string is a subsequence of another can be implemented as follows:

```
def is_subsequence(s1, s2):
iter_s2 = iter(s2)
return all(char in iter_s2 for char in s1)
```

### 17. What is the difference between pass, continue, and break?

**pass**: Does nothing; used as a placeholder.**continue**: Skips the rest of the loop’s current iteration and moves to the next iteration.**break**: Exits the loop entirely.

### 18. Write a function that can take a string and return a list of bigrams.

A function to extract bigrams from a string could look like this:

```
def find_bigrams(input_string):
words = input_string.split()
return [(words[i], words[i + 1]) for i in range(len(words) - 1)]
```

### 19. What are namespaces in Python? [explain in brief]

Namespaces in Python are mappings from names to objects. They help avoid naming conflicts by ensuring that names are unique within a particular context or scope.

### 20. What is the difference between ‘is’ and ‘==’?

`'is'`

: Checks if two variables point to the same object in memory.`'=='`

: Checks if the values of two variables are equal.

Each of these questions and answers deepens your understanding of Python, preparing you for scenarios you might face in data science interviews.

## Advanced Python Data Science Interview Questions

### 21. Write a function to generate N samples from a normal distribution and plot them on the histogram.

To tackle this problem, you can use libraries like Numpy, Matplotlib, or Seaborn for visualization. Here’s how you can create a function in Python:

```
import numpy as np
import seaborn as sns
def generate_and_plot(N):
# Generate N samples from a normal distribution
samples = np.random.randn(N)
# Plotting the histogram
sns.histplot(samples, bins=20, kde=True, color='blue')
return samples
# Example usage:
samples = generate_and_plot(1000)
```

This function not only generates the samples but also plots them, providing a visual understanding of the distribution.

### 22. Write a function that takes in a list of dictionaries with both a key and a list of integers, and returns a dictionary with the standard deviation of each list.

For this task, you can utilize Python’s `numpy`

library to calculate the standard deviation:

```
import numpy as np
def calculate_std_dev(dict_list):
result = {}
for d in dict_list:
for key, values in d.items():
result[key] = np.std(values)
return result
# Example usage:
dict_list = [{'a': [1, 2, 3]}, {'b': [4, 5, 6, 7]}]
std_devs = calculate_std_dev(dict_list)
```

This function processes each dictionary in the list, computing the standard deviation for each list associated with a key.

### 23. Given a list of stock prices in ascending order by datetime, write a function that outputs the max profit by buying and selling at a specific interval.

To maximize the profit from stock prices, you can use the following approach:

```
def max_profit(prices):
min_price = float('inf')
max_profit = 0
for price in prices:
min_price = min(min_price, price)
profit = price - min_price
max_profit = max(max_profit, profit)
return max_profit
# Example usage:
prices = [9, 11, 8, 5, 7, 10]
profit = max_profit(prices)
```

This function keeps track of the minimum price and calculates the potential profit at each step, updating the maximum profit accordingly.

### 24. Write a function to simulate the overlap of two computing jobs and output an estimated cost.

For simulating the overlap and estimating the cost based on the duration of overlap, consider the following function:

```
import random
def simulate_overlap_and_cost(max_time, cost_per_minute):
start_job1 = random.randint(0, max_time)
end_job1 = random.randint(start_job1, max_time)
start_job2 = random.randint(0, max_time)
end_job2 = random.randint(start_job2, max_time)
overlap = max(0, min(end_job1, end_job2) - max(start_job1, start_job2))
return overlap * cost_per_minute
# Example usage:
cost = simulate_overlap_and_cost(300, 2) # max 300 minutes, $2 per minute
```

This function calculates the overlap in minutes and multiplies it by the cost per minute to estimate the total cost.

### 25. Given a dataset of test scores, write Pandas code to return cumulative bucketed scores of <50, <75, <90, <100.

You can use the `pandas`

library to categorize and calculate the cumulative percentages:

```
import pandas as pd
def bucket_scores(df):
bins = [0, 50, 75, 90, 100]
labels = ["<50", "<75", "<90", "<100"]
df['bucket'] = pd.cut(df['score'], bins=bins, labels=labels, right=False)
df_grouped = df.groupby('bucket').size().cumsum() / len(df) * 100
return df_grouped.reset_index(name='cumulative_percentage')
# Example usage:
data = {'score': [39, 80, 73, 91, 92, 85, 41]}
df = pd.DataFrame(data)
result = bucket_scores(df)
```

This function categorizes the scores into predefined buckets and calculates the cumulative percentage of scores in each bucket.

### 26. Given a data frame of students’ favorite colors and test scores, write a function to select only those rows (students) where their favorite color is blue or red and their test grade is above 80.

This selection can be efficiently done using the `pandas`

library:

```
def select_students(df):
return df[(df['favorite_color'].isin(['blue', 'red'])) & (df['test_grade'] > 80)]
# Example usage:
data = {'favorite_color': ['green', 'red', 'blue'], 'test_grade': [91, 89, 95]}
df = pd.DataFrame(data)
selected_students = select_students(df)
```

This function filters the data frame based on the conditions provided, selecting students accordingly.

### 27. Write a function that returns the maximum number in the list.

Using Python’s built-in functions, you can find the maximum number easily:

```
def find_max(numbers):
return max(numbers)
# Example usage:
numbers = [1, 2, 3, 4, 5]
max_number = find_max(numbers)
```

This simple function returns the highest number in a list using the `max()`

function.

### 28. Write a function shortest_transformation to find the length of the shortest transformation sequence from begin_word to end_word through the elements of word_list.

This problem can be solved using a breadth-first search (BFS) approach:

```
from collections import deque
def shortest_transformation(begin_word, end_word, word_list):
word_set = set(word_list)
queue = deque([(begin_word, 1)])
while queue:
current_word, level = queue.popleft()
if current_word == end_word:
return level
for i in range(len(current_word)):
for c in 'abcdefghijklmnopqrstuvwxyz':
next_word = current_word[:i] + c + current_word[i+1:]
if next_word in word_set:
word_set.remove(next_word)
queue.append((next_word, level + 1))
return 0
# Example usage:
word_list = ["hot","dot","dog","lot","log","cog"]
length = shortest_transformation("hit", "cog", word_list)
```

This function explores possible transformations by changing each letter in the word and checks if the new word is in the list, tracking the number of transformations.

### 29. Given a dictionary with keys of letters and values of a list of letters, write a function nearest_key to find the key with the input value closest to the beginning of the list.

This can be achieved by iterating through the dictionary and finding the closest match:

```
def nearest_key(target, dictionary):
nearest = None
min_index = float('inf')
for key, values in dictionary.items():
if target in values:
idx = values.index(target)
if idx < min_index:
min_index = idx
nearest = key
return nearest
# Example usage:
dictionary = {'a': ['b', 'c', 'd'], 'b': ['a', 'd', 'e']}
nearest = nearest_key('d', dictionary)
```

This function searches for the target value in each list and keeps track of the key whose list contains the target at the smallest index.

### 30. Develop a k-means clustering algorithm in Python from the ground up.

Implementing k-means involves several steps including initializing centroids, assigning points to the nearest centroids, and updating centroids based on the mean of assigned points:

```
import numpy as np
def k_means(data, k, max_iters=100):
centroids = data[np.random.choice(len(data), k, replace=False)]
for _ in range(max_iters):
clusters = {i: [] for i in range(k)}
for point in data:
distances = [np.linalg.norm(point - centroid) for centroid in centroids]
cluster = distances.index(min(distances))
clusters[cluster].append(point)
new_centroids = np.array([np.mean(clusters[i], axis=0) for i in range(k)])
if np.all(centroids == new_centroids):
break
centroids = new_centroids
return centroids, clusters
# Example usage:
data = np.random.rand(100, 2) # 100 points in 2D space
centroids, clusters = k_means(data, 3)
```

This function initializes centroids randomly, then iteratively reassigns points to the nearest centroid and updates centroids based on the mean of points in each cluster until convergence.

These advanced Python data science interview questions and answers, complete with code snippets, will help you demonstrate your technical proficiency and problem-solving skills in your upcoming interviews.

*Kickstart your Data Science journey by enrolling in GUVI’s Data Science Career Program where you will master technologies like MongoDB, Tableau, PowerBI, Pandas, etc., and build interesting real-life projects.*

*Alternatively, if you want to explore Python through a self-paced course, try GUVI’s Python course.*

## Concluding Thoughts…

Throughout this article, we have explored a diverse array of Python data science interview questions, charting a course from basic inquiries to advanced challenges.

This journey aimed to fortify your understanding and enhance your readiness for the many facets of data science interviews.

We endeavored to present a detailed roadmap that not only clarifies Python’s applicability in data science but also equips you with the acumen to approach technical interviews with confidence.

As we conclude, remember that the knowledge and examples provided herein should serve as a launchpad for further exploration and preparation.

## FAQs

**1. Is pursuing a career in data science still advisable in 2024?**

Absolutely. Choosing a career in data science continues to be a smart and profitable decision in 2024.

**2. What is a ‘list’ in the context of Python programming during interviews?**

In Python, a ‘list’ refers to an ordered collection of elements that can include various types. Lists are mutable, allowing modifications such as changing an element’s value or adjusting the list’s size by adding or removing elements. They are defined using square brackets with elements separated by commas.

**3. How is Python described in interviews?**

Python is described as a high-level, general-purpose programming language that supports object-oriented programming. Often referred to as a scripting language, Python is widely used for developing web applications, webpages, and graphical user interface (GUI) applications. Its popularity is largely due to its versatility.

## Did you enjoy this article?