读取上千个csv文件,每个文件名不按照顺序排列,每个文件格式一样,列名分别为a,date ,time ,chepai ,jindu, weidu, v, passger,其中属性time是整型,范围为0到240000,读取完上千个文件得到总数据后需要将属性time每隔1500划分为96个区间,标号从0-95,并替换原来的time列,再根据属性date,time分组求得v的平均值v1,最后结果形式为date,time,v1,保存在一个新的csv文件中,由于数据量太大,必须提高运行效率,且不能超过python编译环境的memory
时间: 2023-09-26 08:07:27 浏览: 127
可以使用pandas库进行数据处理。以下是一个可能的解决方案:
```python
import pandas as pd
import os
# 定义划分区间的函数
def divide_time(x):
return int(x/1500)
# 定义读取csv并处理的函数
def process_csv(file_path):
# 读取csv文件
df = pd.read_csv(file_path)
# 转换时间格式为整型
df['time'] = df['time'].astype(int)
# 将time划分为96个区间
df['time'] = df['time'].apply(divide_time)
# 根据日期和时间分组求平均值
df = df.groupby(['date', 'time'])['v'].mean().reset_index()
return df
# 读取所有csv文件并合并处理结果
all_df = pd.DataFrame()
for file_name in os.listdir('path/to/csv/folder'):
if file_name.endswith('.csv'):
file_path = os.path.join('path/to/csv/folder', file_name)
df = process_csv(file_path)
all_df = pd.concat([all_df, df])
# 保存结果到新的csv文件
all_df.to_csv('path/to/output.csv', index=False)
```
这个方案使用了pandas的一些常用函数,如`read_csv`、`astype`、`groupby`和`mean`等,可以很方便地处理大量数据。另外,为了防止内存溢出,我们在每次处理完一个csv文件后就将其结果与之前所有文件的结果合并,这样可以避免一次性读取所有文件导致内存溢出的问题。
阅读全文