aboutsummaryrefslogtreecommitdiff
path: root/datasets/gdp_croatia/convert.py
diff options
context:
space:
mode:
Diffstat (limited to 'datasets/gdp_croatia/convert.py')
-rw-r--r--datasets/gdp_croatia/convert.py83
1 files changed, 83 insertions, 0 deletions
diff --git a/datasets/gdp_croatia/convert.py b/datasets/gdp_croatia/convert.py
new file mode 100644
index 0000000..4f85979
--- /dev/null
+++ b/datasets/gdp_croatia/convert.py
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+Dataset conversion script
+
+Author: Gertjan van den Burg
+
+"""
+
+import json
+import argparse
+import clevercsv
+
+
+def parse_args():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("input_file", help="File to convert")
+ parser.add_argument("output_file", help="File to write to")
+ return parser.parse_args()
+
+
+def main():
+ args = parse_args()
+
+ with open(args.input_file, "r", newline="", encoding="UTF-8-SIG") as fp:
+ reader = clevercsv.reader(
+ fp, delimiter=",", quotechar='"', escapechar=""
+ )
+ rows = list(reader)
+ rows = rows[4:]
+ header = rows.pop(0)
+
+ as_dicts = []
+ for row in rows:
+ as_dicts.append({h: v for h, v in zip(header, row)})
+
+ croatia = next(
+ (d for d in as_dicts if d["Country Name"] == "Croatia"), None
+ )
+
+ tuples = []
+ for key in croatia:
+ try:
+ ikey = int(key)
+ except ValueError:
+ continue
+ if not croatia[key]:
+ continue
+ tuples.append((ikey, int(croatia[key])))
+
+ name = "gdp_croatia"
+ longname = "GDP Croatia"
+ time = [str(t[0]) for t in tuples]
+ time_fmt = "%Y"
+ series = [
+ {
+ "label": "GDP (constant LCU)",
+ "type": "int",
+ "raw": [t[1] for t in tuples],
+ }
+ ]
+
+ data = {
+ "name": name,
+ "longname": longname,
+ "n_obs": len(time),
+ "n_dim": len(series),
+ "time": {
+ "type": "string",
+ "format": time_fmt,
+ "index": list(range(len(time))),
+ "raw": time,
+ },
+ "series": series,
+ }
+
+ with open(args.output_file, "w") as fp:
+ json.dump(data, fp, indent="\t")
+
+
+if __name__ == "__main__":
+ main()