按技术和工厂名称汇总 CSV 电厂数据

Posted

技术标签:

【中文标题】按技术和工厂名称汇总 CSV 电厂数据【英文标题】:Summing up CSV power plant data by technology and plant name 【发布时间】:2018-07-31 23:47:24 【问题描述】:

我有一个关于美国发电厂的Form 860 data 的问题。

它是按块组织的,而不是按工厂组织的。要变得有用,必须将容量数字相加。

我如何获得每个工厂的每种技术的总产能(按名称或 ID)?

Plant ID,Plant Name,Nameplate Capacity (MW),Technology,...
3,Barry,153.1,Natural Gas Steam Turbine,..
3,Barry,153.1,Natural Gas Steam Turbine,..
3,Barry,403.7,Conventional Steam Coal,..
3,Barry,788.8,Conventional Steam Coal,..
3,Barry,195.2,Natural Gas Fired Combined Cycle,..
3,Barry,195.2,Natural Gas Fired Combined Cycle,..
10,Greene County,299.2,Natural Gas Steam Turbine,..
10,Greene County,269.2,Natural Gas Steam Turbine,..
10,Greene County,80,Natural Gas Fired Combustion Turbine,..
10,Greene County,80,Natural Gas Fired Combustion Turbine,..
10,Greene County,80,Natural Gas Fired Combustion Turbine,..

在Calc或Excel中SUMIF只做总结很容易,但是如何按技术过滤呢? 所以我最好通过纯 CSV 处理来做到这一点。

这可能与例如Python?感谢您提供任何好的答案!

【问题讨论】:

在 Excel 中,您可以使用数据透视表非常简单地做到这一点。 【参考方案1】:

借助 Python,您可以使用第 3 方 Pandas 库:

将您的 Excel 文件读入数据框

import pandas as pd

df = pd.read_excel('file_in.xlsx')

用 sum 计算 GroupBy

Grouper 键可以是标量或列表。例如,这些都是有效的:

res = df.groupby('Technology')['Capacity'].sum().reset_index()
res = df.groupby(['ID', 'Name'])['Capacity'].sum().reset_index()

我们使用reset_index 返回一个数据框。

导出回 Excel

res.to_excel('file_out.xlsx')

【讨论】:

我希望将“技术”列中的条目作为列标题。像这样? Name,Capacity,Conventional Steam Coal,Natural Gas Fired Combined Cycle,Natural Gas Steam TurbineBarry,2569.5,1192.5,1070.8,306.2这可行吗? 是的,但应该是a new question。 这里是:***.com/questions/51634368/create-pandas-pivot-table【参考方案2】:

Pandas 库将是一个有用的库。用于处理数据帧。

导入 Pandas 库

import pandas as pd

读取表单 csv 文件

df = pd.read_csv("form.csv")

求和

df.groupby('PlantName')['NameplateCapacity'].sum()

【讨论】:

以上是关于按技术和工厂名称汇总 CSV 电厂数据的主要内容,如果未能解决你的问题,请参考以下文章

Python - 尝试按年份分组并汇总销售数据时出错

全国计算机等级考试三级数据库技术-知识点汇总

电厂能源管理系统开发,数字化电厂管理系统建设

关于SQL多类别汇总取最大值的实现

多表型大文件GWAS结果使用R语言提取汇总

工厂模式汇总