Reading Csv File Line by Line in Python
Intro: In this article, I will walk y'all through the different ways of reading and writing CSV files in Python.
Table of Contents:
- What is a CSV?
- Reading a CSV
- Writing to a CSV
i. What is a CSV?
CSV stands for "Comma Separated Values." It is the simplest form of storing information in tabular course every bit patently text. It is of import to know to work with CSV because we mostly rely on CSV data in our twenty-four hours-to-day lives as information scientists.
Structure of CSV:
We have a file named "Salary_Data.csv." The commencement line of a CSV file is the header and contains the names of the fields/features.
Later the header, each line of the file is an observation/a record. The values of a tape are separated by "comma."
2. Reading a CSV
CSV files tin can be handled in multiple ways in Python.
two.one Using csv.reader
Reading a CSV using Python'southward inbuilt module called csv using csv.reader object.
Steps to read a CSV file:
1. Import the csv library
import csv
two. Open the CSV file
The .open() method in python is used to open up files and return a file object.
file = open up('Salary_Data.csv') blazon(file) The blazon of file is "_io.TextIOWrapper" which is a file object that is returned by the open() method.
iii. Utilize the csv.reader object to read the CSV file
csvreader = csv.reader(file)
4. Extract the field names
Create an empty list called header. Employ the side by side() method to obtain the header.
The .adjacent() method returns the current row and moves to the side by side row.
The first time you run next() it returns the header and the next time you run it returns the first record and so on.
header = [] header = adjacent(csvreader) header
5. Excerpt the rows/records
Create an empty listing called rows and iterate through the csvreader object and append each row to the rows list.
rows = [] for row in csvreader: rows.append(row) rows
6. Close the file
.shut() method is used to close the opened file. Once it is closed, we cannot perform any operations on it.
file.close()
Complete Code:
import csv file = open("Salary_Data.csv") csvreader = csv.reader(file) header = next(csvreader) impress(header) rows = [] for row in csvreader: rows.suspend(row) print(rows) file.shut() Naturally, we might forget to close an open file. To avoid that nosotros can apply the with()argument to automatically release the resources. In simple terms, there is no need to call the .shut() method if nosotros are using with() argument.
Implementing the above code using with() statement:
Syntax: with open(filename, mode) as alias_filename:
Modes:
'r' – to read an existing file,
'w' – to create a new file if the given file doesn't exist and write to it,
'a' – to append to existing file content,
'+' – to create a new file for reading and writing
import csv rows = [] with open("Salary_Data.csv", 'r) every bit file: csvreader = csv.reader(file) header = side by side(csvreader) for row in csvreader: rows.append(row) impress(header) print(rows) 2.ii Using .readlines()
Now the question is – "Is information technology possible to fetch the header, rows using merely open() and with() statements and without the csv library?" Let's see…
.readlines() method is the answer. Information technology returns all the lines in a file as a list. Each detail of the listing is a row of our CSV file.
The first row of the file.readlines() is the header and the rest of them are the records.
with open('Salary_Data.csv') as file: content = file.readlines() header = content[:i] rows = content[1:] impress(header) impress(rows) **The 'n' from the output can be removed using .strip() method.
What if we take a huge dataset with hundreds of features and thousands of records. Would it be possible to handle lists??
Here comes the pandas library into the picture.
two.3 Using pandas
Steps of reading CSV files using pandas
1. Import pandas library
import pandas as pd
ii. Load CSV files to pandas using read_csv()
Basic Syntax: pandas.read_csv(filename, delimiter=',')
data= pd.read_csv("Salary_Data.csv") data 3. Extract the field names
.columns is used to obtain the header/field names.
data.columns
4. Excerpt the rows
All the data of a data frame can exist accessed using the field names.
data.Bacon
3. Writing to a CSV file
We tin can write to a CSV file in multiple ways.
iii.1 Using csv.writer
Let's presume we are recording 3 Students information(Name, M1 Score, M2 Score)
header = ['Name', 'M1 Score', 'M2 Score'] data = [['Alex', 62, lxxx], ['Brad', 45, 56], ['Joey', 85, 98]]
Steps of writing to a CSV file:
one. Import csv library
import csv
2. Ascertain a filename and Open the file using open()
3. Create a csvwriter object using csv.writer()
4. Write the header
5. Write the residue of the information
code for steps 2-5
filename = 'Students_Data.csv' with open(filename, 'w', newline="") every bit file: csvwriter = csv.writer(file) # 2. create a csvwriter object csvwriter.writerow(header) # 4. write the header csvwriter.writerows(data) # 5. write the rest of the information
Below is how our CSV file looks.
3.2 Using .writelines()
Iterate through each listing and catechumen the list elements to a string and write to the csv file.
header = ['Proper name', 'M1 Score', 'M2 Score'] data = [['Alex', 62, 80], ['Brad', 45, 56], ['Joey', 85, 98]] filename = 'Student_scores.csv' with open up(filename, 'w') as file: for header in header: file.write(str(header)+', ') file.write('n') for row in data: for 10 in row: file.write(str(x)+', ') file.write('n') 3.3. Using pandas
Steps to writing to a CSV using pandas
1. Import pandas library
import pandas as pd
2. Create a pandas dataframe using pd.DataFrame
Syntax: pd.DataFrame(data, columns)
The data parameter takes the records/observations and the columns parameter takes the columns/field names.
header = ['Name', 'M1 Score', 'M2 Score'] data = [['Alex', 62, 80], ['Brad', 45, 56], ['Joey', 85, 98]] data = pd.DataFrame(data, columns=header)
three. Write to a CSV file using to_csv()
Syntax: DataFrame.to_csv(filename, sep=',', index=False)
**separator is ',' by default.
alphabetize=False to remove the index numbers.
data.to_csv('Stu_data.csv', index=False) Below is how our CSV looks like
End Notes:
Thank you for reading till the conclusion. Past the finish of this article, we are familiar with dissimilar means of handling CSV files in Python.
I hope this article is informative. Experience costless to share information technology with your study buddies.
References:
Cheque out the consummate lawmaking from the GitHub repo.
Other Weblog Posts by me
Experience free to check out my other blog posts from my Analytics Vidhya Profile.
Y'all can find me on LinkedIn, Twitter in case you would desire to connect. I would be glad to connect with you.
For immediate exchange of thoughts, please write to me at [e-mail protected].
Source: https://www.analyticsvidhya.com/blog/2021/08/python-tutorial-working-with-csv-file-for-data-science/
0 Response to "Reading Csv File Line by Line in Python"
Post a Comment