pandas处理csv,分组统计

需求: /tmp/demo/data下有10个csv文件,按col0和col1分组分别统计col2和col3总和并计算col2和col3的商

# encoding:utf-8
import pandas 
import os


data_root = '/tmp/demo/data/'          
all_csv =  '/tmp/demo/all.csv' 
result_csv = '/tmp/demo/result.csv'

#-----------------------------------------------
# 将所有的文件合并到一个总和文件all_csv中

# 如果已经存在总和文件则删除总和文件防止历史干扰

if os.path.exists(all_csv):
    os.remove(all_csv)
# 获取所有的csv文件 data_list = [data_root+_ for _ in os.listdir(data_root)] # 把第一个文件写到汇总文件,并包含表头 all_head = pandas.read_csv(data_list[0]) all_head.to_csv(all_csv,encoding="utf_8_sig",index=False) # 把剩余的文件合并到汇总文件,不包含表头 for i in range(1, len(data_list)): all_i = pandas.read_csv(data_list[i]) all_i.to_csv(all_csv,encoding="utf_8_sig",index=False, header=False, mode='a+') # 读取汇总文件 all_all = pandas.read_csv(all_csv, encoding="utf-8") # 按"col0","col1"列分组统计col2 col3的总和 res = all_all.groupby(["col0","col1"]).agg({"col2":sum, "col3":sum}).reset_index() # 添加一列col4(col2/col3) res.insert(3,"col4",res["col2"]/res["col3"]) print(res) # 把结果写进结果文件 res.to_csv(result_csv, encoding="utf_8_sig",index=False)
原文地址:https://www.cnblogs.com/smileyes/p/11245679.html