In this homework assignment, we use the concepts that we have learned to complete two Python activities, PyBank and PyRamen. Both activities present a real-world situation in which our newfound Python skills will come in handy. These activities are far from easy, though, so expect some hard work ahead!
-
Create a new GitHub repo called
python-homework -
In our local git repository, create a directory for both of the Python activities. Use folder names that correspond to the activities: PyBank and PyRamen
-
In each folder,add a new file called
main.ipynb -
Run for each analysis
-
Push the above changes to GitHub
In this activity, we create a Python script for analyzing the financial records of the company. We provid with a financial dataset in this file: budget_data.csv. This dataset is composed of two columns, Date and Profit/Losses.
Our task is to create a Python script that analyzes the records to calculate each of the following:
-
The total number of months included in the dataset.
-
The net total amount of Profit/Losses over the entire period.
-
The average of the changes in Profit/Losses over the entire period.
-
The greatest increase in profits (date and amount) over the entire period.
-
The greatest decrease in losses (date and amount) over the entire period.
Our resulting analysis is the following:
Financial Analysis
----------------------------
Total Months: 86
Total: $38382578
Average Change: $-2315.12
Greatest Increase in Profits: Feb-2012 ($1926159)
Greatest Decrease in Profits: Sep-2013 ($-2196167)
Our final script should print the analysis to the terminal and export a text file with the results.
Welcome to Ichiban Ramen!
Opening a ramen shop has always been your dream, and now it's finally been realized––we're closing out on our second year of sales! Like last year, we need to analyze our business's financial performance by cross-referencing our sales data with our internal menu data to figure out revenues and costs for the year.
This year, we also want to analyze how well our business did on a per-product basis (as we have several choices of ramen) in order to better understand which products are doing well, which are doing poorly, and, ultimately, which products may need to be removed or changed.
We tried doing this type of per-product analysis last year in Excel, but we were not able to keep our reports up-to-date with our current sales data. Therefore, wwe need to innovate. With more customers and more data to process, We need a tool that will allow us to automate our calculations in a manner that scales with our business.
Enter Python! Python provides a wide range of capabilities for handling data, harnessing the power of low-level Python data structures and high-level development libraries, all the while supporting the automation and scalability needs for a growing enterprise.
In this homework assignment, these are the following tasks:
Complete the following:
-
Read in
menu_data.csvand set its contents to a separate list object-
Initialize an empty
menulist object to hold the contents ofmenu_data.csv. -
Use a
withstatement and open themenu_data.csvby using its file path. -
Use the
readerfunction from thecsvlibrary to begin readingmenu_data.csv. -
Use the
nextfunction to skip the header (first row of the CSV). -
Loop over the rest of the rows and append every row to the
menulist object (the outcome will be a list of lists).
-
-
Set up the same process to read in
sales_data.csv. However, instead append every row of the sales data to a newsaleslist object.
Complete the following:
-
Initialize an empty
reportdictionary to hold the future aggregated per-product results. Thereportdictionary will eventually contain the following metrics:-
01-count: the total quantity for each ramen type -
02-revenue: the total revenue for each ramen type -
03-cogs: the total cost of goods sold for each ramen type -
04-profit: the total profit for each ramen type
-
-
Then, loop through every row in the
saleslist object.-
For each row of the
salesdata, set the following columns of the sales data to their own variables:- Quantity
- Menu_Item
-
Perform a quick check if the
sales_itemis already included in thereport. If not, initialize the key-value pairs for the particularsales_itemin the report. Then, set thesales_itemas a new key to thereportdictionary and the values as a nested dictionary containing the following:{ "01-count": 0, "02-revenue": 0, "03-cogs": 0, "04-profit": 0, }
-
-
Create a nested loop by looping through every record in
menu.-
For each row of the
menudata, set the following columns of the menu data to their own variables:- Item
- Price
- Cost
-
If the
sales_itemin sales is equal to theiteminmenu, capture thequantityfrom the sales data and thepriceandcostfrom the menu data to calculate theprofitfor each item.-
Cumulatively add the values to the corresponding metrics in the report like so:
report[sales_item]["01-count"] += quantity report[sales_item]["02-revenue"] += price * quantity report[sales_item]["03-cogs"] += cost * quantity report[sales_item]["04-profit"] += profit * quantity
-
-
Else print the message "{sales_item} does not equal {item}! NO MATCH!".
-
-
Write out the contents of the
reportdictionary to a text file. The report should output each ramen type as the keys and01-count,02-revenue,03-cogs, and04-profitmetrics as the values for every ramen type as shown:spicy miso ramen {'01-count': 9238, '02-revenue': 110856.0, '03-cogs': 46190.0, '04-profit': 64666.0} tori paitan ramen {'01-count': 9156, '02-revenue': 119028.0, '03-cogs': 54936.0, '04-profit': 64092.0} truffle butter ramen {'01-count': 8982, '02-revenue': 125748.0, '03-cogs': 62874.0, '04-profit': 62874.0} tonkotsu ramen {'01-count': 9288, '02-revenue': 120744.0, '03-cogs': 55728.0, '04-profit': 65016.0} vegetarian spicy miso {'01-count': 9216, '02-revenue': 110592.0, '03-cogs': 46080.0, '04-profit': 64512.0} shio ramen {'01-count': 9180, '02-revenue': 100980.0, '03-cogs': 45900.0, '04-profit': 55080.0} miso crab ramen {'01-count': 8890, '02-revenue': 106680.0, '03-cogs': 53340.0, '04-profit': 53340.0} nagomi shoyu {'01-count': 9132, '02-revenue': 100452.0, '03-cogs': 45660.0, '04-profit': 54792.0} soft-shell miso crab ramen {'01-count': 9130, '02-revenue': 127820.0, '03-cogs': 63910.0, '04-profit': 63910.0} burnt garlic tonkotsu ramen {'01-count': 9070, '02-revenue': 126980.0, '03-cogs': 54420.0, '04-profit': 72560.0} vegetarian curry + king trumpet mushroom ramen {'01-count': 8824, '02-revenue': 114712.0, '03-cogs': 61768.0, '04-profit': 52944.0}
-
Stack Overflow: A wealth of community-driven questions and answers, particularly effective for IT solution seekers.
-
Python Basics: Contains example materials and exercises for the Python 3 programming language.
-
Python Documentation: Official Python documentation