Hey小伙伴们,今天来聊聊如何用Python读取200万行的CSV数据,这在处理大数据时超级实用哦!🚀
我们得了解CSV文件其实就是一种文本文件,里面存储的是表格数据,用逗号分隔,Python里有几个库可以轻松读取这种文件,比如csv
和pandas
,当数据量特别大时,比如200万行,我们就需要一些技巧来优化性能了。
使用`csv`模块
Python内置的csv
模块可以逐行读取CSV文件,这对于大文件来说是一个不错的选择,因为它不会一次性将整个文件加载到内存中。
import csv 打开CSV文件 with open('data.csv', mode='r', encoding='utf-8') as file: reader = csv.reader(file) for row in reader: # 处理每一行数据 print(row)
这段代码会一行一行地读取文件,非常适合处理大文件,如果你需要进行复杂的数据处理,比如数据筛选、排序等,csv
模块可能就不够用了。
使用`pandas`模块
pandas
是一个强大的数据处理库,它提供了read_csv
函数来读取CSV文件,直接读取200万行可能会消耗大量内存。
import pandas as pd 读取CSV文件 df = pd.read_csv('data.csv') print(df.head())
为了避免内存问题,我们可以使用chunksize
参数来分批读取文件。
chunk_size = 10000 # 每次读取10000行 for chunk in pd.read_csv('data.csv', chunksize=chunk_size): # 处理每个chunk print(chunk.head())
这样,每次只加载10000行到内存中,可以大大减少内存的使用。
优化内存使用
在使用pandas
时,还可以通过指定数据类型来减少内存消耗,如果某个列的数据范围很小,可以指定为int8
或int16
,而不是默认的int64
。
dtypes = { 'column1': 'int8', 'column2': 'float32', # 更多列... } df = pd.read_csv('data.csv', dtype=dtypes)
并行处理
如果CPU核心多,可以考虑并行处理数据。pandas
和Dask
可以结合使用,Dask
是一个并行计算库,可以轻松扩展pandas
的并行处理能力。
import dask.dataframe as dd ddf = dd.read_csv('data.csv') 使用Dask进行并行操作 result = ddf.groupby('column1').sum().compute()
使用数据库
对于非常大的数据集,将数据存储在数据库中,然后通过SQL查询来处理可能是更高效的方法,Python可以通过sqlite3
或sqlalchemy
等库与数据库交互。
import sqlite3 conn = sqlite3.connect('data.db') cursor = conn.cursor() cursor.execute("SELECT * FROM data LIMIT 10") print(cursor.fetchall())
存储为HDF5或Parquet
对于非常大的数据集,可以考虑将CSV文件转换为HDF5或Parquet格式,这两种格式都支持高效的数据压缩和读取。
df.to_hdf('data.h5', key='df', mode='w') 或者 df.to_parquet('data.parquet')
可以使用pandas
或pyarrow
来读取这些格式的文件。
处理大型CSV文件时,记得监控内存和CPU的使用情况,适时调整策略,希望这些小技巧能帮助你在数据的海洋中畅游无阻!🌊📊
记得点赞和转发哦,让更多的朋友也能轻松处理大数据!👍🔄
还没有评论,来说两句吧...