How to Add Numbers in a Csv File Using Python (original) (raw)

Last Updated : 04 Apr, 2024

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