From a6c702d58e4da28f5a05af2d90e5d901fe2bc97e Mon Sep 17 00:00:00 2001 From: Stefan Krawczyk Date: Thu, 28 Sep 2023 16:32:38 -0700 Subject: [PATCH] Adds hello_world contribution To show a basic dataflow and have people pull it in and start with it. --- .../hamilton/contrib/user/skrawcz/__init__.py | 0 .../hamilton/contrib/user/skrawcz/author.md | 10 +++ .../user/skrawcz/hello_world/README.md | 14 ++++ .../user/skrawcz/hello_world/__init__.py | 66 ++++++++++++++++++ .../contrib/user/skrawcz/hello_world/dag.png | Bin 0 -> 62641 bytes .../user/skrawcz/hello_world/requirements.txt | 1 + .../user/skrawcz/hello_world/tags.json | 7 ++ .../skrawcz/hello_world/valid_configs.jsonl | 2 + 8 files changed, 100 insertions(+) create mode 100644 contrib/hamilton/contrib/user/skrawcz/__init__.py create mode 100644 contrib/hamilton/contrib/user/skrawcz/author.md create mode 100644 contrib/hamilton/contrib/user/skrawcz/hello_world/README.md create mode 100644 contrib/hamilton/contrib/user/skrawcz/hello_world/__init__.py create mode 100644 contrib/hamilton/contrib/user/skrawcz/hello_world/dag.png create mode 100644 contrib/hamilton/contrib/user/skrawcz/hello_world/requirements.txt create mode 100644 contrib/hamilton/contrib/user/skrawcz/hello_world/tags.json create mode 100644 contrib/hamilton/contrib/user/skrawcz/hello_world/valid_configs.jsonl diff --git a/contrib/hamilton/contrib/user/skrawcz/__init__.py b/contrib/hamilton/contrib/user/skrawcz/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/contrib/hamilton/contrib/user/skrawcz/author.md b/contrib/hamilton/contrib/user/skrawcz/author.md new file mode 100644 index 000000000..99ae7d4c9 --- /dev/null +++ b/contrib/hamilton/contrib/user/skrawcz/author.md @@ -0,0 +1,10 @@ +# skrawcz + +Hi I'm Stefan Krawczyk. I am on of the co-creators of Hamilton. + +# Github +https://github.com/skrawcz +# Linkedin +https://www.linkedin.com/in/skrawczyk +# X (Twitter) +https://www.twitter.com/stefkrawczyk diff --git a/contrib/hamilton/contrib/user/skrawcz/hello_world/README.md b/contrib/hamilton/contrib/user/skrawcz/hello_world/README.md new file mode 100644 index 000000000..f8cce3951 --- /dev/null +++ b/contrib/hamilton/contrib/user/skrawcz/hello_world/README.md @@ -0,0 +1,14 @@ +# Purpose of this module + +This module implements a hello world dataflow to show transforming columns from a dataframe. + +You can pass in your own values for spend & signups, or use the default. + +# Configuration Options +This module can be configured with the following options: + - {"default": "True"} to run it without any inputs. + - {} to have to pass in `spend` and `signups`. + +# Limitations + +None to really note. diff --git a/contrib/hamilton/contrib/user/skrawcz/hello_world/__init__.py b/contrib/hamilton/contrib/user/skrawcz/hello_world/__init__.py new file mode 100644 index 000000000..2472fcd32 --- /dev/null +++ b/contrib/hamilton/contrib/user/skrawcz/hello_world/__init__.py @@ -0,0 +1,66 @@ +import logging + +logger = logging.getLogger(__name__) + +from hamilton import contrib + +with contrib.catch_import_errors(__name__, __file__, logger): + import pandas as pd + +from hamilton.function_modifiers import config, extract_columns + + +@extract_columns("spend", "signups") +@config.when(default="True") +def default_data() -> pd.DataFrame: + return pd.DataFrame( + { + "signups": pd.Series([1, 10, 50, 100, 200, 400]), + "spend": pd.Series([10, 10, 20, 40, 40, 50]), + } + ) + + +def avg_3wk_spend(spend: pd.Series) -> pd.Series: + """Rolling 3 week average spend.""" + return spend.rolling(3).mean() + + +def spend_per_signup(spend: pd.Series, signups: pd.Series) -> pd.Series: + """The cost per signup in relation to spend.""" + return spend / signups + + +def spend_mean(spend: pd.Series) -> float: + """Shows function creating a scalar. In this case it computes the mean of the entire column.""" + return spend.mean() + + +def spend_zero_mean(spend: pd.Series, spend_mean: float) -> pd.Series: + """Shows function that takes a scalar. In this case to zero mean spend.""" + return spend - spend_mean + + +def spend_std_dev(spend: pd.Series) -> float: + """Function that computes the standard deviation of the spend column.""" + return spend.std() + + +def spend_zero_mean_unit_variance(spend_zero_mean: pd.Series, spend_std_dev: float) -> pd.Series: + """Function showing one way to make spend have zero mean and unit variance.""" + return spend_zero_mean / spend_std_dev + + +if __name__ == "__main__": + # run as a script to test Hamilton's execution + import __init__ as hello_world + + from hamilton import base, driver + + dr = driver.Driver( + {"default": "True"}, + hello_world, + adapter=base.DefaultAdapter(), + ) + # create the DAG image + dr.display_all_functions("dag", {"format": "png", "view": False}) diff --git a/contrib/hamilton/contrib/user/skrawcz/hello_world/dag.png b/contrib/hamilton/contrib/user/skrawcz/hello_world/dag.png new file mode 100644 index 0000000000000000000000000000000000000000..5fe3989782380584af5832c5d7592414eb1593af GIT binary patch literal 62641 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⁡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 literal 0 HcmV?d00001 diff --git a/contrib/hamilton/contrib/user/skrawcz/hello_world/requirements.txt b/contrib/hamilton/contrib/user/skrawcz/hello_world/requirements.txt new file mode 100644 index 000000000..fb6c7ed7e --- /dev/null +++ b/contrib/hamilton/contrib/user/skrawcz/hello_world/requirements.txt @@ -0,0 +1 @@ +pandas diff --git a/contrib/hamilton/contrib/user/skrawcz/hello_world/tags.json b/contrib/hamilton/contrib/user/skrawcz/hello_world/tags.json new file mode 100644 index 000000000..a88919692 --- /dev/null +++ b/contrib/hamilton/contrib/user/skrawcz/hello_world/tags.json @@ -0,0 +1,7 @@ +{ + "schema": "1.0", + "use_case_tags": ["example", "transformation"], + "secondary_tags": { + "dataframe-library": "pandas" + } +} diff --git a/contrib/hamilton/contrib/user/skrawcz/hello_world/valid_configs.jsonl b/contrib/hamilton/contrib/user/skrawcz/hello_world/valid_configs.jsonl new file mode 100644 index 000000000..7fdebe831 --- /dev/null +++ b/contrib/hamilton/contrib/user/skrawcz/hello_world/valid_configs.jsonl @@ -0,0 +1,2 @@ +{"description": "Default way to run the dataflow.", "name": "default", "config": {"default": "True"}} +{"description": "Bring your own spend & signup values.", "name": "bring-your-own", "config": {}}