Generating A Resume in Python. I am transitioning into the world of... | by Eddie Kirkland | Towards Data Science

I am transitioning into the world of Data Science, following the “self-taught” path. So as I sat down to begin writing a resume, I struggled with how to convey the new skills I am learning on something as static and conventional as a resume. To be honest, I found resume-writing pretty intimidating.
How can I catch the eye of a hiring manager, when I don’t have the degree or experience that would jump off the page?
While pondering this question, I remembered something important. While Data Science is a relatively new endeavor for me, I am very well-versed in the world of communication and creative storytelling. So putting on my creativity hat, I set out to find a new way of creating a resume that could quickly display technical data-visualization skills in a way that feels natural and clear.
And this is the result...
It’s pretty simple, but I compiled the entire resume using the matplotlib library in Python. It’s basically an 8.5 x 11 chart with no axes and no information, but with some graphical lines and a lot of annotation.
It was pretty simple to compile, but it displays a proficiency with Python and an ability to communicate creatively. Perhaps more importantly, it made resume-writing a whole lot more fun and less intimidating.
The source code is below, or you can find it at my GitHub repository. Hope you like it, and if you have any comments or suggestions let me know!
# Text VariablesHeader = '>>>This resume was generated entirely in Python. For full sourcecode, view my portfolio.'Name = 'EDDIE KIRKLAND'Title = 'Data Science & Analytics'Contact = 'Atlanta, GA\n404-XXX-XXXX\nwekrklndATgmailDOTcom\nlinkedin.com/in/ekirkland\ngithub.com/e-kirkland'ProjectsHeader = 'PROJECTS/PUBLICATIONS'ProjectOneTitle = 'Increasing Kaggle Revenue'ProjectOneDesc = '- Published by Towards Data Science\n- Analyzed user survey to recommend most profitable future revenue source\n- Cleaned/visualized data using pandas/matplotlib libraries in Python'ProjectTwoTitle = 'NYC School Data Cleaning & Analysis'ProjectTwoDesc = '- Cleaned and combined several tables using pandas library in Python\n- Used PDE and visualization to determine correlations for future study'ProjectThreeTitle = 'Pandas Cleaning and Visualization'ProjectThreeDesc = '- Cleaned data for analysis using pandas library in Python\n- Used pandas and matplotlib to explore which cars hold the most value over time'Portfolio = 'Portfolio: rebrand.ly/ekirkland'WorkHeader = 'EXPERIENCE'WorkOneTitle = 'Example Company / Example Position'WorkOneTime = '8/2013-Present'WorkOneDesc = '- Raised $350k in startup funds, recruited/organized launch team\n- Coordinated branding and communication strategy\n- Led team of 80 volunteer and staff leaders'WorkTwoTitle = 'Second Company / Second Position'WorkTwoTime = '2/2007-8/2013'WorkTwoDesc = '- Led team of over 100 full-time and contract staff\n- Helped create branding and messaging for weekly content\n- Created/directed musical elements at weekly events for up to 10,000 people'WorkThreeTitle = 'Third Company / Third Position'WorkThreeTime = '6/2004-2/2007'WorkThreeDesc = '- Planned/Coordianted Toronto arena event and South Africa speaking tour\n- Oversaw research for published products'EduHeader = 'EDUCATION'EduOneTitle = 'Example University, Bachelor of Business Administration'EduOneTime = '2000-2004'EduOneDesc = '- Major: Management, Minor: Statistics'EduTwoTitle = 'Example University, Master of Arts'EduTwoTime = '2013-2017'SkillsHeader = 'Skills'SkillsDesc = '- Python\n- Pandas\n- NumPy\n- Data Visualization\n- Data Cleaning\n- Command Line\n- Git and Version Control\n- SQL\n- APIs\n- Probability/Statistics\n- Data Manipulation\n- Excel'ExtrasTitle = 'DataQuest\nData Scientist Path'ExtrasDesc = 'Learned popular data science\nlanguages, data cleaning and\nmanipulation, machine learning \nand statistical analysis'CodeTitle = 'View Portfolio'# Setting style for bar graphsimport matplotlib.pyplot as plt%matplotlib inline# set fontplt.rcParams['font.family'] = 'sans-serif'plt.rcParams['font.sans-serif'] = 'STIXGeneral'fig, ax = plt.subplots(figsize=(8.5, 11))# Decorative Linesax.axvline(x=.5, ymin=0, ymax=1, color='#007ACC', alpha=0.0, linewidth=50)plt.axvline(x=.99, color='#000000', alpha=0.5, linewidth=300)plt.axhline(y=.88, xmin=0, xmax=1, color='#ffffff', linewidth=3)# set background colorax.set_facecolor('white')# remove axesplt.axis('off')# add textplt.annotate(Header, (.02,.98), weight='regular', fontsize=8, alpha=.75)plt.annotate(Name, (.02,.94), weight='bold', fontsize=20)plt.annotate(Title, (.02,.91), weight='regular', fontsize=14)plt.annotate(Contact, (.7,.906), weight='regular', fontsize=8, color='#ffffff')plt.annotate(ProjectsHeader, (.02,.86), weight='bold', fontsize=10, color='#58C1B2')plt.annotate(ProjectOneTitle, (.02,.832), weight='bold', fontsize=10)plt.annotate(ProjectOneDesc, (.04,.78), weight='regular', fontsize=9)plt.annotate(ProjectTwoTitle, (.02,.745), weight='bold', fontsize=10)plt.annotate(ProjectTwoDesc, (.04,.71), weight='regular', fontsize=9)plt.annotate(ProjectThreeTitle, (.02,.672), weight='bold', fontsize=10)plt.annotate(ProjectThreeDesc, (.04,.638), weight='regular', fontsize=9)plt.annotate(Portfolio, (.02,.6), weight='bold', fontsize=10)plt.annotate(WorkHeader, (.02,.54), weight='bold', fontsize=10, color='#58C1B2')plt.annotate(WorkOneTitle, (.02,.508), weight='bold', fontsize=10)plt.annotate(WorkOneTime, (.02,.493), weight='regular', fontsize=9, alpha=.6)plt.annotate(WorkOneDesc, (.04,.445), weight='regular', fontsize=9)plt.annotate(WorkTwoTitle, (.02,.4), weight='bold', fontsize=10)plt.annotate(WorkTwoTime, (.02,.385), weight='regular', fontsize=9, alpha=.6)plt.annotate(WorkTwoDesc, (.04,.337), weight='regular', fontsize=9)plt.annotate(WorkThreeTitle, (.02,.295), weight='bold', fontsize=10)plt.annotate(WorkThreeTime, (.02,.28), weight='regular', fontsize=9, alpha=.6)plt.annotate(WorkThreeDesc, (.04,.247), weight='regular', fontsize=9)plt.annotate(EduHeader, (.02,.185), weight='bold', fontsize=10, color='#58C1B2')plt.annotate(EduOneTitle, (.02,.155), weight='bold', fontsize=10)plt.annotate(EduOneTime, (.02,.14), weight='regular', fontsize=9, alpha=.6)plt.annotate(EduOneDesc, (.04,.125), weight='regular', fontsize=9)plt.annotate(EduTwoTitle, (.02,.08), weight='bold', fontsize=10)plt.annotate(EduTwoTime, (.02,.065), weight='regular', fontsize=9, alpha=.6)plt.annotate(SkillsHeader, (.7,.8), weight='bold', fontsize=10, color='#ffffff')plt.annotate(SkillsDesc, (.7,.56), weight='regular', fontsize=10, color='#ffffff')plt.annotate(ExtrasTitle, (.7,.43), weight='bold', fontsize=10, color='#ffffff')plt.annotate(ExtrasDesc, (.7,.345), weight='regular', fontsize=10, color='#ffffff')plt.annotate(CodeTitle, (.7,.2), weight='bold', fontsize=10, color='#ffffff')#add qr codefrom matplotlib.offsetbox import TextArea, DrawingArea, OffsetImage, AnnotationBboximport matplotlib.image as mpimgarr_code = mpimg.imread('ekresumecode.png')imagebox = OffsetImage(arr_code, zoom=0.5)ab = AnnotationBbox(imagebox, (0.84, 0.12))ax.add_artist(ab)plt.savefig('resumeexample.png', dpi=300, bbox_inches='tight')