Read CSV into a list of lists or tuples or dictionaries | Import csv to list in Python.
In this article, we will demonstrate how we can import a CSV into a list, list of lists or a list of tuples in python. We will be using pandas module for importing CSV contents to the list without headers.
Example Dataset :
CSV File name – data.csv
Id,Name,Course,City,Session 21,Jill,DSA,Texas,Night 22,Rachel,DSA,Tokyo,Day 23,Kirti,ML,Paris,Day 32,Veena,DSA,New York,Night
Read a CSV into list of lists in python :
1. Importing csv to a list of lists using csv.reader :
CSV.reader
is a python built-in function from the CSV module which will help us read the CSV file into the python. Then passing the reader object into the list()
will return a list of lists.
Let’s see the implementation of it.
#Program : from csv import reader #Opening the csv file as a list of lists in read mode with open('data.csv', 'r') as csvObj: #The object having the file is passed into the reader csv_reader = reader(csvObj) #The reader object is passed into the list( ) to generate a list of lists rowList = list(csv_reader) print(rowList)
Output : [['Id', 'Name', 'Course', 'City', 'Session'], ['21', 'Jill', 'DSA', 'Texas', 'Night'], ['22', 'Rachel', 'DSA', 'Tokyo', 'Day'], ['23', 'Kirti', 'ML', 'Paris', 'Day'], ['32', 'Veena', 'DSA', 'New York', 'Night']]
2. Selecting specific value in csv by specific row and column number :
We can also select particular rows and columns from the CSV file by using Pandas. We have to read the CSV into a dataframe excluding the header and create a list of lists.
Let’s see the implementation of it.
#Program : import pandas as pd # Create a dataframe from the csv file dfObj = pd.read_csv('data.csv', delimiter=',') # User list comprehension # for creating a list of lists from Dataframe rows rowList = [list(row) for row in dfObj.values] # Print the list of lists i.e. only rows without the header print(rowList)
Output : [[21, 'Jill', 'DSA', 'Texas', 'Night'], [22, 'Rachel', 'DSA', 'Tokyo', 'Day'], [23, 'Kirti', 'ML', 'Paris', 'Day'], [32, 'Veena', 'DSA', 'New York', 'Night']]
3. Using Pandas to read csv into a list of lists with header :
To include the header row, we can first read the other rows like the previous example and then add the header to the list.
Let’s see the implementation of it.
#Program : import pandas as pd # Create a dataframe from the csv file dfObj = pd.read_csv('data.csv', delimiter=',') # User list comprehension # for creating a list of lists from Dataframe rows rowList = [list(row) for row in dfObj.values] #Adding the header rowList.insert(0, dfObj.columns.to_list()) # Print the list of lists with the header print(rowList)
Output : [['Id', 'Name', 'Course', 'City', 'Session'], [21, 'Jill', 'DSA', 'Texas', 'Night'], [22, 'Rachel', 'DSA', 'Tokyo', 'Day'], [23, 'Kirti', 'ML', 'Paris', 'Day'], [32, 'Veena', 'DSA', 'New York', 'Night']]
Reading csv into list of tuples using Python :
Let’s add the contents of CSV file as a list of tuples. Each tuple will be representing a row and each value in the tuple represents a column value. Just like the way we added the contents into a list of lists from CSV, we will read the CSV file and then pass it into list function to create a list of tuples. The only difference here is the map( )
function that accepts function and input list arguments.
Let’s see the implementation of it.
#Program : from csv import reader # open file in read mode with open('data.csv', 'r') as readerObj: # here passing the file object to reader() to get the reader object csv_reader = reader(readerObj) #Read all CSV files into the tuples tuplesList = list(map(tuple, csv_reader)) # display the list of tuples print(tuplesList)
Output : [('Id', 'Name', 'Course', 'City', 'Session'), ('21', 'Jill', 'DSA', 'Texas', 'Night'), ('22', 'Rachel', 'DSA', 'Tokyo', 'Day'), ('23', 'Kirti', 'ML', 'Paris', 'Day'), ('32', 'Veena', 'DSA', 'New York', 'Night')]
Reading csv into list of tuples using pandas & list comprehension :
We can load the contents of a CSV file into a dataframe by using read_csv( )
. Then using list comprehension we can convert the 2D numpy array into a list of tuples.
Let’s see the implementation of it.
#Program : import pandas as pd # Create a dataframe object from the csv file dfObj = pd.read_csv('data.csv', delimiter=',') # Create a list of tuples for Dataframe rows using list comprehension tuplesList = [tuple(row) for row in dfObj.values] # Print the list of tuple print(tuplesList)
Output : [(21, 'Jill', 'DSA', 'Texas', 'Night'), (22, 'Rachel', 'DSA', 'Tokyo', 'Day'), (23, 'Kirti', 'ML', 'Paris', 'Day'), (32, 'Veena', 'DSA', 'New York', 'Night')]
Reading csv into list of dictionaries using python :
We can also read the contents of a CSV file into dictionaries in python where each dictionary in the list will be a row from the CSV file. The CSV file contents are opened in read mode then they are passed into the Dict_reader( )
as a reader object, then it is passed into the list.
Let’s see the implementation of it.
#Program : from csv import DictReader # open file in read mode with open('data.csv', 'r') as readerObj: # pass the reader file object to DictReader() to get the DictReader object dict_reader = DictReader(readerObj) # get a list of dictionaries from dct_reader dictList = list(dict_reader) # print the list of dict print(dictList)
Output : [OrderedDict([('Id', '21'), ('Name', 'Jill'), ('Course', 'DSA'), ('City', 'Texas'), ('Session', 'Night')]), OrderedDict([('Id', '22'), ('Name', 'Rachel'), ('Course', 'DSA'), ('City', 'Tokyo'), ('Session', 'Day')]), OrderedDict([('Id', '23'), ('Name', 'Kirti'), ('Course', 'ML'), ('City', 'Paris'), ('Session', 'Day')]), OrderedDict([('Id', '32'), ('Name', 'Veena'), ('Course', 'DSA'), ('City', 'New York'), ('Session', 'Night')])]