Name: Rohan Duhaney
Your magic request: "Write a code snippet to solve Vendor Management Automation: "Create a BMC Control-M solution to schedule and track vendor performance assessments and contract renewals." using Python." please use fititious data for a large scale company
Email: smartduhaney@gmail.com
Dear Rohan Duhaney,
# Import necessary libraries
import pandas as pd
import numpy as np
# Create a dataframe to store vendor information
vendor_df = pd.DataFrame(columns=['Vendor Name', 'Contract Start Date', 'Contract End Date', 'Performance Assessment Date', 'Renewal Status'])
# Add sample data for demonstration
vendor_df.loc[0] = ['Vendor A', '2020-01-01', '2022-01-01', '2021-01-01', 'Pending']
vendor_df.loc[1] = ['Vendor B', '2019-06-01', '2021-06-01', '2020-06-01', 'Renewed']
vendor_df.loc[2] = ['Vendor C', '2018-12-01', '2021-12-01', '2020-12-01', 'Expired']
vendor_df.loc[3] = ['Vendor D', '2020-03-01', '2023-03-01', '2022-03-01', 'Pending']
vendor_df.loc[4] = ['Vendor E', '2019-09-01', '2022-09-01', '2021-09-01', 'Renewed']
# View the dataframe
vendor_df
# Create a function to calculate the remaining contract duration
def calculate_remaining_duration(s
# Convert dates to datetime objects
start_date = pd.to_datetime(start_date)
end_date = pd.to_datetime(end_date)
# Calculate the difference in years between the two dates
duration = (end_date - start_date) / np.timedelta64(1, 'Y')
# Round up the duration to the nearest integer
duration = int(np.ceil(duration))
return duration
# Add a column for remaining contract duration
vendor_df['Remaining Contract Duration'] = vendor_df.apply(lambda x: calculate_remaining_duration(x
# View the updated dataframe
vendor_df
# Create a function to calculate the days until performance assessment
def calculate_days_until_assessmen
# Convert assessment date to datetime object
assessment_date = pd.to_datetime(assessment_date
# Calculate the difference in days between the assessment date and today's date
days_until_assessment = (assessment_date - pd.Timestamp.today()).days
return days_until_assessment
# Add a column for days until performance assessment
vendor_df['Days Until Performance Assessment'] = vendor_df['Performance Assessment Date'].apply(calculate_days_un
# View the updated dataframe
vendor_df
# Create a function to determine if a vendor needs to be renewed
def determine_renewal_status(remai
# If the remaining contract duration is less than or equal to 1 year and the days until assessment is less than or equal to 90 days, the vendor needs to be renewed
if remaining_duration <= 1 and days_until_assessment <= 90:
return 'Renewal Required'
else:
return 'No Renewal Required'
# Add a column for renewal status
vendor_df['Renewal Status'] = vendor_df.apply(lambda x: determine_renewal_status(x['Re
# View the updated dataframe
vendor_df
# Export the dataframe to a CSV file for record-keeping
vendor_df.to_csv('Vendor Management Automation.csv', index=False)