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