Open In App

How to Add Numbers in a Csv File Using Python

Last Updated : 04 Apr, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

When working with CSV files in Python, adding numbers in the CSV file is a common requirement. This article will guide you through the process of adding numbers within a CSV file. Whether you’re new to data analysis or an experienced practitioner, understanding this skill is vital for efficient data management

CSV (Comma-Separated Values): A common file format for storing tabular data in plain text format, where each line represents a row, and values within a row are separated by commas.

Add Numbers in a CSV File Using Python

Below are the code examples of how to add numbers in a CSV file in Python:

Example 1: Add Values of All Columns of the CSV File

The file structure consists of two files: “main.py” and “numbers.csv“.

numbers.csv

A,B
1,2
3,4
5,6

In this example, below code reads a CSV file called “numbers.csv”, adds the values from two columns, and saves the results to a new CSV file called “numbers_updated.csv“. It iterates through each row of the data, extracts values from columns A and B, performs addition, handles non-numeric values, and writes the updated data back to the new CSV file.

main.py

Python3
import csv

# Step 1: Read the CSV File
with open('numbers.csv', 'r') as file:
    reader = csv.reader(file)
    data = list(reader)

# Step 2: Perform Addition Operation
for row in data:
    try:
        a = int(row[0])
        b = int(row[1])
        row.append(a + b)
    except ValueError:
        row.append('')

# Step 3: Write Back to CSV File
with open('numbers_updated.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

print("Addition completed and updated CSV file created successfully.")

Output

Addition completed and updated CSV file created successfully.

numbers_updated.csv

A,B,
1,2,3
3,4,7
5,6,11

Example 2: Add Values of Specific Column of CSV file

The file structure consists of two files: “main.py” and “input.csv“.

input.csv

Name, Age, Score
John, 25, 85.5
Amy, 31, 92.2
Sam, 28, 78.9

In below example, we are using csv.reader to read the CSV file (eg. input.csv) and store its contents into a suitable data structure, such as a list of lists or a Pandas DataFrame. Then, Iterate over the data and sum up the numbers using the Decimal class for precision. Assuming the numbers are in a specific column, we can access that column by its index.

Python3
import csv
from decimal import Decimal, InvalidOperation

# Reads the CSV file and returns the data as a list of rows.
def read_csv_file(file_name):
    data = []
    with open(file_name, 'r') as file:
        csv_reader = csv.reader(file)
        for row in csv_reader:
            data.append(row)
    return data

# Iterates over the data and calculates the sum of numbers in a specific column.
def sum_numbers(data, column_index):
    total = Decimal(0)
    for row in data:
        try:
            number = Decimal(row[column_index])
            total += number
        except (ValueError, InvalidOperation):
            print(f"Invalid value in row: {row}")
    return total

# Writes the total to a new CSV file.
def write_total_to_csv(total, output_file):
    with open(output_file, 'w', newline='') as file:
        csv_writer = csv.writer(file)
        csv_writer.writerow(['Total'])
        csv_writer.writerow([total])
        print(f"Total: {total}")

# Displays the total on the console.
def display_total(total):
    print(f"Total: {total}")

# Driver's code
data = read_csv_file('input.csv')

# Adjust the column index according to CSV file
total = sum_numbers(data, column_index=2)

# Output the total to a new CSV file
write_total_to_csv(total, 'output.csv')

Output

Invalid value in row: ['Name', ' Age', ' Score']
Total: 256.6

output.csv

Total
256.6


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads