Skip to content

Instantly share code, notes, and snippets.

View toby-p's full-sized avatar

toby petty toby-p

View GitHub Profile
@toby-p
toby-p / runtime_performance.py
Created August 17, 2020 19:14
decorator to store runtime performance of a function in a CSV file.
import datetime
import pandas as pd
import pytz
import time
# To switch logging on/off add config logic here to determine this variable:
LOG_PERFORMANCE = True
TIMEZONE = "US/Eastern"
@toby-p
toby-p / print_check.py
Last active October 29, 2020 19:01
Decorator to print custom messages when executing functions, followed by a check mark when it completes.
# Class:
class PrintCheck:
"""Decorator to print a custom message when calling a function, followed by
a check/tick mark on the same line when the computation finishes. If the
function returns an integer it will be printed in parentheses with the check
mark along with the `item_name` argument, pluralized if greater than 1."""
def __init__(self, msg: str = None, print_items: bool = True,
item_name: str = "item"):
"""
@toby-p
toby-p / input_paginated_iterable.py
Created October 27, 2020 20:16
Get user choice from an enumerated iterable, with pagination of options.
def input_iterable_paginated(msg: str, iterable: object, page_length: int = 5,
more: str = "m"):
"""List numbered items from any iterable to be chosen by user input."""
def get_input(valid: list):
value = input().strip().lower()
try:
value = int(value)
if value - 1 in range(len(valid)):
return valid[value - 1]
else:
@toby-p
toby-p / pandas_sklearn_polynomials.py
Created December 2, 2020 18:49
Apply scikit-learn's PolynomialFeatures class to a Pandas.DataFrame, keeping original index/column labels.
import pandas as pd
from sklearn.preprocessing import PolynomialFeatures
def apply_polynomials(df: pd.DataFrame, degree: int = 2,
interaction_only: bool = False,
include_bias: bool = False):
"""Apply scikit-learn's PolynomialFeatures class to a pandas DataFrame,
keeping the original column labels and index, and extending the columns to
include all new polynomial features. Generally speaking creates a lot of new