Python 3 script to create a seating chart that minimizes tables with people who may know each other.
Budget: $30 – $250 USD
Python 3 script to create a seating chart that minimizes tables with people who may know each other.
1. Load in the following three datasets. Developer to provide sample data. Client data to remain confidential.
time_charged.xlsx
Single worksheet, headers on second row.
Headers include: Company Code, Employee #, Employee Name, Employee Title, Project Code, Total Hours
Employee # is 4-5 digit number
Project Code is a mix of numeric and alphanumerics
people.xlsx
Single worksheet, headers on third row.
Headers include: Emp. No, Status, Pay Group, Dept, Dept Name, Last Name, First Name, Position Description, Zip Code, Original Hire Date, Rehire Date, Age
Emp. No is a 4-5 digit number
generations
Generation Start Year End Year
Silent 1928 1945
Boomers 1946 1964
Gen X 1965 1980
Millennials 1981 1996
Gen Z 1997 2012
2. User inputs:
Number of tables
Number of seats per table
3. Create a dataframe or dictionary of tables and seats to populate
4. Add the first person from people.xlsx to table 1, seat 1
5. For table 1, seat 2, add a person from people.xlsx that:
has NOT worked on a project with other people at the same table.
does NOT have the same title (use titles from people.xlsx)
is NOT in the same generation
6. Continue until all seats at the table have been filled
If you're unable fill the seats based on those three criteria, try to do so with less.
If you're unable to fill seats based on any criteria, then just add people to fill the table.
7. Restart the process for each new table until all tables are full.
8. If there is not enough tables/seats, make them as table 0, seat 0
9. Export the list of people using the same format at people.xlsx, but include a column for table and a column for seat assignment (M, N)
Freelancer will deliver working example and receive 50% of bid.
Client to test with confidential data, provide edits. Freelancer will deliver completed edits. Client will confirm and release the remaining 50% of bid.
A 25% bonus will be awarded for extremely well-written Python, good documentation, good process, timely delivery. Completely dependent on Client's perception.
1. Load in the following three datasets. Developer to provide sample data. Client data to remain confidential.
time_charged.xlsx
Single worksheet, headers on second row.
Headers include: Company Code, Employee #, Employee Name, Employee Title, Project Code, Total Hours
Employee # is 4-5 digit number
Project Code is a mix of numeric and alphanumerics
people.xlsx
Single worksheet, headers on third row.
Headers include: Emp. No, Status, Pay Group, Dept, Dept Name, Last Name, First Name, Position Description, Zip Code, Original Hire Date, Rehire Date, Age
Emp. No is a 4-5 digit number
generations
Generation Start Year End Year
Silent 1928 1945
Boomers 1946 1964
Gen X 1965 1980
Millennials 1981 1996
Gen Z 1997 2012
2. User inputs:
Number of tables
Number of seats per table
3. Create a dataframe or dictionary of tables and seats to populate
4. Add the first person from people.xlsx to table 1, seat 1
5. For table 1, seat 2, add a person from people.xlsx that:
has NOT worked on a project with other people at the same table.
does NOT have the same title (use titles from people.xlsx)
is NOT in the same generation
6. Continue until all seats at the table have been filled
If you're unable fill the seats based on those three criteria, try to do so with less.
If you're unable to fill seats based on any criteria, then just add people to fill the table.
7. Restart the process for each new table until all tables are full.
8. If there is not enough tables/seats, make them as table 0, seat 0
9. Export the list of people using the same format at people.xlsx, but include a column for table and a column for seat assignment (M, N)
Freelancer will deliver working example and receive 50% of bid.
Client to test with confidential data, provide edits. Freelancer will deliver completed edits. Client will confirm and release the remaining 50% of bid.
A 25% bonus will be awarded for extremely well-written Python, good documentation, good process, timely delivery. Completely dependent on Client's perception.