CSV vs Parquet vs Apache Arrow: A PyArrow Benchmark on 500K–1M Rows

Introduction

CSV vs Parquet vs Apache Arrow is one of the most common comparisons in modern data engineering. While CSV files are simple and widely supported, they are no longer the best choice for large-scale analytical workloads. Modern columnar formats such as Apache Parquet and Apache Arrow IPC (Feather) provide significant improvements in storage efficiency, read/write performance, and memory utilization.

To better understand these differences, I created a PyArrow Benchmark in Google Colab using Python, Pandas, and PyArrow. The benchmark compares CSV, Apache Parquet, and Apache Arrow (Feather) on datasets ranging from 500,000 to 1 million rows.

The results clearly demonstrate why organizations building data lakes, analytics platforms, and machine learning pipelines are increasingly adopting columnar storage formats.


Benchmark Environment

The benchmark was conducted using the following technologies:

  • Python 3
  • Pandas
  • PyArrow
  • Google Colab

The benchmark measured:

  • Storage size
  • Write speed
  • Read speed
  • Memory consumption
  • Column projection performance

This PyArrow Benchmark was designed to simulate common data engineering tasks and evaluate how each file format performs under real-world conditions.


CSV vs Parquet vs Apache Arrow Storage Comparison

Storage efficiency is one of the biggest advantages of columnar data formats.

File FormatFile SizeImprovement
CSV23.74 MBBaseline
Apache Arrow IPC (Feather)7.97 MB~66% Smaller
Apache Parquet (Snappy)6.94 MB~70% Smaller
Apache Parquet (ZSTD)4.98 MB~79% Smaller

Key Observation

Apache Parquet with ZSTD compression produced the smallest file size, making it an excellent choice for cloud storage services like Amazon S3, Azure Blob Storage, and Google Cloud Storage.


Write Performance Results

Writing data quickly is critical for ETL jobs and data ingestion pipelines.

File FormatWrite Time
Apache Arrow (Feather)0.18 sec
CSV4.68 sec

Result

Apache Arrow (Feather) completed the write operation approximately 26× faster than CSV.

This makes Feather an excellent option for temporary datasets, intermediate processing, and data science workflows.


Read Performance Results

Reading data efficiently is equally important for analytics and reporting.

File FormatRead Time
CSV0.422 sec
Apache Parquet / Feather~0.059 sec

Result

Parquet and Feather were nearly 7× faster than CSV when loading the complete dataset into memory.

This performance improvement can significantly reduce query execution time and improve user experience in analytics applications.


Column Projection: The Hidden Superpower

One of the biggest advantages of CSV vs Parquet vs Apache Arrow is the ability of columnar formats to perform column projection.

Instead of loading the entire dataset, I read only two columns:

['country', 'amount']

Results

  • Read Time: 0.026 seconds
  • Memory Usage: 7.82 MB

Unlike CSV files, which require reading every column, Parquet and Feather allow applications to load only the required columns.

This feature alone can dramatically improve performance in dashboards, reporting systems, and machine learning workflows.


Which File Format Should You Choose?

Apache Parquet (ZSTD)

Choose Apache Parquet when you need:

  • Excellent compression
  • Reduced cloud storage costs
  • Data lakes
  • ETL pipelines
  • Apache Spark
  • DuckDB
  • Snowflake
  • BigQuery
  • Faster analytical queries through predicate pushdown

Apache Arrow IPC (Feather)

Choose Feather when you need:

  • Extremely fast read/write operations
  • In-memory analytics
  • Python-to-Python data exchange
  • Jupyter Notebook workflows
  • Data science experiments

CSV

CSV is still useful for:

  • Sharing small datasets
  • Importing/exporting data
  • Legacy systems
  • Human-readable files

However, for analytical workloads, CSV falls behind modern columnar formats in both performance and storage efficiency.


Key Takeaways

From this PyArrow Benchmark, several important conclusions emerged:

  • Apache Parquet (ZSTD) achieved the highest compression ratio.
  • Apache Arrow (Feather) delivered the fastest write performance.
  • Parquet and Feather provided significantly faster read speeds than CSV.
  • Column projection dramatically reduced both read time and memory usage.
  • Modern columnar formats are better suited for analytics, ETL, AI, and machine learning workloads.

Google Colab Notebook

You can reproduce this benchmark using the complete Google Colab notebook:

Google Colab: https://lnkd.in/dMhyikT2

Feel free to fork the notebook, experiment with different compression algorithms, and compare the results on your own datasets.


Conclusion

This CSV vs Parquet vs Apache Arrow comparison clearly shows that choosing the right storage format is more than just a technical preference—it’s a performance decision.

If your applications process large datasets, modern columnar formats like Apache Parquet and Apache Arrow can significantly reduce storage costs, improve read/write performance, and optimize memory usage.

This PyArrow Benchmark demonstrates that moving beyond CSV is one of the easiest ways to improve data engineering workflows without changing your business logic.

Whether you’re building analytics dashboards, ETL pipelines, AI applications, or cloud-native data platforms, Parquet and Arrow should be part of your technology stack.


About the Author

Akhilesh Singh Shrinet is a Software Architect specializing in Healthcare Systems, Risk Adjustment (RA), AI/ML, Data Engineering, and Serverless Cloud Architecture. He shares practical tutorials, performance benchmarks, and real-world software engineering insights to help developers build scalable, high-performance applications using modern technologies.


Frequently Asked Questions

Is Parquet better than CSV?

Yes. Parquet offers significantly better compression, faster read performance, and supports column projection, making it ideal for analytical workloads.

When should I use Apache Arrow (Feather)?

Use Feather when you need extremely fast data exchange between Python applications or for interactive data science workflows.

Why is CSV slower?

CSV stores data row by row and requires parsing the entire file during reads. Columnar formats like Parquet and Arrow read only the data you request, resulting in much better performance.

Which format is best for data engineering?

For most production data engineering pipelines, Apache Parquet is the preferred choice because of its compression, scalability, and compatibility with modern analytics platforms.

Leave a Comment