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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM