In this project we will graph

  

​ The Popularity of Baby Names

In this project we will graph data about American baby names taken from the Social 

Security Administration Website. We will read the data, store it in a dictionary of lists

data structure, and then let the user type in names. If a name appears in our data, we

will draw a graph, like the one below, showing how the popularity of the name evolved

since 1880. The graph below plots the frequency of babies named Karl by year. 

As a side note, this plot is very similar to the plots that can be obtained from Googles 

N-gram viewer, with the exception that this is a much more manageable set of data. 

Input File

The primary data file ​ countsByName.csv​ contains 97,310 names compiled from Social 

Security card applications after 1879. It was downloaded and reformatted from the

Social Security Administration names database file (​ here (Links to an external

site.)Links to an external site.​ ). The first line describes the columns. The leftmost

column is the name. This is followed by the number of applications with that name from

1880 to 2017. 

Here are the first 9 lines from the file countsByName.csv: 

Name,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893 

Mary,7092,6948,8178,8044,9253,9166,9921,9935,11804,11689,12113,11742,13222,12839 

Anna,2616,2714,3143,3322,3880,4014,4298,4240,5008,5085,5253,5114,5562,5712 

Emma,2013,2043,2310,2374,2596,2742,2775,2661,3104,2894,2996,2897,3140,2982 

Elizabeth,1948,1852,2193,2268,2565,2591,2691,2695,3236,3074,3124,3065,3469,3372 

Minnie,1755,1661,2014,2049,2243,2184,2380,2226,2668,2637,2666,2440,2617,2528 

Margaret,1578,1667,1828,1894,2152,2215,2283,2432,2914,2930,3115,3077,3447,3579 

Ida,1480,1444,1678,1639,1890,1860,2057,1938,2242,2130,2188,2002,2269,2256 

Alice,1414,1315,1542,1494,1732,1690,1821,1829,2207,2154,2281,2024,2381,2445 

Normalizing your counts.​ ​ To account for the fact that the population of the United

States has been increasing it makes sense to plot the percentage of applications

instead of the total number of applications for a specific name. To get the percentage of

applications for a specific name and year, you need to divide the count for that name by

the total number of applications that year. You have the counts by year from the file

above. We are also providing the totals by year in a separate file named

totalsByYear.csv​ : 

Year,Total

1880,201484

1881,192696

1882,221533

2014,3696311

2015,3688687

2016,3652968

2017,3546301

Hint:​ ​ The first line can be ignored by your program. Your program may assume that that 

the year range always runs from 1880 to 2017 when creating the x-axis for your plots.

Graphing module

This assignment includes an introduction to using a simple graphing module that 

outputs results in text to the screen. We will be using the ​ plainchart.py​ module which is

not covered in your primary textbook. Download the module here from Canvas and put

it in the same directory as your Python code. You will only need to know three lines of

code to use the plainchart.py module: 

# import the plainchart module at the top of your program 

import plainchart

# create and print a text chart that is 25 lines high

# numList is a list of integer counts by year or

# a list of floating point percentages by year

chart = plainchart.PlainChart(numList, height=25)

print(chart.render()) 

Your objective is to create a list of numbers numList to give to the charting module. The 

module works with both integers and floating point values. Also regardless of the range

of values, the module will automatically adjust the height of the chart to 25 lines. 

Part 1​ ​ (40%) ​ Reading the Database and Getting User Input

Get the file ​ countsByName.csv​ and place it in the same directory you are running your 

script.

You will begin by writing a program that reads in the file countsByName.csv and 

populates a dictionary that can be used to look up a list of counts by year (columns

2,3,4,5,…in countsByName.csv) using the person’s name (column 1 in

countsByName.csv). The counts should be stored as a list of integers, not strings. 

You will then write a loop that keeps asking the user to enter a name until it finds it in

the dictionary. When “Name” is found print out “Found Name” followed by the list of

counts. Do not assume that the user entered the name in the same case as used in the

file, instead use string methods to convert the user input to the correct case. 

The exact format for the prompt and output is shown here:

What’s your name?chipmunk

What’s your name?xylophone

What’s your name?porschE

Found Porsche

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 10, 14, 9, 7, 19, 48, 64, 51, 

45, 46, 57, 66, 82, 127, 182, 172, 159, 179, 123, 123, 70, 68, 45, 30, 35, 27, 12, 25, 32,

15, 20, 9, 15, 18, 17, 16, 11, 9, 14, 9, 5, 0, 13, 0, 5] 

Strategy hints:

● When looking up a name, you should use string methods convert the case of 

whatever the user entered to titlecase. (see example above)

● You will need to remove the name from the list of counts before storing it in 

the dictionary. The pop list method can be used to remove elements from

lists. 

● The split method will give you a list of counts as strings, but you will need to

convert them to integers before storing them in the dictionary. 

● The format for the printed list is exactly what you get if your give a list to the

print command. (e.g. print(counts) ) We will improve on this output in the next

part. 

Submit this to Kodethon as Baby_Names_Pt1.py

Part 2​ ​ (30%) ​ Plotting the output

Download the ​ plainchart.py​ module and place it in the directory where you are running 

your script. 

Modify your program so that it prints the maximum counts and then instead of printing a 

list of integers it uses plainchart to plot the values.

Plainchart does not provide axes. The y-axis is provided by the Maximum Count. You 

can write a loop that uses string methods to create the x-axis. Every 10 years (from

1880 to 2010) draw a bar “|”, followed by the year, followed by 5 spaces (for a total of 10

characters). 

Strategy hints:

● If you can’t figure out the x-axis loop you may also do it with a single print 

statement.

Submit this to Kodethon as Baby_Names_Pt2.py 

Part 3​ ​ (30%) ​ Normalizing

Get the file ​ totalsByYear.csv​ and place it in the same directory you are running your 

script.

Read in the file to get the total number of people in the database for each year. Note 

that the number increases over time, and our plots will be more accurate representation

of the name’s popularity if we plot the percentage over time. For each year, compute the

percentage (count / total for that year) * 100, before plotting it with plainchart. Also

change the y=axis to show the maximum popularity as a percentage. 

Strategy hints: 

● The popularity is a percentage formatted to four decimal places. You will

need to multiply the years frequency (counts/total counts) by 100 to get a

percentage. You will need to use the format method to format the floating

point value for printing. 

Submit this to Kodethon as Baby_Names_Pt3.py 

Get 20% Discount on This Paper
Pages (550 words)
Approximate price: -

Try it now!

Get 20% Discount on This Paper

We'll send you the first draft for approval by at
Total price:
$0.00

How it works?

Follow these simple steps to get your paper done

Place your order

Fill in the order form and provide all details of your assignment.

Proceed with the payment

Choose the payment system that suits you most.

Receive the final file

Once your paper is ready, we will email it to you.

Our Services

Quality Essay Help has stood as the world’s leading custom essay writing services providers. Once you enter all the details in the order form under the place order button, the rest is up to us.

Essays

Essay Writing Services

At Quality Essay Help, we prioritize on all aspects that bring about a good grade such as impeccable grammar, proper structure, zero-plagiarism and conformance to guidelines. Our experienced team of writers will help you completed your essays and other assignments.

Admissions

Admission and Business Papers

Be assured that you’ll definitely get accepted to the Master’s level program at any university once you enter all the details in the order form. We won’t leave you here; we will also help you secure a good position in your aspired workplace by creating an outstanding resume or portfolio once you place an order.

Editing

Editing and Proofreading

Our skilled editing and writing team will help you restructure you paper, paraphrase, correct grammar and replace plagiarized sections on your paper just on time. The service is geared toward eliminating any mistakes and rather enhancing better quality.

Coursework

Technical papers

We have writers in almost all fields including the most technical fields. You don’t have to worry about the complexity of your paper. Simply enter as much details as possible in the place order section.