Your 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.
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)
Complete the following:
-
Read in
menu_data.csv
and set its contents to a separate list object. (This way, you can cross-reference your menu data with your sales data as you read in your sales data in the coming steps.)-
Initialize an empty
menu
list object to hold the contents ofmenu_data.csv
. -
Use a
with
statement and open themenu_data.csv
by using its file path. -
Use the
reader
function from thecsv
library to begin readingmenu_data.csv
. -
Use the
next
function to skip the header (first row of the CSV). -
Loop over the rest of the rows and append every row to the
menu
list 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 newsales
list object.
Complete the following:
-
Initialize an empty
report
dictionary to hold the future aggregated per-product results. Thereport
dictionary 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
sales
list object.-
For each row of the
sales
data, set the following columns of the sales data to their own variables:- Quantity
- Menu_Item
-
Perform a quick check if the
sales_item
is already included in thereport
. If not, initialize the key-value pairs for the particularsales_item
in the report. Then, set thesales_item
as a new key to thereport
dictionary 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
menu
data, set the following columns of the menu data to their own variables:- Item
- Price
- Cost
-
If the
sales_item
in sales is equal to theitem
inmenu
, capture thequantity
from the sales data and theprice
andcost
from the menu data to calculate theprofit
for 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
report
dictionary to a text file. The report should output each ramen type as the keys and01-count
,02-revenue
,03-cogs
, and04-profit
metrics 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}