Posted on Leave a comment

Python List of Lists Group By – A Simple Illustrated Guide

This tutorial shows you how to group the inner lists of a Python list of lists by common element. There are three basic methods:

  1. Group the inner lists together by common element.
  2. Group the inner lists together by common element AND aggregating them (e.g. averaging).
  3. Group the inner lists together by common element AND aggregating them (e.g. averaging) using the Pandas external library.

Before we explore these three options in more detail, let’s give you the quick solution first using the Pandas library in our interactive shell:

You can run this code in your browser. If you want to learn about the Pythonic alternatives or you need a few more explanations, then read on!

Method 1: Group List of Lists By Common Element in Dictionary

Problem: Given a list of lists. Group the elements by common element and store the result in a dictionary (key = common element).

Example: Say, you’ve got a database with multiple rows (the list of lists) where each row consists of three attributes: Name, Age, and Income. You want to group by Name and store the result in a dictionary. The dictionary keys are given by the Name attribute. The dictionary values are a list of rows that have this exact Name attribute.

Solution: Here’s the data and how you can group by a common attribute (e.g., Name).

# Database:
# row = [Name, Age, Income]
rows = [['Alice', 19, 45000], ['Bob', 18, 22000], ['Ann', 26, 88000], ['Alice', 33, 118000]] # Create a dictionary grouped by Name
d = {}
for row in rows: # Add name to dict if not exists if row[0] not in d: d[row[0]] = [] # Add all non-Name attributes as a new list d[row[0]].append(row[1:]) print(d)
# {'Alice': [[19, 45000], [33, 118000]],
# 'Bob': [[18, 22000]],
# 'Ann': [[26, 88000]]}

You can see that the result is a dictionary with one key per name ('Alice', 'Bob', and 'Ann'). Alice appears in two rows of the original database (list of lists). Thus, you associate two rows to her name—maintaining only the Age and Income attributes per row.

The strategy how you accomplish this is simple:

  • Create the empty dictionary.
  • Go over each row in the list of lists. The first value of the row list is the Name attribute.
  • Add the Name attribute row[0] to the dictionary if it doesn’t exist, yet—initializing the dictionary to the empty list. Now, you can be sure that the key exist in the dictionary.
  • Append the sublist slice [Age, Income] to the dictionary value so that this becomes a list of lists as well—one list per database row.
  • You’ve now grouped all database entries by a common attribute (=Name).

So far, so good. But what if you want to perform some aggregation on the grouped database rows?

Method 2: Group List of Lists By Common Element and Aggregate Grouped Elements

Problem: In the previous example, you’ve seen that each dictionary value is a list of lists because you store each row as a separate list. But what if you want to aggregate all grouped rows?

Example: The dictionary entry for the key 'Alice' may be [[19, 45000], [33, 118000]] but you want to average the age and income values: [(19+33)/2, (45000+118000)/2]. How do you do that?

Solution: The solution is simply to add one post-processing step after the above code to aggregate all attributes using the zip() function as follows. Note that this is the exact same code as before (without aggregation) with three lines added at the end to aggregate the list of lists for each grouped Name into a single average value.

# Database:
# row = [Name, Age, Income]
rows = [['Alice', 19, 45000], ['Bob', 18, 22000], ['Ann', 26, 88000], ['Alice', 33, 118000]] # Create a dictionary grouped by Name
d = {}
for row in rows: # Add name to dict if not exists if row[0] not in d: d[row[0]] = [] # Add all non-Name attributes as a new list d[row[0]].append(row[1:]) print(d)
# {'Alice': [[19, 45000], [33, 118000]],
# 'Bob': [[18, 22000]],
# 'Ann': [[26, 88000]]} # AGGREGATION FUNCTION:
for key in d: d[key] = [sum(x) / len(x) for x in zip(*d[key])] print(d)
# {'Alice': [26.0, 81500.0], 'Bob': [18.0, 22000.0], 'Ann': [26.0, 88000.0]}

In the code, you use the aggregation function sum(x) / len(x) to calculate the average value for each attribute of the grouped rows. But you can replace this part with your own aggregation function such as average, variance, length, minimum, maximum, etc.

Explanation:

  • You go over each key in the dictionary (the Name attribute) and aggregate the list of lists into a flat list of averaged attributes.
  • You zip the attributes together. For example, zip(*d['Alice']) becomes [[19, 33], [45000, 118000]] (conceptually).
  • You iterate over each list x of this list of lists in the list comprehension statement.
  • You aggregate the grouped attributes using your own custom function (e.g. sum(x) / len(x) to average the attribute values).

See what happens in this code snippet in this interactive memory visualization tool (by clicking “Next”):

Method 3: Pandas GroupBy

The Pandas library has its own powerful implementation of the groupby() function. Have a look at the code first:

# Database:
# row = [Name, Age, Income]
rows = [['Alice', 19, 45000], ['Bob', 18, 22000], ['Ann', 26, 88000], ['Alice', 33, 118000]] import pandas as pd
df = pd.DataFrame(rows) print(df) ''' 0 1 2
0 Alice 19 45000
1 Bob 18 22000
2 Ann 26 88000
3 Alice 33 118000 ''' print(df.groupby([0]).mean()) ''' 1 2
0 Alice 26 81500
Ann 26 88000
Bob 18 22000 '''

Explanation:

  • Import the pandas library. Find your quick refresher cheat sheets here.
  • Create a DataFrame object from the rows—think of it as an Excel spreadsheet in your code (with numbered rows and columns).
  • Call the groupby() function on your DataFrame. Use the column index [0] (which is the Name attribute) to group your data. This creates a DataFrameGroupBy object.
  • On the DataFrameGroupBy object call the mean() function or any other aggregator function you want.
  • The result is the “spreadsheet” with grouped Name attributes where multiple rows with the same Name attributes are averaged (element-wise).

Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

Posted on Leave a comment

How to Filter a List of Lists in Python?

Short answer: To filter a list of lists for a condition on the inner lists, use the list comprehension statement [x for x in list if condition(x)] and replace condition(x) with your filtering condition that returns True to include inner list x, and False otherwise.

Lists belong to the most important data structures in Python—every master coder knows them by heart! Surprisingly, even intermediate coders don’t know the best way to filter a list—let alone a list of lists in Python. This tutorial shows you how to do the latter!

Problem: Say, you’ve got a list of lists. You want to filter the list of lists so that only those inner lists remain that satisfy a certain condition. The condition is a function of the inner list—such as the average or sum of the inner list elements.

Example: Given the following list of lists with weekly temperature measurements per week—and one inner list per week.

# Measurements of a temperature sensor (7 per week)
temperature = [[10, 8, 9, 12, 13, 7, 8], # week 1 [9, 9, 5, 6, 6, 9, 11], # week 2 [10, 8, 8, 5, 6, 3, 1]] # week 3

How to filter out the colder weeks with average temperature value <8? This is the output you desire:

print(cold_weeks)
# [[9, 9, 5, 6, 6, 9, 11], [10, 8, 8, 5, 6, 3, 1]]

There are two semantically equivalent methods to achieve this: list comprehension and the map() function. Let’s explore both variants next.

If you’re short on time, you can also get a quick overview by playing with the code in your web browser—I’ll explain the code after that.

Method 1: List Comprehension

The most Pythonic way of filtering a list—in my opinion—is the list comprehension statement [x for x in list if condition]. You can replace condition with any function of x you would like to use as a filtering condition. Only elements that are in the list and meet the condition are included in the newly created list.

Solution: Here’s how you can solve the above problem to filter a list of lists based on a function of the inner lists:

# Measurements of a temperature sensor (7 per week)
temperature = [[10, 8, 9, 12, 13, 7, 8], # week 1 [9, 9, 5, 6, 6, 9, 11], # week 2 [10, 8, 8, 5, 6, 3, 1]] # week 3 # How to filter weeks with average temperature <8? # Method 1: List Comprehension
cold_weeks = [x for x in temperature if sum(x)/len(x)<8]
print(cold_weeks)
# [[9, 9, 5, 6, 6, 9, 11], [10, 8, 8, 5, 6, 3, 1]]

The second and third list in the list of lists meet the condition of having an average temperature of less than 8 degrees. So those are included in the variable cold_weeks.

You can visualize the memory usage of this code snippet in the following interactive tool:

This is the most efficient way of filtering a list and it’s also the most Pythonic one. If you look for alternatives though, keep reading.

Related articles:

Method 2: Filter() Function

The filter(function, iterable) function takes a function as input that takes on argument (a list element) and returns a Boolean value that indicates whether this list element should pass the filter. All elements that pass the filter are returned as a new iterable object (a filter object).

You can use the lambda function statement to create the function right where you pass it as an argument. The syntax of the lambda function is lambda x: expression and it means that you use x as an input argument and you return expression as a result (that can or cannot use x to decide about the return value). For more information, see my detailed blog article about the lambda function.

# Measurements of a temperature sensor (7 per week)
temperature = [[10, 8, 9, 12, 13, 7, 8], # week 1 [9, 9, 5, 6, 6, 9, 11], # week 2 [10, 8, 8, 5, 6, 3, 1]] # week 3 # How to filter weeks with average temperature <8? # Method 2: Map()
cold_weeks = list(filter(lambda x: sum(x) / len(x) < 8, temperature))
print(cold_weeks)
# [[9, 9, 5, 6, 6, 9, 11], [10, 8, 8, 5, 6, 3, 1]]

Again, the second and third list in the list of lists meet the condition of having an average temperature of less than 8 degrees. So those are included in the variable cold_weeks.

The filter() function returns a filter object that’s an iterable. To convert it to a list, you use the list(...) constructor.

Play with this code by clicking “Next” in the interactive code visualization tool:

Related articles:

Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

Posted on Leave a comment

How to Show Only Unread Messages in Primary Gmail Tab?

This is a small trick I learned the hard way. When working through the massive amounts of emails, I often wondered: how to get only the unread ones in Gmail that are also in the primary tab?

Queries like these happen quite frequently when working with Gmail. As it turns out, there’s a simple solution:

Simply type the following command in your search bar:

in: category:primary is:unread

For coders, this is an easily understandable filter operation. We want to retrieve all emails from your inbox (in:) that are also in your primary tab (category:primary) and that are also unread (is:unread).

As it turns out, Gmail comes with powerful filtering options even way beyond what you’ve seen here. Here are all the search and filtering operators in Gmail (screenshot from this source):

Simply bookmark this page and come back if you run into the next Gmail search issue.

Posted on Leave a comment

Why You Need to Stop Learning to Code [Video]

Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

Posted on Leave a comment

How to Average a List of Lists in Python?

Problem: You have a list of lists and you want to calculate the average of the different columns.

Example: Given the following list of lists with four rows and three columns.

data = [[0, 1, 0], [1, 1, 1], [0, 0, 0], [1, 1, 0]]

You want to have the average values of the three columns:

[average_col_1, average_col_2, average_col_3]

There are three methods that solve this problem. You can play with them in the interactive shell and read more details below:

Method 1: Average in Python (No Library)

A simple one-liner with list comprehension in combination with the zip() function on the unpacked list to transpose the list of lists does the job in Python.

data = [[0, 1, 0], [1, 1, 1], [0, 0, 0], [1, 1, 0]] # Method 1: Pure Python
res = [sum(x) / len(x) for x in zip(*data)]
print(res)
# [0.5, 0.75, 0.25]

Do you love Python one-liners? I do for sure—I’ve even written a whole book about it with San Francisco Publisher NoStarch. Click to check out the book in a new tab:

Python One-Liners Book

You can visualize the code execution and memory objects of this code in the following tool (just click “Next” to see how one step of the code unfolds).

Method 2: Average with NumPy Library

You create a NumPy array out of the data and pass it to the np.average() function.

data = [[0, 1, 0], [1, 1, 1], [0, 0, 0], [1, 1, 0]] # Method 2: NumPy
import numpy as np
a = np.array(data)
res = np.average(a, axis=0)
print(res)
# [0.5 0.75 0.25]

The axis argument of the average function defines along which axis you want to calculate the average value. If you want to average columns, define axis=0. If you want to average rows, define axis=1. If you want to average over all values, skip this argument.

Method 3: Mean Statistics Library + Map()

Just to show you another alternative, here’s one using the map() function and our zip(*data) trick to transpose the “matrix” data.

data = [[0, 1, 0], [1, 1, 1], [0, 0, 0], [1, 1, 0]] # Method 3: Statistics + Map()
import statistics
res = map(statistics.mean, zip(*data))
print(list(res))
# [0.5, 0.75, 0.25]

The map(function, iterable) function applies function to each element in iterable. As an alternative, you can also use list comprehension as shown in method 1 in this tutorial. In fact, Guido van Rossum, the creator of Python and Python’s benevolent dictator for life (BDFL), prefers list comprehension over the map() function.

Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

Posted on Leave a comment

How to Remove Duplicates From a Python List of Lists?

What’s the best way to remove duplicates from a Python list of lists? This is a popular coding interview question at Google, Facebook, and Amazon. In this article, I’ll show you how (and why) it works—so keep reading!

How to remove all duplicates of a given value in the list?

Method 1: Naive Method

Algorithm: Go over each element and check whether this element already exists in the list. If so, remove it. The problem is that this method has quadratic time complexity because you need to check for each element if it exists in the list (which is n * O(n) for n elements).

lst = [[1, 1], [0, 1], [0, 1], [1, 1]] dup_free = []
for x in lst: if x not in dup_free: dup_free.append(x) print(dup_free)
# [[1, 1], [0, 1]]

Method 2: Temporary Dictionary Conversion

Algorithm: A more efficient way in terms of time complexity is to create a dictionary out of the elements in the list to remove all duplicates and convert the dictionary back to a list. This preserves the order of the original list elements.

lst = [[1, 1], [0, 1], [0, 1], [1, 1]] # 1. Convert into list of tuples
tpls = [tuple(x) for x in lst] # 2. Create dictionary with empty values and
# 3. convert back to a list (dups removed)
dct = list(dict.fromkeys(tpls)) # 4. Convert list of tuples to list of lists
dup_free = [list(x) for x in lst] # Print everything
print(dup_free)
# [[1, 1], [0, 1], [0, 1], [1, 1]]

All of the following four sub methods are linear-runtime operations. Therefore, the algorithm has linear runtime complexity and is more efficient than the naive approach (method 1).

  1. Convert into a list of tuples using list comprehension [tuple(x) for x in lst]. Tuples are hashable and can be used as dictionary keys—while lists can not!
  2. Convert the list of tuples to a dictionary with dict.fromkeys(tpls) to map tuples to dummy values. Each dictionary key can exist only once so duplicates are removed at this point.
  3. Convert the dictionary into a list of tuples with list(...).
  4. Convert the list of tuples into a list of lists using list comprehension [list(x) for x in lst].

Each list element (= a list) becomes a tuple which becomes a new key to the dictionary. For example, the list [[1, 1], [0, 1], [0, 1]] becomes the list [(1, 1), (0, 1), (0, 1)] the dictionary {(1, 1):None, (0, 1):None}. All elements that occur multiple times will be assigned to the same key. Thus, the dictionary contains only unique keys—there cannot be multiple equal keys.

As dictionary values, you take dummy values (per default).

Then, you convert the dictionary back to a list of lists, throwing away the dummy values.

Related blog articles:

Do Python Dictionaries Preserve the Ordering of the Keys?

Surprisingly, the dictionary keys in Python preserve the order of the elements. So, yes, the order of the elements is preserved. (source)

This is surprising to many readers because countless online resources like this one argue that the order of dictionary keys is not preserved. They assume that the underlying implementation of the dictionary key iterables uses sets—and sets are well-known to be agnostic to the ordering of elements. But this assumption is wrong. The built-in Python dictionary implementation in cPython preserves the order.

Here’s an example, feel free to create your own examples and tests to check if the ordering is preserved.

lst = ['Alice', 'Bob', 'Bob', 1, 1, 1, 2, 3, 3]
dic = dict.fromkeys(lst)
print(dic)
# {'Alice': None, 'Bob': None, 1: None, 2: None, 3: None}

You see that the order of elements is preserved so when converting it back, the original ordering of the list elements is still preserved:

print(list(dic))
# ['Alice', 'Bob', 1, 2, 3]

However, you cannot rely on it because any Python implementation could, theoretically, decide not to preserve the order (notice the “COULD” here is 100% theoretical and does not apply to the default cPython implementation).

If you need to be certain that the order is preserved, you can use the ordered dictionary library. In cPython, this is just a wrapper for the default dict implementation.

Method 3: Set Conversion

Given a list of lists, the goal is to remove all elements that exist more than once in the list.

Sets in Python allow only a single instance of an element. So by converting the list to a set, all duplicates are removed. In contrast to the naive approach (checking all pairs of elements if they are duplicates) that has quadratic time complexity, this method has linear runtime complexity. Why? Because the runtime complexity of creating a set is linear in the number of set elements. Now, you convert the set back to a list, and voilà, the duplicates are removed.

lst = list(range(10)) + list(range(10))
lst = list(set(lst))
print(lst)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # Does this also work for tuples? Yes! lst = [(10,5), (10,5), (5,10), (3,2), (3, 4)]
lst = list(set(lst))
print(lst)
# [(3, 4), (10, 5), (5, 10), (3, 2)]

However, converting a list to a set doesn’t guarantee to preserve the order of the list elements. The set loses all ordering information. Also, you cannot create a set of lists because lists are non-hashable data types:

>>> set([[1,2], [1,1]])
Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> set([[1,2], [1,1]])
TypeError: unhashable type: 'list'

But we can find a simple workaround to both problems as you’ll see in the following method.

Linear-Runtime Method with Set to Remove Duplicates From a List of Lists

This third approach uses a set to check if the element is already in the duplicate-free list. As checking membership on sets is much faster than checking membership on lists, this method has linear runtime complexity as well (membership has constant runtime complexity).

lst = [[1, 1], [0, 1], [0, 1], [1, 1]] dup_free = []
dup_free_set = set()
for x in lst: if tuple(x) not in dup_free_set: dup_free.append(x) dup_free_set.add(tuple(x)) print(dup_free)
# [[1, 1], [0, 1]]

This approach of removing duplicates from a list while maintaining the order of the elements has linear runtime complexity as well. And it works for all programming languages without you having to know implementation details about the dictionary in Python. But, on the other hand, it’s a bit more complicated.

Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

Posted on Leave a comment

How to Read a CSV File Into a Python List?

6 min read 

How to read data from a .csv file and add its column or row to the list? There are three main ways: 

  • Option 1 (the quickest): use the standard library 
  • Option 2 (the most preferred): use pandas.read_csv() 
  • Option 3 (optional): use csv.reader() 

Short answer 

The simplest option to read a .csv file into a list is to use it with open(“file”) as f: and apply the actions you need. You should also remember that such an approach has its limitations, as you’ll see in the tutorial. 

Prerequisites 

To read the .csv file, I used the following tools: 

  • Python 3.8
  • PyCharm IDE for convenient coding experience 
  • Sublime Text Editor for a manual check of the .csv file 

By default, you can read CSV files using other tools or even default, pre-installed programs you have on your machine, so it is just a matter of choice what tools to use. The codebase can be executed anywhere with the same results. 

What is the CSV Format? 

Nowadays, three main data formats are used for passing data from one machine to another: CSV, XML, and JSON. 

The abbreviation CSV stands for “comma-separated values”. As the name implies, it is just a list of elements separated by commas. It is the most straightforward format to transfer data and should be used if

  1. you need the most compact file size, or 
  2. you have a flat data structure. 

Keep in mind that CSV files do not give you such flexibility in presenting the data as the other two options. 

Related articles:

Example Task 

This is a real-world task in a simplified form. The goal is to read data from CSV file (70 KB) and form a list of all series codes present in the second line of it. 

The provided data is an open statistical data from the European Central Bank (ECB) in CSV format and present financial flows during the period. The file consist of three main fields: 

  1. series code 
  2. observed date (period, e.g., 2019Q4, 2020Q1, etc.) 
  3. observed value (data point, float number) 

Direct download link.

Data Preparation 

To focus on the parsing option, I suggest you download and extract a file beforehand. In the examples, the file will be placed on the Desktop, but you can put it anywhere you like. 

Script: 

import os import wget link = "http://sdw.ecb.europa.eu/export.do? mergeFilter=&removeItem=L&REF_AREA.252=I8&COUNTERPART_AREA.252=W0 &rc=&ec=&legendPub=published&oc=&df=true&DATASET=0&dc=&ACCOUNTING _ENTRY.252=A&node=9689710&showHide=&removedItemList=&pb=&legendNo r=&activeTab=&STO.252=F&STO.252=K7&STO.252=KA&STO.252=LE&legendRe f=reference&REF_SECTOR.252=S1&exportType=csv&ajaxTab=true" path = f"C:{os.environ['HOMEPATH']}\\Desktop\\data.csv" wget.download(link, path) 

Script breakdown: 

import os import wget

Import statements are used to install code base which was written by someone else before and is ready to use just by referring to it. Some them (e.g. wget) should be additionally installed using similar command: 

The following command will install the latest version of a module and its dependencies from the Python Packaging Index: 

python -m pip install SomePackage 

os package is used to perform basic operation with files and folders in your operating system. 

wget package is used to download files from websites. 

link = "http://sdw.ecb.europa.eu/export.do? mergeFilter=&removeItem=L&REF_AREA.252=I8&COUNTERPART_AREA.252=W0 &rc=&ec=&legendPub=published&oc=&df=true&DATASET=0&dc=&ACCOUNTING _ENTRY.252=A&node=9689710&showHide=&removedItemList=&pb=&legendNo r=&activeTab=&STO.252=F&STO.252=K7&STO.252=KA&STO.252=LE&legendRe f=reference&REF_SECTOR.252=S1&exportType=csv&ajaxTab=true" 

The string variable link is created which represents a direct download link. This link can be easily tested in any web-browser. 

path = f"C:{os.environ['HOMEPATH']}\\Desktop\\data.csv" 

string variable path is created which represents a path in your system where files will be downloaded later. 

The prefix “f” before the string makes it an “f-string” which means that you can use other variables in the string by using {placeholders}. In this case, variable os.environ[‘HOMEPATH’] refers to system variable (declared in the Windows system by default, not in your python script) and puts it into a string we just created. By default, HOMEPATH refers to the current user by C:\Users\%user% (you). 

wget.download(link, path)

The function call wget.download() triggers the file download from previously specified link and saves it by previously specified path. 

The result of this step is a ready-to-use CSV file on your Desktop. Now we can parse data from CSV file and extract series codes to list. 

Data Exploration 

It is a good practice to explore data before you start parsing it. In this case, you can see that series codes are present in the second row of data.csv

Option 1 (the Fastest): Use the Standard Library 

This is the fastest option of reading a file using the standard library. Assuming the file is prepared and located on your Desktop, you can use the script below. This is the easiest way of getting data on the list. However, it has its drawbacks. 

Input: 

import os path = f"C:{os.environ['HOMEPATH']}\\Desktop\\data.csv" with open(path, "r") as f: print(list(f.readlines()[1].split(","))[1:]) 

Output: 

[‘QSA.Q.N.I8.W0.S1.S1.N.A.F.F._Z._Z.XDC._T.S.V.N._T’,... ‘QSA.Q.N.I8.W0.S1.S1.N.A.LE.F89.T._Z.XDC._T.S.V.N._T’]

Script breakdown: 

with open(path, "r") as f: print(list(f.readlines()[1].split(","))[1:]) 

The import statement and variable assignment is skipped as it was described previously and the main attention is given to the last statements. 

This is a combined statement of three parts: 

  1. The “with” statement, in the general meaning, allows us to define what code block (actions) we want to do with the object while it is “active”. In this case, we want to tell python that it has to do some actions while the file is open, and when all statements are completed, close it. 
  2. The “open” statement allows us to open a file and place it is into Python memory. In this case, we open the previously given file (“path” variable) in “r” mode, which stands for “read”-only mode. 
  3. The “print” statement allows you to see output on your screen. In this case we
    1. take file object f with open(path, 'r') as f,
    2. read second line with f.readlines()[1],
    3. split the line by the , separator in f.readlines()[1].split(“,”),
    4. convert the to list list(f.readlines()[1].split(“,”)),
    5. return the list starting from second element as the first one is empty in list(f.readlines()[1].split(“,”))[1:], and
    6. print the result in print(list(f.readlines()[1].split(“,”))[1:]).

There is no specific documentation as this code base uses standard library which is built-in in Python. 

Pros/Cons: Such an approach allows the user to get an instant view of the CSV file and select the required data. You can use this for spot checks and simple transformations. It is important to remember that such an approach has the lowest amount of adjustable settings, and it requires lots of workarounds when transformations are complicated. 

Option 2 (the Most Preferred): Use pandas.read_csv() 

The most preferred option of reading .csv file is using the Pandas library (Pandas cheat sheets here). Pandas is a fast, powerful, flexible, and easy to use open-source data analysis and manipulation tool, built on top of the Python programming language. 

Pandas is usually used for more advanced data analysis where data is stored in a “DataFrame” which is basically like a table in excel. A DataFrame has a header row and an index column so that you can refer to table values by “column x row” intersection. 

Script: 

import os import pandas as pd path = f”C:{os.environ[‘HOMEPATH’]}\\Desktop\\data.csv” df = pd.read_csv(path, delimiter=”,”, skiprows=[0]) list = df.columns.to_list()[1:] print(list) 

Output: 

[‘QSA.Q.N.I8.W0.S1.S1.N.A.F.F._Z._Z.XDC._T.S.V.N._T’,... ‘QSA.Q.N.I8.W0.S1.S1.N.A.LE.F89.T._Z.XDC._T.S.V.N._T’] 

Script breakdown: 

df = pd.read_csv(path, delimiter=”,”, skiprows=[0])

In this dataframe, variable df is created from the .csv file by executing pandas method read_csv. In this case the method requires several arguments: file, delimiter and skiprows

The file is the same as used before. The delimiter is “,” which is a default option for .csv files, and it might be skipped. But it’s good to know that you can use any other delimiter. 

list = df.columns.to_list()[1:] print(list)

This line selects the column headers and puts them into a list starting from the second element going forward. The result is printed. 

Pros/Cons: Such an approach is relatively fast, visually appealing to the reader, and is fully adjustable using a consistent approach. Comparing to the first option when standard libraries are used, it requires additional packages to be installed. I personally believe that it is not a problem, and such a drawback can be neglected. But another point should not be skipped — the amount of data. This approach is inefficient when you need lots of “side” data, which is useless for your purpose. 

Full documentation is available here with more guides and instructions on how to use it. 

Option 3 (optional): use csv.reader() 

There is also another way how to read .csv files, which might be useful in certain circumstances. The csv module implements classes to read and write tabular data in CSV format. It allows programmers to say, “write this data in the format preferred by Excel,” or “read data from this file which was generated by Excel,” without knowing the precise details of the CSV format used by Excel. Programmers can also describe the CSV formats understood by other applications or define their own special-purpose CSV formats. 

Script: 

import os import csv path = f"C:{os.environ['HOMEPATH']}\\Desktop\\data.csv" with open(path, 'r') as f: wines = list(csv.reader(f, delimiter=","))[1][1:] 

Output: 

[‘QSA.Q.N.I8.W0.S1.S1.N.A.F.F._Z._Z.XDC._T.S.V.N._T’,... ‘QSA.Q.N.I8.W0.S1.S1.N.A.LE.F89.T._Z.XDC._T.S.V.N._T’]

Script breakdown: 

with open(path, 'r') as f: wines = list(csv.reader(f, delimiter=","))[1][1:] 

csv.reader() is a method which allows you to parse .csv file with specified delimiter. 

After that, we select the second row using first brackets “[1]” and after that, select all elements from that list starting from second “[1:]” using slicing

As this is a standard package, there is documentation at the official python website

Pros/Cons: Such an approach is relatively simple and has just a few lines of code. On the other hand, it requires an additional package to be installed. 

Summary 

You should remember that there are different ways of reading data from CSV files. Select the one which suits your needs most or has the best performance and runtime. 

Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

Posted on Leave a comment

Best Python IDE

Python is one of the best and well-reputed high-level programming languages since 1991. It is best for server-side development, AI, scripting, software development, and math. It works well on multiple platforms like Mac, Linux, Windows, and Raspberry Pi.

Developers use Python code editor’s software to program and debug the code easily. By using Python IDE, you can manage big codebases and achieve a better and quicker deployment.

Developers can use these IDEs to create web or desktop applications. DevOps engineers may also use it for continuous integration.

What’s an IDE and code editor?

IDE: The term IDE means Integrated Development Environment. It is the set of tools that enable programmers and coders to increase their productivity. It provides different ways of writing codes in any computer program.

Developers use text editors, testing platforms, code libraries, and compilers. They combine the most common activities like editing source code, debugging, compiler, and executable in a single application.

The IDE makes coders life easy because without an IDE, a developer needs to deploy, integrate, and manage all the tools individually. The IDE toolset simply brings all these tools together. It is more helpful to identify coding bugs and minimize coding mistakes and other errors.

Code Editor: Code editors are also known as lightweight editors. They are not as best as IDE’s, but still, they are handy, fast, and simple to use. They are great for editing files instantly.

This program is specifically designed for editing source code, and it might be a stand-alone application. Code editors may also have some plugins, directory level syntax analyzers, or autocompleters, so they are not much different from IDEs.

The code editor helps programmers in many ways like it makes editors more skilled at writing codes. Code editors are the personal assistant that will examine code for developers and show them all the results. It tells coders where they need to edit their code.

The most common examples of code editors are Atom, TextMate, notepad++, bluefish, NetBeans, vim, Geany, etc.

IDE and code editor resemble in many ways, but the main difference is that IDE works on a project-level where we need to analyze project structure and many other things. But, Code editor is great for one file mostly, and it is much faster than IDE.

There are multiple IDEs for Python, but here is the collection of some of the Best Python IDE for different environments.

Best Python IDE for Mac

Let’s discuss the best Python IDEs for the MacOS.

1. Pydev

Pydev is the feature-rich, and open-source Python IDE that is best to use for mac. It supports code completion, Django integration, code completion with auto-import, code analysis, and type hinting.

Pydev comes with a debugger, token browser, refactoring, code coverage, unit test integration, and Pylint integration. It can also be best for Jython, Python, and IronPython development.

Pros

  • Maven Integration and Support
  • Subversion/Git integration
  • Simplified IDE makes it easy to write efficient code.
  • Debugging is very easy in Pydev.

Cons

  • Eclipse has a large footprint
  • Updated versions require to build plugins and migrate projects
  • Sometimes crashes on loading big projects.

2. GNU Emacs

GNU Emacs is one of the best Python editors since always. It is compatible with many operating systems, including mac. GNU is an extendable and self-documenting editor with an on to go display. The developers of GNU are always upgrading it for better results.

Furthermore, GNU Emacs adopts the lisp coding language and syntax coloring. It offers Unicode support as well.

Pros

  • Enable developers to perform better.
  • Compatible with many platforms.
  • Enables customization of a variety of skills.

Cons

  • Somehow complex than other IDEs
  • Takes time to learn in the initial stages.

3. SciTE

It is the SCIntilla based text editor, and you can use it for mac. It is quite a useful editor for running and building different applications and programs. It is a powerful, flexible, and portable editor.

It is the free source code editor that comes with the source code and license that allows use in any free project or commercial project. Its features are useful for debugging and editing code.

Pros

  • Flexible and light-weight.
  • Built-in shell and powerful editor.
  • Simple graphical user interface
  • Syntax highlighting for many languages.

Cons

  • Pretty hard to configure
  • Missing file browser
  • No extensions or themes.

Best Python IDE for Windows

These are the three top Python IDEs for Windows:

1. PyCharm

PyCharm is one of the most loved Python IDEs. PyCharm is JetBrains IDE, who is well known for making developers stuff. For IntelliJ products, it is one of the most comfortable IDEs.

It has excellent tools and plugins to work with. Its advanced commercial edition owns thousands of professional features. Moreover, it serves as a reliable support tool to develop any kind of python application from backend applications to web apps.

Pros

  • Data science scripting
  • Connectivity with several databases
  • Quick and convenient to use and install
  • Update and remove plugins
  • Real-time verification of code
  • Search files by code snippet or names

Cons

  • The community edition is far behind the paid alternative.
  • Process of upgrading IDEs can be better
  • Full version is quite expensive
  • Some new versions use a lot of machine memory like java.

2. Wing IDE

Wing IDE is a product of Wingware, and it is well-reputed when the main concern is a powerful debugger. It is a lightweight but full-featured IDE with editing, code inspection, and testing features.

It is available in different versions like free edition, personal edition, and professional edition. It is the perfect choice for professional developers because it provides auto-completion, refactoring, and auto-editing that speed up the process of development.

Pros

  • Responsive support
  • Very easy to learn
  • Built-in debugger
  • Check for errors in the source code
  • Helps you to write readable and manageable code
  • Customized plug-ins

Cons

  • It provides less support to other programming languages.
  • Its price is high for a single user.
  • It has some kind of stability problems.

3. Eric Python IDE

It is the open-source, and full-featured editor and IDE. It is the best IDE for windows platform.

The best thing about Eric python IDE is that everyone can use it, whether they are students, beginners, or pro. Many lecturers and professors use it for teaching purposes as well. Moreover, it works on the cross-platform, and it has extensions and plug-ins for different IDE functionalities.

Pros

  • Integrated class browser.
  • Best project management.
  • Best to use for everyone.

Cons

  • The interface is somehow complex.
  • Auto-completion is not so advanced.
  • No tabbing for files.

Best Python IDE for Linux

These are the top Python IDEs for Linux:

1. IDLE

Idle is one of the best IDE for Linux as it is the standard Python development environment. IDLE stands for the integrated development environment, and it is the cross-platform that is best to use for both Windows and LINUX operating systems.

It is the best IDE that contains all the necessary functions and features you need to have python on your system. it is highly recommended for the Python beginner developers

Pros

  • Best for beginners
  • Written in Python/Tkinter
  • Integrated debugger
  • Easy to use
  • Autocomplete feature
  • Automatic identification for your code

Cons

  • No tabbing for files.
  • No shell instances.

2. PyDev For Eclipse

It is the feature-rich, and open-source Python IDE for the eclipse. It supports code completion, Django integration, code completion with auto-import, code analysis, and type hinting.

Pydev comes with a debugger, token browser, refactoring, code coverage, unit test integration, and Pylint integration. You can also find references using shortcut keys. Moreover, it can be great to use for Jython, Python, and IronPython development.

Pros

  • Maven Integration and Support
  • Subversion/Git integration
  • Simplified IDE makes it easy to write efficient code.
  • Debugging is very easy in Eclipse.

Cons

  • Eclipse has a large footprint
  • Updated versions require to build plugins and migrate projects
  • Sometimes crashes on loading big projects.

3. VS Code

Visual studio is the cross-platform editor for the different OS including Linux. It is Microsoft IDE that supports multiple programming languages. You just need to install the extension of the programming language.

The best thing about VS is that you can customize it, create your shortcut keys, change the theme, and other preferences. Install Python extension to activate support for python development and use it in your VS code.

Pros

  • Very active development with Microsoft backing.
  • Offers all the plugins you need
  • Stellar VSCode’s speed, almost comparable to ST3
  • Manages any npm-based application, made by “npm install”.

Cons

  • Sometimes the side preview plug-in doesn’t work properly.
  • There is no visibility into conflicting extensions.

Best Python IDE for Ubuntu

These are the best Python IDEs for Ubuntu:

1. Vim

Developers use vim as a command-line interface and a standalone application. It is best to use for college projects. It makes programming more fun, easy, and enjoyable.

Vim is loved by the Linux and Ubuntu-users. It is because it is highly customizable and fast. Vim makes debugging a lot easier, and it also helps to support many plug-ins and tools.

Pros

  • Vim is lightweight and fast.
  • It has a powerful plug-in model.
  • Free and open-source.
  • CL interface.
  • Provides great productivity

Cons

  • Somehow difficult to learn.
  • Poor support for internal tooling.
  • Feature discovery is difficult.
  • It needs a high effort to customize.

2. PyCharm

PyCharm is one of the most loved IDEs for Ubuntu. It is JetBrains Product who is well known for making developers things. For IntelliJ products, it is one of the most comfortable IDEs.

It has handy tools and plugins to work. You can also use its advanced commercial edition with hundreds of professional features. It also serves as a reliable support tool to develop any kind of python application from backend applications to web apps.

Pros

  • Data science scripting
  • Connectivity with several databases
  • Quick and convenient to use and install

Cons

  • The community edition is far behind the paid alternative.
  • Process of upgrading IDEs can be better

3. Atom

Atom is free and open-source with the same features as an integrated development environment. It supports almost all programming languages, including python. You can use the Atom editor on Ubuntu easily.

You can make Atom function like IDE by installing some plug-ins and extensions. It has a slick user interface. It provides many features like syntax highlighting in the code, diagnostics, auto-completion, etc.

Pros

  • Git integration
  • Plugin ecosystem
  • C++ development
  • Built-in package manager.
  • Smart auto-completion
  • Compatible and easy to use.

Cons

  • No starter packages
  • May need some improvements
  • Performance needs some attention
  • File extensions dictate editing functionality

Best Python IDE for Beginners

These are the top Python IDEs for beginner developers:

1. Spyder

It is the dedicated IDE for beginners, and it incorporates some very useful features that make it popular.

It facilitates coders and programmers to do programming easily and accurately. It’s code editor, debugger, and compiler make it the best choice for new learners. Moreover, the user doesn’t have to provide a compiler or interpreter; this IDE creates the environment itself.

Pros

  • Light-weight and fast.
  • Great for beginners
  • Provide online help

Cons

  • It is not very customizable.
  • Basic than counterparts like PyCharm.

2. Eric Python IDE

It is the open-source, and full-featured editor and IDE and it will work fine for you if you are a newbie.

The best thing about Eric python IDE is that everyone can use it, whether they are students, beginners, or pro. Many lecturers and professors use it for teaching purposes as well. Moreover, it works on the cross-platform, and it has extensions and plug-ins for different IDE functionalities.

Pros

  • Integrated class browser.
  • Best project management.
  • Best to use for beginners.

Cons

  • The interface is somehow complex.
  • Auto-completion is not so advanced.
  • No tabbing for files.

3. Sublime

Sublime is the light-weight editor with the API and package system. It provides powerful features like python scripting, multiple panes, plug-ins, and much more.

It can customize everything by itself. So users can code with efficiency, speed, and accuracy.

Pros

  • Text highlights are great for debugging.
  • Better find-replace feature than others.
  • Easily work with multiple projects without confusion.

Cons

  • Less and complicated plugins.
  • No auto-saving of documents.
  • Formatting a heavy file can be confusing.

Best Python IDE for Machine Learning

Are there any special IDEs for machine learning and AI? You bet! Check out those top IDEs for ML and AI:

1. Visual Studio

Visual studio is the best python IDE for machine learning. It is a Microsoft product, and it provides support for many programming languages. It is the heavy-weight IDE that offers code refactoring, debugging, profiling, and many other tools.

It provides full support for python language, including scientific computing, web development, and data science. It is the best choice if you want to debug python and C/C++ side by side.

Pros

  • Very active development with Microsoft backing.
  • Syntax highlighter for every programming language.
  • VSCode’s speed is awesome, almost comparable to ST3 which is natively built.
  • Manages any npm-based application
  • Highly pluggable architecture.

Cons

  • Sometimes the side preview plug-in doesn’t work properly.
  • The source code is a bit clunky.
  • There is no visibility into conflicting extensions.

2. Geany

It has been a Python machine learning IDE since 2005. It is quite a light-weight IDE that is written in C and C++. It might be tiny, but it provides the same functionality as other IDEs in the market.

Along with this, it provides support to the coder by highlighting syntax and line numbering as well. It has features like code completion, auto HTML, XML tags, braces closing, etc. it also provides code folding and support code navigation.

Pros

  • Light-weight and fast.
  • Built-in plugin manager.
  • Available on cross-platform.
  • Build-in terminal.
  • Native and actively free.
  • Syntax parsing and code line numbering.

Cons

  • It’s not very advanced.
  • Not enough third-party plug-ins.

3. Atom

It is another free and open-source editor with the features the same as an integrated development environment. It is the best choice for supporting almost all programming languages, including Python. You can use the Atom IDE for machine learning.

You can make Atom function like IDE by installing some plug-ins and extensions. It has a slick user interface. It provides many features like syntax highlighting in the code, diagnostics, auto-completion, etc.

Pros

  • Git integration
  • Plugin ecosystem
  • C++ development
  • Built-in package manager.
  • Smart auto-completion
  • Compatible and easy to use.
  • It is free even for commercial purposes.
  • It is mature and has a dedicated community.

Cons

  • No starter packages
  • May need some improvements
  • Performance needs some attention
  • File extensions dictate editing functionality

Best Python IDE for Raspberry Pie

Now, that’s specific—but there are some IDEs that are much better for Raspberry Pies. Read on to learn which ones are the best!

1. Geany

Geany is a lightweight graphical user interface IDE. It uses a text editor that uses scintilla and GTK+ with IDE. It is independent of a special desktop environment, and it requires only a few dependencies on other packages. It supports tons of programming languages.

Along with this, it provides support to the coder by highlighting syntax and line numbering as well. It has features like code completion, auto HTML, XML tags, braces closing, etc. it also provides code folding and support code navigation.

Pros

  • Light-weight and fast.
  • Built-in plugin manager.
  • Build-in terminal.
  • Syntax parsing and code line numbering.

Cons

  • Not enough third-party plug-ins.

2. Ninja

Ninja IDE is written purely in Python, and it supports multiple platforms like Linux, windows, mac for code execution. It is a cross-platform software that is exclusive to build Python applications and websites.

It is a very light-weight IDE that performs functionalities like file handling, code locating, going to lines and tabs, zoom editor, and automatic code identification. Moreover, it supports a few more languages other than python.

Pros

  • Extensible and syntax highlighting
  • Script runner
  • Allows you to search one or more words
  • Render HTML files
  • Easily locate code
  • Embedded Python console

Cons

  • Sometimes bad performance.
  • No new updations since 2013.

3. Code block

This IDE is also written in C++ using WX widgets as a graphical user interface in 2005. The code block is open-source, free and cross-platform IDE, and it supports multiple compilers like Visual C++, clang, and GCC.

This IDE is quite intelligent, and it also performs various functions like code folding, code completion, syntax highlighting, and much more. Code block also has several external plugins for different customizations. Moreover, it runs on various operating systems.

Pros

  • It is open-source with many libraries.
  • The debugger supports multi-threaded processes
  • It let you choose the compiler
  • You can use it on cross-platform

Cons

  • Poor code completion
  • Code is not easy to read

Best Python IDE for Data Science

What are the best IDEs for data science and data analytics? The difference between suitable and not-so-suitable editors is like 50 shades of grey. Start at the top!

1. PyCharm

PyCharm is a well-reputed python IDE by the data science developers. It has excellent tools and plugins to work with.

It is best for those who have experience of using different Jetbrains IDE. It is because the features and the interface can be similar. It also allows data science developers to integrate its tools and libraries such as Matplotib.

Pros

  • Data science scripting
  • Excellent tools and plugins.
  • Connectivity with several databases
  • Quick and convenient to use and install
  • Update and remove plugins
  • Real-time verification of code
  • Search files by code snippet or names

Cons

  • The community edition is far behind the paid alternative.
  • Process of upgrading IDEs can be better
  • Full version is quite expensive
  • Some new versions use a lot of machine memory like java.

2. Spyder

It is the dedicated IDE for data science developers, and it incorporates some very useful features that make it popular among them.

Spyder is built specifically for data science. It facilitates coders and programmers to do programming easily and accurately. Its code editor, debugger, and compiler make it the best choice for new learners. Moreover, if you are a beginner, you will like features like online help that allows you to search for library information.

Pros

  • Light-weight and fast.
  • Great for beginners
  • Provide online help

Cons

  • It is not very customizable.
  • Basic than counterparts like PyCharm.

3. Jupyter Notebook

Python notebooks have got a lot of attention in recent years as a tool showing code, and the results are amazing. It helps to lower the barrier to start with programming because the input is noticeable with output.

Jupyter lap is working to enable users to work with activities like Jupyter notebook and custom components in an interactive manner.

Pros

  • Strong to visualization functionalities.
  • Interaction with plots is convenient.
  • Concise documentation with code
  • The best tool for data science

Cons

  • The variable inspector is missing
  • No convenient file explorer view
  • Opening and exploring file is bit clunky
  • Absence of convenient visual debugging

Best Python IDE for Android

Programming Android? Then check out those awesome Python IDEs that belong to the best-in-class 100%!

1. IntelliJ IDEA

IntelliJ IDEA is one of the best python IDEs for android as it specializes in web and mobile app development. It uses java, groovy and other frameworks that are best for android app development.

The detailed documentation helps in integration that is also easy to understand. It has multiple plugins to perform different types of tasks. The assistance, unobtrusive intelligence, and inspections are also available with IDE. You can go in-depth coding, fast navigation, and error analysis by this IDE.

Pros

  • Available free of cost in the Github Student Developer Pack.
  • It has a lot of Configuration Options.
  • Integrating hundreds of useful features and tweaks, which makes programming easier.
  • Different plugins for even more customization.

Cons

  • Indexing can be a bit boring
  • It is not memory friendly.

2. Eclipse

Eclipse is the feature-rich, and open-source that is best for Python IDE for android. It supports code completion, Django integration, code completion with auto-import, code analysis, and type hinting.

It comes with a debugger, token browser, refactoring, code coverage, unit test integration, and Pylint integration to code the best python apps. It can also be best for Jython and IronPython development.

Pros

  • Maven Integration and Support
  • Subversion/Git integration
  • Simplified IDE makes it easy to write efficient code.
  • Debugging is very easy in eclipse.

Cons

  • Eclipse has a large footprint
  • Updated versions require to build plugins and migrate projects
  • Sometimes crashes on loading big projects.

3. Visual Studio Python IDE for Android

Visual studio is the cross-platform editor for the different OS including Android. It is Microsoft IDE that supports multiple programming languages. You just need to install the extension of the programming language.

The best thing about VS is that you can customize it, create your shortcut keys, change the theme, and other preferences. Install Python extension to activate support for python development and use it in your VS code.

Pros

  • Best Python Android IDE
  • Very active development with Microsoft backing.
  • Highly pluggable architecture for developers

Cons

  • Sometimes the side preview plug-in doesn’t work properly.
  • The source code is a bit clunky.
  • There is no visibility into conflicting extensions.

Best Python IDE with Debugger

Code is more or less buggy. If your code leans towards the former—check out those IDEs with powerful debugging functionality.

1. Eclipse + Pydev

It is a Python IDE with a lot of plugins, extensions, and debugging features. You can use it with other programming languages like C, C++, Python, and PHP.

Pydev is a plugin that allows eclipse to use as a python IDE that also supports the Jython and IronPython. It also uses some advanced techniques to provide elements such as code completion and analysis. It also offers features like interactive console, basic syntax highlighting, and many more.

Pros

  • Easy to learn
  • Allow debugging feature
  • Code completion and code analysis

Cons

  • The user interface is not user-friendly

2. Vim

It is the text editor that allows the manipulation of the text file and debugging feature as well. This software is quite better by now as compared to its old version.

It differs from the other Python’s IDEs in the modal mode of operation. It has 3 modes: normal, command, and command-line mode. It is free software which means you can easily adapt extensions and modify its configuration files.

Pros

  • Vim is lightweight and fast.
  • It has a powerful plug-in model.
  • Free and open-source.
  • Command-line interface.
  • Provides great productivity

Cons

  • Somehow difficult to learn.
  • Poor support for internal tooling.
  • Feature discovery is difficult.
  • It needs a high effort to customize.

3. GNU Emacs

GNU Emacs is one of the best Python IDEs with debugging features. It is compatible with many operating systems. GNU enables coders to perform better with a self-documenting editor with an on to go display. The developers of GNU are always upgrading it for better results.

Furthermore, GNU Emacs adopts the lisp coding language and syntax coloring. It offers Unicode support as well.

Pros

  • Enable developers to perform better.
  • Compatible with many platforms.
  • Enables customization of a variety of skills.

Cons

  • Somehow complex than other IDEs
  • Takes time to learn in the initial stages.

Best Python IDE for Engineers

Are you an engineer? I mean a true engineer (not a mere software engineer)? Then check out these IDEs that may be just the ones you’ve been looking for:

1. Enthought Canopy

This Python IDE is one of the best for scientists and engineers. The canopy comes with many integrated tools that are best for data analysis, app development, and data visualization. You can use its free or commercial license.

Currently, it ships above 450 python packages for data science. It also offers a graphical package manager to install, update, and remove packages from the user environment.

Pros

  • Providing scientific libraries, both open source, and Enthought’s libraries
  • Providing course training in python for general use and data analysis.
  • Canopy has a special debugging tool, especially for python.
  • The Documentation Browser is useful
  • The analytic Python package distribution is a win-win situation

Cons

  • Some Python libraries are slow.
  • Canopy does not support Python 3

2. Jupyter Notebook

Python notebooks have got a lot of attention in recent years as a tool showing code, and the results are amazing. It helps to lower the barrier to start with programming because the input is noticeable with output.

This IDE combines code, text, and images, thus providing an interstice data science environment for engineers. It has many integrated data science libraries. Jupyter lap is working to enable users to work with activities like Jupyter notebook and custom components in an interactive manner.

Pros

  • Data cleaning and transformation
  • Strong to visualization functionalities.
  • Statistical modeling

Cons

  • The variable inspector is missing
  • No convenient file explorer view

3. Rodeo

Rodeo is another python IDE for data science and machine learning projects. It helps you to explore data and plots, that’s why it is the best IDE for engineers. It is much like the RStudio IDE for the R programming language.

Furthermore, it provides syntax highlighting and auto-completion features. It is also supportive of the other platforms. Rodeo IDE also helps to keep track of functions and variables.

Pros

  • Highlight the bugs in the syntax.
  • Auto-completion benefits.
  • Supports Emacs and Vim
  • Tutorials for beginners
  • Keep track of variables
  • Data pane for managing files, packages, photos, and settings

Cons

  • It might load slowly sometimes.
  • This IDE is somehow complex

Best Python IDE for Algorithmic Trading

Money, money, money. Make more money with those best Python IDEs for algorithmic trading:

1. Spyder

Spyder is a light-weight open-source IDE comes pre-installed with Anaconda distribution. It stands for Scientific Python Development Environment and was built mainly for data science practitioners. It offers a large set of data visualization models to simplify financial analysis. The most promising feature of Spyder is its HELP toolbar where you can search a plethora of information related to modules or libraries.

Pros

  • Integrated with the essential data-centric libraries Such as Matplotlib, NumPy, Pandas, SciPy, and IPython.
  • Contains features, including code completion, static code analysis, advanced editing, interactive testing, introspection, and debugging.
  • A profiler determines the number of calls and runtime for every method and function called in a file.

Cons

  • User-interface is not appealing as PyCharm or Visual Studio

2. Algorithm IDE

If you want to code trading strategies, the Algorithm Integrated Development Environment is best for you. It uses Algorithm API to streamline your work process.

Pros

  • Smooth process of writing an algorithm
  • Build an algorithm with the same backtest engine as running a complete backtest.
  • Powerful debugger to inspect the details of backtesting
  • Extensive syntax and validation checks

Cons

  • The debugger is not available on the full backtest screens
  • You can’t use edits in the debugger

3. Codenvy

It offers you a feature-rich cloud-based development environment where you code, develop and enhance effectiveness. It has everything a python developer can expect from an IDE.

Pros

  • User-friendly and easy to set up
  • Intelligent and fast development environment.
  • Accessible on any OS.
  • Offers flexibility to write anything from native Android apps to web apps.

Cons

  • No keyboard shortcuts
  • Particular Git commands don’t fully execute correctly

Best Python IDE For Tensor Flow

We’re getting kind of specific here. But, yes, there are some Python IDEs that are almost perfect for developing TensorFlow apps. Check them out if this is you!

1. Ninja IDE

It is a cross-platform IDE that allows developers to create several applications, including tensor flow. Ninja IDE is designed to make the task of coding more enjoyable and easier.

Pros

  • Rich extensibility
  • Powerful code editor with smart plugins
  • Offer quick access to any function, file or class
  • Identify and highlight PEP8 and static errors in the document

Cons

  • Some sort of compatibility flaws with windows 10
  • Irritating to work with multiple programming languages

2. Sublime Text

If you need to write tensor flow applications, you can test out ideas on sublime. It is one of the most widespread text editors for code and markup. The tricky part of every application is debugging, which you can easily handle with Sublime debugger.

Pros

  • Accurate syntax suggestions.
  • Slick user-interface.
  • Easy to use for basic text manipulation.

Cons

  • It cannot highlight a particular portion of the text.
  • Often prompts to purchase a new version.

3. Jupyter Notebook

When you are dealing with complex tensorflow applications, Jupyter Notebook is best for code. It combines text, images, and code in an excellent way that will refresh a developer’s mind.

Pros

  • Concise documentation with code
  • The best tool for data science

Cons

  • Opening and exploring file is bit clunky
  • Absence of convenient visual debugging

Best Python IDE with Intellij

Intellij is very popular these days. These are the best Python IDEs with IntelliJ:

1. Jet Brains IDE (PyCharm)

JetBrains IDE PyCharm shares the same plugins and features as Intellij and offers all the necessary tools a python developer should want. You can keep control of the quality with testing assistance, inspections, smart refactorings, and PEP8 checks.

Pros

  • Update and remove plugins
  • Real-time verification of code
  • Search files by code snippet or names

Cons

  • Full version is quite expensive
  • Some new versions use a lot of machine memory like java.

2. Intellij IDEA

Every aspect of this IDE is designed to enhance a developer’s productivity. The IDE uses Groovy, JavaScript, and other frameworks and provides detailed documentation.

Pros

  • Multiple plugins to perform different types of tasks.
  • Support in-depth coding, quick navigation, and error analysis
  • Ergonomic programming environment with splendidly thought-out quick keys.

Cons

  • The IDE is very slow to start.
  • The complete package is a bit heavy.

3. WebStorm

It is a robust JavaScript IDE with all the features of IntelliJ. It is designed to maximize the performance of a modern developer by offering refactoring for TypeScript, JavaScript, style sheet languages, and many other popular web frameworks.

Pros

  • It offers On-the-fly error detection, intelligent code finishing and useful navigation
  • Seamless tool integration with linters, build tools and test runners options
  • Debug all the apps easily

Cons

  • Difficult to change the text color and size
  • Less intuitive organization at the left sidebar
  • Limited accessibility features.

Best Python IDE with Autocomplete

Auto… thi. sente…! Want to find the best Python IDEs that autocomplete your code, check out these ones:

1. IDLE

Every developer looks for the python IDE with autocomplete feature. IDLE is a popular Integrated Development Environment which is mainly used by newbie developers. It is a cross-platform developed purely in Python. It has a multi-window text editor with various features including smart indentation, call tips, python colorizing, and undo.

Pros

  • Supports auto code completion, and syntax highlighting like other IDE’s.
  • It has an integrated debugger with call stack visibility to boost the performance of developers.

Cons

  • Usage issues.
  • The very basic design of the interface that is numbering of line is missing in this IDE.

2. Wing

This IDE creates an intelligent development environment for a python developer. It has a smart debugger, auto code completion feature, and editor to make the development accurate and fun to complete. Wing supports the test-driven coding with Django testing, unit testing, pytesting framework.

Pros

  • A source browser to display all the variables used in the script.
  • An extra exception handling tab to debug the code.
  • An extract function under the refactor panel to maximize performance.

Cons

  • Does not support dark themes
  • Interface can be daunting at the beginning
  • The premium version is too expensive.

3. Geany

It is a lightweight graphical user interface IDE that has a text editor that uses scintilla and GTK+. It supports all types of programming languages and provides support to the coder by highlighting syntax and line numbering.

Pros

  • Auto-completion of code.
  • Available on cross-platform.
  • Syntax parsing and code line numbering.

Cons

  • Limited third-party plug-ins.

Best Python IDE for Data Visualization

More and more businesses rely on meaningful visualizations of their proprietary data. These IDEs help you produce them:

1. Visual Studio Code

It is a cross-platform, Microsoft IDE that supports multiple programming languages. You can customize it, create shortcut keys, and change the theme in this IDE. Just install Python extension to activate support for python development in VS Code.

Pros

  • Syntax highlighter for every programming language.
  • Highly pluggable architecture helps developers to configure their environment according to their choice.
  • Excellent data visualization

Cons

  • The source code is a bit clunky.

2. Rodeo

It is an open-source native python IDE for data science that was developed by Yhat. It has some amazing features, such as easy interaction with frames, plots, and data, syntax highlighting, auto-completion, and plots, built-in IPython support.

Pros

  • Clear data visualization
  • Good implementation of a scientific Python IDE

Cons

  • Has many bugs and problems
  • Overheating and memory issues

3. Angular IDE by CodeMix

Write your best code with the new source code editor. The Angular IDE has an excellent control panel where you can view your project in a particular browser, generate blocks like components, directives, and guards. With a quick drag and drop option, you can customize your control panel

Pros

  • Well designed interfaces promote excellent design and data visualization
  • It has smart open declaration commands
  • Offer unified debugging support through an external Google Chrome browser
  • Rich HTML template validation with auto-complete HTML element feature to keep coding moving.

Cons

  • The commercial pricing plan is costly

Best Python IDE for Hackers

Believe it or not—many people want to know the best IDE for hackers. Well, I don’t think that a hacker would ever ask such a question… But I try to answer it anyway.

1. Jet Brains IDE

Hackers only use IDEs for debugging and code analysis. There is no specific IDE designed for a hacker. But yes, you can use those Integrated Development environments with all the features needed in the code analysis. Jet Brains Popular IDEs are ideal for this purpose as they have all the smart features a hacker should need. You can use any of the JetBrains IDEs including PyCharm, Webstorm and IntelliJ IDEA.

Pros

  • Advanced Gradle build system
  • Hassle-free, easy to use interface
  • Intelligent code finishing and seamless tool integration

Cons

  • Very expensive

2. Atom

Atom is an open-source editor with the same features as an IDE. It supports almost all programming languages, including python. Atom can work like an IDE if you install some specific plug-ins and extensions.

Pros

  • Git integration
  • Smart auto-completion
  • It has a slick user interface and ideal for error diagnostics and auto code completion.

Cons

  • Needs some improvement in its accessibility

3. Komodo

A hacker needs swift coding with excellent performance of the IDE, and Komodo is exactly what a hacker want. Now you can code faster in any of the modern programming languages including Python, PHP, Golang, Perl, Ruby and more.

Pros

  • Visual debugger
  • Great editor with code refactoring, autocomplete, and syntax highlighting
  • Extensibility is ideal. You can add tons of add-ons to customize.

Cons

  • The free version lacks functionality, and the licensed version is expensive.

Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

Posted on Leave a comment

How to Remove Empty Lists from a List of Lists in Python?

Short answer: You can remove all empty lists from a list of lists by using the list comprehension statement [x for x in list if x] to filter the list.

In the following, you’ll learn about the two methods using list comprehension and the filter() function to remove all empty lists from a list of lists.

But before that, feel free to play with the code yourself:

Method 1: List Comprehension

How can you remove all empty lists from a list of lists? Say, you’ve got a list of lists

[[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]

and you want all empty lists removed to obtain the list of lists

[[1, 2, 3], [1, 2], [1, 2, 3, 4]].

Solution: Use list comprehension [x for x in list if x] to filter the list and remove all lists that are empty.

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print([x for x in lst if x])
# [[1, 2, 3], [1, 2], [1, 2, 3, 4]]

The condition if x evaluates to False only if the list x is empty. In all other cases, it evaluates to True and the element is included in the new list.

You can visualize the execution flow here by clicking the “Next” button:

Method 2: filter()

An alternative is to use the filter() function to remove all empty lists from a list of lists:

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print(list(filter(lambda x: x, lst)))

The filter() function takes two arguments:

  • the filter decision function to check for each element whether it should be included in the filtered iterable (it returns a Boolean value), and
  • the iterable to be filtered.

As filter decision function, you use the identity function that just passes the list through. Why does this work? Because only an empty list will be evaluated to False. All other lists will be evaluated to True (and, thus, pass the filtering test).

Related articles:

Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

Posted on Leave a comment

How to Print a List of List in Python?

Short answer: To print a list of lists in Python without brackets and aligned columns, use the ''.join() function and a generator expression to fill each string with enough whitespaces so that the columns align:

# Create the list of lists
lst = [['Alice', 'Data Scientist', '121000'], ['Bob', 'Java Dev', '99000'], ['Ann', 'Python Dev', '111000']] # Find maximal length of all elements in list
n = max(len(x) for l in lst for x in l) # Print the rows
for row in lst: print(''.join(x.ljust(n + 2) for x in row))

I’ll explain this code (and simpler variants) in the following video:

As an exercise, you can also try it yourself in our interactive shell:

Step-By-Step Problem Formulation

Do you want to print a list of lists in Python so that the format doesn’t look like a total mess? In this tutorial, I’ll show you how to orderly print a list of lists in Python—without using any external library.

Before you start to think about the solution, you should understand the problem. What happens if you print a list of lists? Well, let’s try:

lst = [['Alice', 'Data Scientist', 121000], ['Bob', 'Java Dev', 99000], ['Ann', 'Python Dev', 111000]]
print(lst)

The output is not very nice:

[['Alice', 'Data Scientist', 121000], ['Bob', 'Java Dev', 99000], ['Ann', 'Python Dev', 111000]]

Instead, you’d would at least want to see a beautiful output like this one where each row has a separate line and the rows are aligned:

[['Alice', 'Data Scientist', 121000], ['Bob', 'Java Dev', 99000], ['Ann', 'Python Dev', 111000]]

And maybe, you even want to see an output that aligns the three columns as well like this one:

Alice Data Scientist 121000 Bob Java Dev 99000 Ann Python Dev 111000 

I’ll show you all those different ways of printing a list of lists next. So let’s start with the easiest one:

Print List of Lists With Newline

Problem: Given a list of lists, print it one row per line.

Example: Consider the following example list:

lst = [[1, 2, 3], [4, 5, 6]]

You want to print the list of lists with a newline character after each inner list:

1 2 3
4 5 6

Solution: Use a for loop and a simple print statement:

lst = [[1, 2, 3], [4, 5, 6]] for x in lst: print(*x)

The output has the desired form:

1 2 3
4 5 6

Explanation: The asterisk operator “unpacks” all values in the inner list x into the print statement. You must know that the print statement also takes multiple inputs and prints them, whitespace-separated, to the shell.

Related articles:

Print List of Lists Without Brackets

To print a list of lists without brackets, use the following code again.

Solution: Use a for loop and a simple print statement:

lst = [[1, 2, 3], [4, 5, 6]] for x in lst: print(*x)

The output has the desired form:

1 2 3
4 5 6

But how can you print a list of lists by aligning the columns?

Print List of Lists Align Columns

Problem: How to print a list of lists so that the columns are aligned?

Example: Say, you’re going to print the list of lists.

[['Alice', 'Data Scientist', 121000], ['Bob', 'Java Dev', 99000], ['Ann', 'Python Dev', 111000]]

How to align the columns?

Alice 'Data Scientist', 121000], Bob 'Java Dev', 99000], Ann 'Python Dev', 111000]]

Solution: Use the following code snippet to print the list of lists and align all columns (no matter how many characters each string in the list of lists occupies).

# Create the list of lists
lst = [['Alice', 'Data Scientist', '121000'], ['Bob', 'Java Dev', '99000'], ['Ann', 'Python Dev', '111000']] # Find maximal length of all elements in list
n = max(len(x) for l in lst for x in l) # Print the rows
for row in lst: print(''.join(x.ljust(n + 2) for x in row))

The output is the desired:

Alice Data Scientist 121000 Bob Java Dev 99000 Ann Python Dev 111000 

Explanation:

  • First, you determine the length n (in characters) of the largest string in the list of lists using the statement max(len(x) for l in lst for x in l). The code uses a nested for loop in a generator expression to achieve this.
  • Second, you iterate over each list in the list of lists (called row).
  • Third, you create a string representation with columns aligned by ‘padding’ each row element so that it occupies n+2 characters of space. The missing characters are filled with empty spaces.

You can see the code in action in the following memory visualizer. Just click “Next” to see which objects are created in memory if you run the code in Python:

Related articles: You may need to refresh your understanding of the following Python features used in the code:

Print List of Lists with Pandas

Last but not least, I’ll show you my simple favorite: simply import the pandas library (the excel of Python coders) and print the DataFrame. Pandas takes care of pretty formatting:

lst = [['Alice', 'Data Scientist', '121000'], ['Bob', 'Java Dev', '99000'], ['Ann', 'Python Dev', '111000']] import pandas as pd
df = pd.DataFrame(lst)
print(df)

The output looks beautiful—like a spreadsheet in your Python shell:

 0 1 2
0 Alice Data Scientist 121000
1 Bob Java Dev 99000
2 Ann Python Dev 111000

Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!