-
Notifications
You must be signed in to change notification settings - Fork 10
/
downtime_categories.py
35 lines (25 loc) · 1.06 KB
/
downtime_categories.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""Downtime categories
Generating turbine downtime statistics
"""
# import libraries
import pandas as pd
data_cat = pd.read_csv("data/processed/downtime_categories.csv")
data_ts = pd.read_csv(
"data/processed/downtime_timeseries.csv",
lineterminator="\n",
parse_dates=["timestamp_start", "timestamp_end"]
)
data_ts["period"] = data_ts["timestamp_end"] - data_ts["timestamp_start"]
data_ts["period"] = data_ts["period"].dt.total_seconds() / (60 * 60)
data = pd.DataFrame(data_ts.groupby(["TurbineCategory_id"]).count()["id"])
data.rename(columns={"id": "frequency"}, inplace=True)
data["Category"] = data.index
data["period"] = data_ts.groupby(["TurbineCategory_id"]).sum()["period"]
data["frequency/t/y"] = data["frequency"] / (25 * 2.5)
data["period/t/y"] = data["period"] / (25 * 2.5)
data_cat = data_cat[data_cat["Type"] == "Turbine"]
data_cat = data_cat.drop(columns=["Type"])
data = pd.concat([data, data_cat], axis=1)
data.fillna(0, inplace=True)
data.sort_values(by="frequency", inplace=True)
data.to_csv("data/processed/downtime_categories_stats.csv")