I have an input file (input.txt) with the following information:
- Number of students (first line)
- Number of test scores (second line)
- list of student names and scores
So the text file looks something like this
4
5
Jane Doe,80,75,90,100,95,68
Sara Jones,65,80,72,90,75,80
Bill Smith,50,70,90,70,55,90
John Foles,95,90,85,80,88
I am trying to create a python program that will read this information, and output certain values (class average score, student names, student scores, etc) into a different file (output.txt).
I've been working through it, and I can never get my program to do everything that I need. I am only able to, for example, output the class average only, or one student's score only. I can't figure out how to output more than one function.
I could really use some help.
You're going to want to use Pandas (See also Pandas Manual) for this.
First, copy the following to your clipboard:
Jane Doe,80,75,90,100,95,68
Sara Jones,65,80,72,90,75,80
Bill Smith,50,70,90,70,55,90
John Foles,95,90,85,80,88
Next, run the following script:
#%% Load Your Data
import pandas as pd
df = pd.read_clipboard(sep = ',')
# YOU WILL HAVE TO LOAD YOUR ACTUAL DATA AS FOLLOWS:
# file_path = 'path/to/your/file.txt'
# df = pd.read_csv()
number_of_students = df.shape[0]
number_of_tests = df.shape[1] -1 # This is the number of columns you have
score_names = ['score' + str(number+1) for number in range(number_of_tests)]
df.columns = ['student'] + score_names # Prepares the column names
df.set_index('student',inplace=True) # Makes the student names the index
#%% Calculate Maximum, Minimum and Average Class Score per test
score_summaries = df.describe()
#%% Calulate the average score for all students across all tests
average_exam_score = df.mean().mean()
#%% A single students' score
df.loc['Sara Jones']
The script will calculate a couple of your requests. One thing it doesn't do is load your your file (you'll have to remove the lines containing the number of students & test scores but no worries, it is recalculated from the score data itself). I've included a hint about how to do this in the comments and leave it to you to implement.
I encourage you to go through it and explore what removing some lines or changing others will do.
Finally, on behalf of the SO community I say WELCOME! I know it seems like you're off to a rough start (with all the downvotes and all) but don't let that discourage you. Read through How to ask a good question, come on back, and help us learn together!