Using CSV in Python ⚡
source link: https://dev.to/manitej/using-csv-in-python-2492
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Hey guys!
I recently had a requirement to make teams from a pool of around 100 people with 5 members per team each.
Usually, it would take a lot of effort & time to make teams. But in the end, you'll be called biased anyways. That's why I want to automate this process. So I wrote a small script in python which I want to share with you now.
Requirements
- Generate teams from excel sheet
- Form teams of 5 members from 102 people
- display the left out, 2 people
- Completely random logic of forming teams
Let's get started!
Getting CSV Data from excel
I used Google Sheets to collect info, so I need to convert it to CSV.
here's the data after conversion (delete the first line, as they indicate column names)
I saved the file as data.csv
Now comes the main part! The Code :)
To read .CSV
files in Python we need csv
package. Which is already pre-installed. This means you don't need to install anything to follow along :)
Importing packages
# To read data from CSV file
import csv
# To get random sub-data
from random import sample
Creating lists to store data
The csv
package we imported earlier converts each row in the csv file to a list.
with open('data.csv', 'r') as file:
reader = csv.reader(file)
for i in reader:
print(i)
The above code outputs,
As you can see it converts each row in CSV file into a python list. Awesome right?
Now I created 2 empty lists to store data
# stores the roll numbers of all members in one list
persons = []
# stores lists of teams (lists inside inside list)
teams = []
Now I only want the roll numbers of students to be in persons
list. To do so we need to access it by using its index.
with open('data.csv', 'r') as file:
reader = csv.reader(file)
for i in reader:
persons.append(i[0])
Now comes the main part! forming actual teams.
The idea is to randomly pick numbers from the persons
lists and make those 5 as a list and insert them into the teams
list after inserting them into the teams
list I need to remove those numbers from the persons
list as there might be a chance a single number enters into 2 teams.
To do so we need random
package. here's the code
# Repeat the process until there are less than 5 members left
while len(persons)>5:
# picks 5 random numbers from persons list
a = sample(persons,5)
# add the list of numbers as a single team
teams.append(a)
# after adding remove them to avoid redundancy
for i in a:
persons.remove(i)
That's it! now we got our required teams in the teams
list
Full code
import csv
from random import sample
persons = []
teams = []
with open('data.csv', 'r') as file:
reader = csv.reader(file)
for i in reader:
persons.append(i[0])
while len(persons)>5:
a = sample(persons,5)
teams.append(a)
for i in a:
persons.remove(i)
for i in teams:
print(i)
print(persons)
Sample output
(for reference only)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK