【问题标题】:Summing up CSV power plant data by technology and plant name按技术和工厂名称汇总 CSV 电厂数据
【发布时间】: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 中,您可以使用数据透视表非常简单地做到这一点。

标签: python excel csv openoffice-calc


【解决方案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')

【讨论】:

【解决方案2】:

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

导入 Pandas 库

import pandas as pd

读取表单 csv 文件

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

求和

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2018-02-14
    • 2020-03-18
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多