按技术和工厂名称汇总 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 Turbine
Barry,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 电厂数据的主要内容,如果未能解决你的问题,请参考以下文章