How To Split Data In CSV Using Python

In this tutorial, we will learn how to split data in a CSV file using Python. We will use the csv module, which is included in Python’s standard library, to read and write CSV files. By the end of this tutorial, you’ll be able to split data from a large CSV file into smaller files based on specific conditions.

This can be useful, for instance, when you have a large dataset that needs to be divided into smaller, more manageable chunks for processing or analysis.

Step 1: Import the csv module

First, you’ll need to import the csv module into your Python script. This will make the CSV-related functions and methods available for use in your code. Add the following line to your script:

Step 2: Read the CSV file

Next, you’ll need to open and read the contents of your CSV file. Use the following code snippet to achieve this:

Replace 'example.csv' with the path to your CSV file, e.g., 'data/my_large_dataset.csv'. In this snippet, we’re using the with statement to ensure the file is closed properly after we’re done working with its contents. The csv.reader() function is used to create a CSV reader object that can iterate over the rows of the file.

Step 3: Split the data based on a condition

Now that you have the CSV data available in your script, you can process it and split it based on your chosen condition. For example, let’s say you want to split your dataset based on the value in the first column of the CSV file. You can use the following code snippet to do this:

Here, we’re using a dictionary called output_files to store the data for each split file. The key is the value we’re using as the basis for the split (in this case, the value in the first column). We then append the entire row to the corresponding list in the dictionary. You can modify the condition by changing the key variable in the code snippet.

Step 4: Write the data to separate CSV files

Finally, you can write the split data to separate CSV files using the csv.writer() function. Here’s how you can do that:

This code snippet iterates over the output_files dictionary and writes each set of rows to a new CSV file named <key>_output.csv. The newline="" parameter is used to ensure consistent line endings across different platforms.

Full Code Sample


In this tutorial, we’ve learned how to split data from a CSV file into smaller files using Python’s csv module. With some minor modifications, you can adapt this code to split your data based on different conditions and use it to process large or complex datasets. The ability to split and manipulate CSV data efficiently is a valuable skill when working with Python and data analysis tasks.