File size: 4,286 Bytes
9be4956 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
import pandas as pd
from pandas import DataFrame
from typing import Optional
from annotation.src.utils import extract_before_parenthesis
class Accommodations:
def __init__(self, path="../database/accommodations/clean_accommodations_2022.csv"):
self.path = path
self.data = pd.read_csv(self.path).dropna()[['NAME','price','room type', 'house_rules', 'minimum nights', 'maximum occupancy', 'review rate number', 'city']]
print("Accommodations loaded.")
def load_db(self):
self.data = pd.read_csv(self.path).dropna()
def run(self,
city: str,
) -> DataFrame:
"""Search for accommodations by city."""
results = self.data[self.data["city"] == city]
# results = results[results["date"] == date]
# if order == "ascPrice":
# results = results.sort_values(by=["price"], ascending=True)
# elif order == "descPrice":
# results = results.sort_values(by=["price"], ascending=False)
# elif order == "ascRate":
# results = results.sort_values(by=["review rate number"], ascending=True)
# elif order == "descRate":
# results = results.sort_values(by=["review rate number"], ascending=False)
# elif order == "ascMinumNights":
# results = results.sort_values(by=["minimum nights"], ascending=True)
# elif order == "descMinumNights":
# results = results.sort_values(by=["minimum nights"], ascending=False)
# elif order == "ascMaximumOccupancy":
# results = results.sort_values(by=["maximum occupancy"], ascending=True)
# elif order == "descMaximumOccupancy":
# results = results.sort_values(by=["maximum occupancy"], ascending=False)
# if room_type == "all":
# return results
# elif room_type == "Entire home/apt":
# return results[results["room type"]=="Entire home/apt"]
# elif room_type == "Hotel room":
# return results[results["room type"]=="Hotel room"]
# elif room_type == "Private room":
# return results[results["room type"]=="Private room"]
# elif room_type == "Shared room":
# return results[results["room type"]=="Shared room"]
# else:
# return None
if len(results) == 0:
return "There is no attraction in this city."
return results
def run_for_annotation(self,
city: str,
) -> DataFrame:
"""Search for accommodations by city."""
results = self.data[self.data["city"] == extract_before_parenthesis(city)]
# results = results[results["date"] == date]
# if order == "ascPrice":
# results = results.sort_values(by=["price"], ascending=True)
# elif order == "descPrice":
# results = results.sort_values(by=["price"], ascending=False)
# elif order == "ascRate":
# results = results.sort_values(by=["review rate number"], ascending=True)
# elif order == "descRate":
# results = results.sort_values(by=["review rate number"], ascending=False)
# elif order == "ascMinumNights":
# results = results.sort_values(by=["minimum nights"], ascending=True)
# elif order == "descMinumNights":
# results = results.sort_values(by=["minimum nights"], ascending=False)
# elif order == "ascMaximumOccupancy":
# results = results.sort_values(by=["maximum occupancy"], ascending=True)
# elif order == "descMaximumOccupancy":
# results = results.sort_values(by=["maximum occupancy"], ascending=False)
# if room_type == "all":
# return results
# elif room_type == "Entire home/apt":
# return results[results["room type"]=="Entire home/apt"]
# elif room_type == "Hotel room":
# return results[results["room type"]=="Hotel room"]
# elif room_type == "Private room":
# return results[results["room type"]=="Private room"]
# elif room_type == "Shared room":
# return results[results["room type"]=="Shared room"]
# else:
# return None
return results |