Program Design in Python Final Project


Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due


Program Design in Python Final Project

Abstract:
This document provides an overview of the final project, including its objectives, scope, and key deliverables. Students are required to demonstrates their understanding of theproject requirements and their ability to apply their knowledge and skills in Python programming to solve a real-world Administration of Customer Service problem.
  • Program Design in Python Final Project
    • 1. Key Information
    • 2. Context Information
    • 3. lmplementation Instructions
      • 3.1 The Investor Application
      • 3.2. Extracting Property Information
      • 3.3. Currency Exchange
      • 3.4. Suburb Property Summary
      • 3.5. Average Land Size
      • 3.6. Property Value Distribution
      • 3.7. Sales Trend
      • 3.8. Identifying a Property of a Specific Price in a Suburb
    • 4. Important Notes
    • 5. Submission Requirements
    • 6. Marking Guide
Contact Information:
1. Key Information

Mode
Description
Purpose
This assignment will develop your skills in designing, constructing, and documenting a small Python program according to specific programming standards. This assessment is related to (part of) the following learning outcomes: Investigate useful Python packages for scientific computing and data analysis; Experiment with data manipulation, analysis, and visualisation techniques to formulate business insight.
Your task
This assignment is an individual task where you will write Python code for a simple application whereby you will be developing a property investment management system as per the specification.
Value
50% of your total marks for the unit.
Due Date
Sunday, 19 Jan 2025, 23:59
Submission
Via TronClass System.
Assessment
Criteria
The following aspects will be assessed: 1. Program functionality in accordance to the requirements; 2. Code Architecture and Adherence to Python coding standards; 3. The comprehensiveness of documented code and test strategy
Submission
Via TronClass System.
Late Penalties
Submissions after the due date will receive a mark of ZERO (0) without any argument acceptable.

2. Context Information

You are working as a developer in a property investment company located in Melbourne, Australia. Your company is providing services for customers from
all over the world to invest in properties in Melbourne. As your company grows, the management team has discovered that some of the administrative
tasks are time-consuming and repetitive. Therefore, as the only developer in this company, your task here is to automate some of these administrative
tasks. To test your implemented functionalities, you are provided a CSV file which contains information about the properties sold in some suburbs from
2010 to 2023.

3. lmplementation Instructions

Your implementation must include a text interface (a text interface is the least requirement) with functionalities detailed below. Your program will be evaluated based on its clarity, including the provision of clear information and error messages. Your program should handle exceptions properly and handle unexpected cases wherever necessary. The validation of data types and values should be done within each functionality.

To ensure that your code can be properly evaluated by the teaching team:

1. Please ensure that your implemented methods use the same names and method signatures (i.e., number and type of input arguments and the type of the return value) as required.
2. Please ensure that your code is properly formatted, such as proper variable naming conventions, consistent indentations, proper line length, etc.
3. Please ensure that you provide clear and coherent comments on your code to aid with the graders' interpretation of your code.
4. For more details regarding formatting and commenting, see the PEP 8 Style Guideline.

3.1 The Investor Application

You are required to use object-oriented programming to implement the text interface and the following functionalities described from 3.2 to 3.8, which allows users to select and perform certain operations. You should determine the proper number of classes needed instead of including all the methods in one class (for example, you may create a class 1) SimpleDataAnalyser to deal with the loading of data as well as the simple analyses; 2) DataVisualiser to deal with the visualisations; and 3) Investor to display a menu, ask for and process user inputs, etc.). Please make sure to create a main.py file to run your implemented text interface. You should also provide an instruction file in PDF format, which is no more than two pages inlength, to describe the usage of the interface. For each functionality from 3.2 to 3.8, we list a core method as shown below. Note that for these coremethods described below, you should use the same method name and include the same method parameter. The only permitted modification is to add the self keyword to the methods.

3.2. Extracting Property Information

The extract_property_info(file_path) method is responsible for reading the property information from the data file located at the specified file_path .
This method returns a dataframe.

3.3. Currency Exchange

Since many of the customers are from different countries, the currency_exchange(dataframe, exchange_rate) method is responsible for transforming the property prices in Australian dollars into the target currency according to the exchange rate. The variable dataframe is the one returned in 3.1, and the data type of exchange_rate is float. This method returns a NumPy array of transformed prices.

3.4. Suburb Property Summary

The purpose of this method is to display the summary of the properties with respect to the number of bedrooms, number of bathrooms, and number of parking spaces for a given suburb. Your task is to write a method suburb_summary(dataframe, suburb) where dataframe is the one returned by the method described in 3.1, and suburb is the target suburb to be analysed. Here, if the value of suburb is "all", the method should display the summary from allthe suburbs. If the value of suburb does not exist in the dataframe , an error message should be displayed. The summary should at least include the mean values, standard deviation, median, minimum, and maximum. This method does not have a return value.

3.5. Average Land Size

Your task here is to implement the method avg_land_size(dataframe, suburb) where dataframe is the one returned by the method described in 3.1, and suburb is the target suburb to be analysed (or all suburbs if the value of suburb is "all"). This method calculates and returns the average land size in m² of properties in the suburb (or None if the area does not exist). Note that the invalid land size values should be excluded and the units must be in square meters for some properties.

3.6. Property Value Distribution

Here, you will be visualising the property values as a histogram so as to easily present to the customers. You are provided a dictionary of key-value pairs where the keys are the names of the currency and the values are their exchange rates to Australian dollars, which you can use as a local variable withinthis method: 

currency_dict = { "AUD": 1, "USD": 0.66, "INR": 54.25, "CNY": 4.72, "JPY": 93.87, "HKD": 5.12, "KRW": 860.92, "GBP": 0.51, "EUR": 0.60, "SGD": 0.88

Your task is to write a method prop_val_distribution(dataframe, suburb, target_currency) which:


  • Takes the following parameters:
    • A dataframe
    • A suburb value
    • A target currency (whose default value is "AUD")
  • Converts the property value into the target currency if the currency is in the currency_dict . In cases where the target currency does not exist in the currency_dict , the program needs to inform the user and generate the histogram in AUD.
  • Produces a graphical representation (i.e., a histogram) of the property value distribution of the specified suburb (or all suburbs if the value of suburb is "all") based on the converted property values and saves the graphical representation as a file.
  • In cases where the target suburb does not exist in the dataframe , the program should inform the user and generate the histogram with all suburbs and save the graph as a file.
  • Note that the records with missing price values should be excluded.
You will need to invoke methods implemented in previous steps. This method does not have a return value.


3.7. Sales Trend

Here, you will need to calculate the number of properties sold in each year and visualise the results as a line chart so that a sales trend can be easily observed. The line chart should be saved as an image file locally.

Your task is to implement the method sales_trend(dataframe) where dataframe is the one returned by the method described in 3.1. The method does not have a return value.

3.8. Identifying a Property of a Specific Price in a Suburb

Your task here is to implement the locate_price(target_price, data, target_suburb) method to find out if a specific target_price value is in the list of prices from a specific suburb . In the variable data is a dataframe loaded by a previous method. You should filter the data according to the variable target_suburb to get the list of prices for the properties in the target_suburb . The variable target_price is a numeric value. This method first sorts the list of prices using a reverse insertion sort (i.e., an insertion sort algorithm that sorts the list in descending order). Then this method searches for the target_price value within the reversely sorted list of prices using recursive binary search. A boolean value of True or False will be returned by thismethod to indicate if the target_price value can be found in the list of prices filtered for the target_suburb .

4. Important Notes


  • If any exceptions/errors happen when running your program and are not properly handled, you will lose 50% of the functionality where the exceptions/errors occur. For example, if the total mark of one functionality is 10 marks and any exception happens when running this functionality which causes the program to terminate, then the maximum mark you can get is 5 instead of 10.
  • Add correct validation and output messages to make your code more user-friendly to users.
  • For each function listed in 3.2 to 3.8, add code to test each functionality and also the expected behaviour. The test code should be placed in the main.py file as comments. For example, if you have created a class named DataExtractor where extract_property_info(file_path) is an instance method:


de = DataExtractor()

df = de.extract_property_info("property_information.csv")
len(df)
# this should output 118771


  • This is an individual assignment and must be completed on your own. You must attribute the source of any part of your code that you have not written yourself.
  • The assignment must be done using PyCharm or VSCode, Python >= 3.10.
  • The Python code for this assignment must be implemented according to the PEP 8-Style Guide for Python Code.
  • The allowed libraries are OS , NumPy , Pandas , Matplotlib , Scikit-learn , and SciPy . You will receive penalties if you use any other libraries. If you are implementing unit tests, you are allowed to use unittest .
  • Commenting on your code is an essential part of the assessment criteria. In addition to inline and function commenting on your code, you should include comments/markdowns at the beginning of your program file which specify your full name, student ID, the creation date, and the last modifieddate of the program, as well as a high-level description of the program.
  • Please be careful to ensure you do not publicly post anything which includes your reasoning, logic or any part of your work to this forum. This includes posting your query to the forum and inviting other students to raise questions that may reveal your reasoning or solution.


5. Submission Requirements

The assignment must be submitted by Sunday, 19 Jan 2025, 23:59.

The following files are to be submitted on TronClass:


  • The .py files that you created to implement your assignment (i.e., code and documentation). Note that you should properly name these files to make sure their usage is self-explanatory.
  • An instruction file that explains the detailed design, usage and use cases of the program. Name the file [StudentNameInChinese]_report.pdf . The instruction file should be coherent,concise and illustrated, and should not be more than 5 pages in length.


The above files must be compressed to a .zip file named [StudentNameInChinese]_final_project.zip and submitted via TronClass.


  • No submissions will be accepted via email.
  • It is your responsibility to ENSURE that the submitted files are the correct files. We strongly recommend after uploading a submission that you check
  • its contents.
  • There are no restrictions on creating extra functions. DO NOT create redundant functions/methods.
  • Marks will be deducted for any of these requirements that are not strictly complied with.


6. Marking Guide

Your work will be marked as per the following:
  • Method Functionalities - 75 Marks
    • Extracting Property Information - 2 Mark
    • Currency Exchange - 6 Marks
    • Suburb Property Summary - 10 Marks
    • Average Land Size - 10 Marks
    • Property Value Distribution - 18 Marks
    • Sales Trend - 15 Marks
    • Identifying Price Value - 14 Marks
  • OOP Implementation and Main Logic - 25 Marks
    • Proper design of classes
    • Clear usage manual
    • Clear instructional messages
    • Good alignment to PEP 8 style
    • Detailed test codes
    • Good program logic
  • Penalty - up to 20 marks
    • Missing requirements listed in Section 4. Do and DO NOT and section 5. Submission Requirements.
Total: 100 marks, recorded as a grade out of 50

发表评论

电子邮件地址不会被公开。 必填项已用*标注