-
Notifications
You must be signed in to change notification settings - Fork 131
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
To show a basic dataflow and have people pull it in and start with it.
- Loading branch information
Showing
8 changed files
with
100 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# skrawcz | ||
|
||
Hi I'm Stefan Krawczyk. I am on of the co-creators of Hamilton. | ||
|
||
# Github | ||
https://github.com/skrawcz | ||
https://www.linkedin.com/in/skrawczyk | ||
# X (Twitter) | ||
https://www.twitter.com/stefkrawczyk |
14 changes: 14 additions & 0 deletions
14
contrib/hamilton/contrib/user/skrawcz/hello_world/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |
66 changes: 66 additions & 0 deletions
66
contrib/hamilton/contrib/user/skrawcz/hello_world/__init__.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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}) |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions
1
contrib/hamilton/contrib/user/skrawcz/hello_world/requirements.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
pandas |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"schema": "1.0", | ||
"use_case_tags": ["example", "transformation"], | ||
"secondary_tags": { | ||
"dataframe-library": "pandas" | ||
} | ||
} |
2 changes: 2 additions & 0 deletions
2
contrib/hamilton/contrib/user/skrawcz/hello_world/valid_configs.jsonl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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": {}} |