Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due
Program Design in Python Final Project
- 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
- Email: [email protected] (DO NOT sumbit assignments to this email address)
|
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
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:
3.1 The Investor Application
3.2. Extracting Property Information
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
3.5. Average Land Size
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
- 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.
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
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()
- 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
- 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.