Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Read by thought-leaders and decision-makers around the world. Phone Number: +1-650-246-9381 Email: [email protected]
228 Park Avenue South New York, NY 10003 United States
Website: Publisher: https://towardsai.net/#publisher Diversity Policy: https://towardsai.net/about Ethics Policy: https://towardsai.net/about Masthead: https://towardsai.net/about
Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Founders: Roberto Iriondo, , Job Title: Co-founder and Advisor Works for: Towards AI, Inc. Follow Roberto: X, LinkedIn, GitHub, Google Scholar, Towards AI Profile, Medium, ML@CMU, FreeCodeCamp, Crunchbase, Bloomberg, Roberto Iriondo, Generative AI Lab, Generative AI Lab Denis Piffaretti, Job Title: Co-founder Works for: Towards AI, Inc. Louie Peters, Job Title: Co-founder Works for: Towards AI, Inc. Louis-François Bouchard, Job Title: Co-founder Works for: Towards AI, Inc. Cover:
Towards AI Cover
Logo:
Towards AI Logo
Areas Served: Worldwide Alternate Name: Towards AI, Inc. Alternate Name: Towards AI Co. Alternate Name: towards ai Alternate Name: towardsai Alternate Name: towards.ai Alternate Name: tai Alternate Name: toward ai Alternate Name: toward.ai Alternate Name: Towards AI, Inc. Alternate Name: towardsai.net Alternate Name: pub.towardsai.net
5 stars – based on 497 reviews

Frequently Used, Contextual References

TODO: Remember to copy unique IDs whenever it needs used. i.e., URL: 304b2e42315e

Resources

Take our 85+ lesson From Beginner to Advanced LLM Developer Certification: From choosing a project to deploying a working product this is the most comprehensive and practical LLM course out there!

Publication

Automate your calendar marking
Latest

Automate your calendar marking

Last Updated on February 23, 2022 by Editorial Team

Author(s): Yudhi Chen

Originally published on Towards AI the World’s Leading AI and Technology News and Media Company. If you are building an AI-related product or service, we invite you to consider becoming an AI sponsor. At Towards AI, we help scale AI and technology startups. Let us help you unleash your technology to the masses.

Programming

Automate calendar marking usingΒ python

How to create a custom calendar using python moduleΒ July

Photo by Towfiqu barbhuiya onΒ Unsplash

Introduction

Starting a new year, we always come up with a new resolution, vacation plan, or any important event that may come ahead. We mark all special occasions in the calendar to remind us of those things. Some people mark their calendar in the apps or some still got their physical calendar put on the desk and marked it for better visual publicly. The calendar we found might have a different color for weekends and generic public holidays and it depends on which country or even state where you liveΒ in.

Why customize?

In my case, I’m stationed in a country where the public holiday (PH) is state-dependent. It is good if I can get a physical calendar with PH marked. In the workplace, we also tend to have an β€˜extra’ calendar of an important event, i.e. project related, company event, or even birthday list of our colleague. Using python module Julia, we can automate the marking, ready-for-print custom calendar to mark any important dates listed on the particular year.

Pre-requisite

First thing you need if you want to generate your own customized calendar is the list of the important date. I’m using the list of public holidays in my country (state) for demonstration using Jupyter Notebook. You can find the code details on my github and a sample of the public holiday list in CSV format asΒ well.

Public Holiday List | Image byΒ Author

Step-1: install package β†’ import β†’ readΒ data

The main module we are going to use is July. Ensure you install the module before proceeding to the next step. Once you manage to install, proceed to import the package. We also need pandas to process our data. Make sure you call it as well before proceeding further.

#!pip install july
import pandas as pd
import july
from july.utils import date_range

Once you manage to install, proceed to import the package. We also need panda to process our data. Make sure you call it as well before proceeding further. Using the pandas module, don’t forget to parse the date on the columnΒ Date.

# Read csv file contain list of public holiday
df = pd.read_csv('2022_my_ph.csv',parse_dates=['Date'])
df.head(3)

Step-2: process theΒ data

The idea in this step is to generate a list of dates throughout the year, ie. 2022, and note the important date on df. As a typical calendar, another marking is also made on weekends (Saturday and Sunday). Hence, we will have two different marks: public holiday andΒ weekend.

df1shall cover a list of dates starting from Jan 1st to Dec 31st with frequency daily as in β€˜d’ while another list df1bshall cover the only business day as inΒ β€˜B’.

You can find more information offset aliases if you wish to create another data frame using different time frequency.

# Create list date range in year 2022
df1 = pd.date_range("2022-01-01","2022-12-31",freq='d')

# Create list date range in year 2022 ONLY for business day
df1b = pd.date_range("2022-01-01","2022-12-31",freq='B')

Next line, df2data frame create contain a collection of zeros list for 365 days and we will integrate both df1as index date and df2as data valuein a new data frameΒ df3.

# Create list with value zero (0)
df2 = [0] * 365
# Create data frame df3
df3 = pd.DataFrame(data = df2, index = df1, columns = ['value'])

In the new data frame df3, we will update initial value (zero) at particular public holiday date listed in df1 using indexing property iloc. A similar update is also to be done for marking theΒ weekend.

Note: there’s negate expression ~ since initially we have a list of business day df1b. You might think that this method will mask the public holiday if it falls on weekend (Saturday and Sunday). You are correct and it depends on how we utilizeΒ it.

So that’s it. We are ready to plot the calendar using a data frameΒ df3.

# Encode the date according to public holiday listed at df
# Update value of df3 in which the df3 index = df['Date']
df3.iloc[df3.index.isin(df['Date'])] = 1

# Update value of df3 in which the df3 index is not same as df1b.
# All weekend, ie. Saturday and Sunday shall be given value '2'
df3.iloc[~df3.index.isin(df1b)] = 2

Step-3: plot theΒ calendar

There are two kinds of calendars we can generate using module July, either we plot a typical calendar or another version of the calendar like what you see in a typical GitHub profile denote our contribution activity. My personal preference, I find the typical calendar is more than sufficient for me with a different color on public holidays and weekends.

# Calendar plot. 
july.calendar_plot(df3.index, df3['value'],
cmap = 'july',
date_label = True,
figsize = None)
Calendar 2022 | Image byΒ Author

For some applications, a calendar with GitHub style also might fit for purpose. Again, it all depends on how we use it. Another thing to highlight, this module July was made upon matplotlib module. Similar tweaks on parameters can be applied to this code, like cmap on what color you prefer to mark your calendar.

july.heatmap(dates=df3.index, 
data=df3['value'],
cmap='Pastel1_r',
month_grid=True,
horizontal=True,
value_label=False,
date_label=True,
weekday_label=True,
month_label=True,
year_label=True,
colorbar=False,
fontfamily="monospace",
fontsize=8,
title=None,
titlesize='large',
dpi=100)
Calendar 2022 with github style | Image byΒ Author

Conclusion

In this article, we have covered simple code to automate your marking calendar using the python module July. I hope you find it useful and beneficial to remind any special occasion of your daily activity.

Thanks for reading. Feel free to fork and tweak the code in this Github repo to suit your situation.

Reference

[1] python moduleΒ July

I like to share useful knowledge in data analytics and see how people can benefit from it. Follow me on Medium and let me know if you have any constructive input and how to improve through comment. You can get in touch with me through Linkedin or Twitter. All the best on your learning endeavorπŸ‘!


Automate your calendar marking was originally published in Towards AI on Medium, where people are continuing the conversation by highlighting and responding to this story.

Join thousands of data leaders on the AI newsletter. It’s free, we don’t spam, and we never share your email address. Keep up to date with the latest work in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming aΒ sponsor.

Published via Towards AI

Feedback ↓