In [1]:
import json
import pandas as pd

In [39]:
with open('data/calc/accomodation.csv', 'r') as a:
    accom_df = pd.read_csv(a)
    
with open('data/calc/activities.csv', 'r') as b:
    activities_df = pd.read_csv(b)

with open('data/calc/clothing.csv', 'r') as c:
    clothing_df = pd.read_csv(c)
    
with open('data/calc/eating.csv', 'r') as d:
    eating_df = pd.read_csv(d)
    
with open('data/calc/services.csv', 'r') as e:
    services_df = pd.read_csv(e)

with open('data/calc/transport.csv', 'r') as f:
    transport_df = pd.read_csv(f)

In [40]:
activities_df.head()


Out[40]:
city type country price_type Never Weekly Fortnightly Monthly
0 Adelaide cinema Australia Weekly 0 21 11 5
1 Adelaide liveEvent Australia Weekly 0 58 29 15
2 Adelaide socialSport Australia Weekly 0 11 7 3
3 Adelaide nightOut Australia Weekly 0 45 23 11
4 Brisbane cinema Australia Weekly 0 17 9 4

In [24]:
calculator = [
    {"city": "adelaide", "city_label": "Adelaide"},
    {"city": "brisbane", "city_label": "Brisbane"},
    {"city": "canberra", "city_label": "Canberra"},
    {"city": "gold_coast", "city_label": "Gold Coast"},
    {"city": "hobart", "city_label": "Hobart"},
    {"city": "melbourne", "city_label": "Melbourne"},
    {"city": "perth", "city_label": "Perth"},
    {"city": "sydney", "city_label": "Sydney"}
]

In [43]:
for item in calculator:
    accomodation_data = accom_df[accom_df['City'] == item['city_label']]
    accomodation = [
        {
            "type": row["Type of accomodation"],
            "homestay": row["Homestay"],
            "sharedHouse": row['Shared House'],
            "oneBedroom": row['One Bedroom'],
            "managedApartment": row['Managed Apartment']
        }
        for i, row in accomodation_data.iterrows()
    ]
    item['accomodation'] = accomodation
    
    transport_data = transport_df[transport_df['city'] == item['city_label']]
    transport = [
        {
            "type": row["transport_type"],
            "never": row["Never"],
            "rarely": row["Rarely"],
            "sometime": row["Sometimes"],
            "often": row["Often"],
        }
        for i, row in transport_data.iterrows()
    ]
    item['transport'] = transport
    
    eating_data = eating_df[eating_df['city'] == item['city_label']]
    eating = [
        {
            "type": row["eating_type"],
            "price": row["1"]
        }
        for i, row in eating_data.iterrows()
    ]
    item['eating'] = eating
    
    services_data = services_df[services_df['city'] == item['city_label']]
    services = [
        {
            "type": row["service_type"],
            "none": 0,
            "cheap": row["Cheap"],
            "moderate": row["Moderate"],
            "expensive": row["Expensive"]
        }
        for i, row in services_data.iterrows()
    ]
    item['services'] = services
    
    clothing_data = clothing_df[clothing_df['city'] == item['city_label']]
    clothing = [
        {
            "type": row["clothing_range"],
            "price": row["1"]
        }
        for i, row in clothing_data.iterrows()
    ]
    item['clothing'] = clothing
    
    activities_data = activities_df[activities_df['city'] == item['city_label']]
    activities = [
        {
            "type": row["type"],
            "never": row["Never"],
            "weekly": row["Weekly"],
            "fortnightly": row["Fortnightly"],
            "monthly": row["Monthly"]
        }
        for i, row in activities_data.iterrows()
    ]
    item['activities'] = activities

In [47]:
json.dumps(calculator)


Out[47]:
'[{"city": "adelaide", "city_label": "Adelaide", "accomodation": [{"type": "city", "homestay": 325, "sharedHouse": 218, "oneBedroom": 440, "managedApartment": 260}, {"type": "suburb", "homestay": 325, "sharedHouse": 198, "oneBedroom": 370, "managedApartment": 260}], "transport": [{"type": "publicTransport", "never": 0, "rarely": 5, "sometime": 15, "often": 25}, {"type": "car", "never": 0, "rarely": 48, "sometime": 57, "often": 75}, {"type": "taxi", "never": 0, "rarely": 15, "sometime": 30, "often": 45}, {"type": "Bicycle/Walking", "never": 0, "rarely": 0, "sometime": 0, "often": 0}], "eating": [{"type": "Breakfast", "price": 14}, {"type": "Lunch", "price": 13}, {"type": "Dinner", "price": 20}], "services": [{"type": "gym", "none": 0, "cheap": 10, "moderate": 14, "expensive": 25}, {"type": "haircuts", "none": 0, "cheap": 6, "moderate": 14, "expensive": 21}, {"type": "cosmetics", "none": 0, "cheap": 4, "moderate": 8, "expensive": 15}, {"type": "mobilePlan", "none": 0, "cheap": 10, "moderate": 15, "expensive": 25}], "clothing": [{"type": "cheap", "price": 35}, {"type": "medium", "price": 60}, {"type": "expensive", "price": 152}], "activities": [{"type": "cinema", "never": 0, "weekly": 21, "fortnightly": 11, "monthly": 5}, {"type": "liveEvent", "never": 0, "weekly": 58, "fortnightly": 29, "monthly": 15}, {"type": "socialSport", "never": 0, "weekly": 11, "fortnightly": 7, "monthly": 3}, {"type": "nightOut", "never": 0, "weekly": 45, "fortnightly": 23, "monthly": 11}]}, {"city": "brisbane", "city_label": "Brisbane", "accomodation": [{"type": "city", "homestay": 320, "sharedHouse": 233, "oneBedroom": 700, "managedApartment": 300}, {"type": "suburb", "homestay": 320, "sharedHouse": 198, "oneBedroom": 340, "managedApartment": 280}], "transport": [{"type": "publicTransport", "never": 0, "rarely": 8, "sometime": 23, "often": 38}, {"type": "car", "never": 0, "rarely": 48, "sometime": 57, "often": 75}, {"type": "taxi", "never": 0, "rarely": 15, "sometime": 30, "often": 45}, {"type": "Bicycle/Walking", "never": 0, "rarely": 0, "sometime": 0, "often": 0}], "eating": [{"type": "Breakfast", "price": 7}, {"type": "Lunch", "price": 7}, {"type": "Dinner", "price": 10}], "services": [{"type": "gym", "none": 0, "cheap": 13, "moderate": 14, "expensive": 25}, {"type": "haircuts", "none": 0, "cheap": 13, "moderate": 18, "expensive": 29}, {"type": "cosmetics", "none": 0, "cheap": 4, "moderate": 8, "expensive": 15}, {"type": "mobilePlan", "none": 0, "cheap": 10, "moderate": 15, "expensive": 25}], "clothing": [{"type": "cheap", "price": 35}, {"type": "medium", "price": 60}, {"type": "expensive", "price": 152}], "activities": [{"type": "cinema", "never": 0, "weekly": 17, "fortnightly": 9, "monthly": 4}, {"type": "liveEvent", "never": 0, "weekly": 42, "fortnightly": 21, "monthly": 11}, {"type": "socialSport", "never": 0, "weekly": 19, "fortnightly": 11, "monthly": 5}, {"type": "nightOut", "never": 0, "weekly": 53, "fortnightly": 27, "monthly": 13}]}, {"city": "canberra", "city_label": "Canberra", "accomodation": [{"type": "city", "homestay": 335, "sharedHouse": 298, "oneBedroom": 505, "managedApartment": 222}, {"type": "suburb", "homestay": 335, "sharedHouse": 218, "oneBedroom": 345, "managedApartment": 200}], "transport": [{"type": "publicTransport", "never": 0, "rarely": 5, "sometime": 15, "often": 25}, {"type": "car", "never": 0, "rarely": 48, "sometime": 57, "often": 75}, {"type": "taxi", "never": 0, "rarely": 15, "sometime": 30, "often": 45}, {"type": "Bicycle/Walking", "never": 0, "rarely": 0, "sometime": 0, "often": 0}], "eating": [{"type": "Breakfast", "price": 7}, {"type": "Lunch", "price": 7}, {"type": "Dinner", "price": 10}], "services": [{"type": "gym", "none": 0, "cheap": 6, "moderate": 14, "expensive": 16}, {"type": "haircuts", "none": 0, "cheap": 9, "moderate": 24, "expensive": 31}, {"type": "cosmetics", "none": 0, "cheap": 4, "moderate": 8, "expensive": 15}, {"type": "mobilePlan", "none": 0, "cheap": 10, "moderate": 15, "expensive": 25}], "clothing": [{"type": "cheap", "price": 35}, {"type": "medium", "price": 60}, {"type": "expensive", "price": 152}], "activities": [{"type": "cinema", "never": 0, "weekly": 13, "fortnightly": 7, "monthly": 3}, {"type": "liveEvent", "never": 0, "weekly": 78, "fortnightly": 39, "monthly": 20}, {"type": "socialSport", "never": 0, "weekly": 13, "fortnightly": 8, "monthly": 3}, {"type": "nightOut", "never": 0, "weekly": 49, "fortnightly": 25, "monthly": 12}]}, {"city": "gold_coast", "city_label": "Gold Coast", "accomodation": [{"type": "city", "homestay": 320, "sharedHouse": 238, "oneBedroom": 295, "managedApartment": 237}, {"type": "suburb", "homestay": 320, "sharedHouse": 200, "oneBedroom": 270, "managedApartment": 237}], "transport": [{"type": "publicTransport", "never": 0, "rarely": 4, "sometime": 11, "often": 18}, {"type": "car", "never": 0, "rarely": 48, "sometime": 57, "often": 75}, {"type": "taxi", "never": 0, "rarely": 15, "sometime": 30, "often": 45}, {"type": "Bicycle/Walking", "never": 0, "rarely": 0, "sometime": 0, "often": 0}], "eating": [{"type": "Breakfast", "price": 7}, {"type": "Lunch", "price": 7}, {"type": "Dinner", "price": 10}], "services": [{"type": "gym", "none": 0, "cheap": 16, "moderate": 25, "expensive": 30}, {"type": "haircuts", "none": 0, "cheap": 8, "moderate": 19, "expensive": 29}, {"type": "cosmetics", "none": 0, "cheap": 4, "moderate": 8, "expensive": 15}, {"type": "mobilePlan", "none": 0, "cheap": 10, "moderate": 15, "expensive": 25}], "clothing": [{"type": "cheap", "price": 35}, {"type": "medium", "price": 60}, {"type": "expensive", "price": 152}], "activities": [{"type": "cinema", "never": 0, "weekly": 8, "fortnightly": 4, "monthly": 2}, {"type": "liveEvent", "never": 0, "weekly": 56, "fortnightly": 28, "monthly": 14}, {"type": "socialSport", "never": 0, "weekly": 7, "fortnightly": 4, "monthly": 2}, {"type": "nightOut", "never": 0, "weekly": 45, "fortnightly": 23, "monthly": 11}]}, {"city": "hobart", "city_label": "Hobart", "accomodation": [{"type": "city", "homestay": 335, "sharedHouse": 218, "oneBedroom": 540, "managedApartment": 229}, {"type": "suburb", "homestay": 335, "sharedHouse": 218, "oneBedroom": 370, "managedApartment": 219}], "transport": [{"type": "publicTransport", "never": 0, "rarely": 2, "sometime": 7, "often": 12}, {"type": "car", "never": 0, "rarely": 48, "sometime": 57, "often": 75}, {"type": "taxi", "never": 0, "rarely": 15, "sometime": 30, "often": 45}, {"type": "Bicycle/Walking", "never": 0, "rarely": 0, "sometime": 0, "often": 0}], "eating": [{"type": "Breakfast", "price": 7}, {"type": "Lunch", "price": 7}, {"type": "Dinner", "price": 10}], "services": [{"type": "gym", "none": 0, "cheap": 9, "moderate": 12, "expensive": 20}, {"type": "haircuts", "none": 0, "cheap": 10, "moderate": 17, "expensive": 26}, {"type": "cosmetics", "none": 0, "cheap": 4, "moderate": 8, "expensive": 15}, {"type": "mobilePlan", "none": 0, "cheap": 10, "moderate": 15, "expensive": 25}], "clothing": [{"type": "cheap", "price": 35}, {"type": "medium", "price": 60}, {"type": "expensive", "price": 152}], "activities": [{"type": "cinema", "never": 0, "weekly": 20, "fortnightly": 10, "monthly": 5}, {"type": "liveEvent", "never": 0, "weekly": 47, "fortnightly": 24, "monthly": 12}, {"type": "socialSport", "never": 0, "weekly": 9, "fortnightly": 5, "monthly": 2}, {"type": "nightOut", "never": 0, "weekly": 45, "fortnightly": 23, "monthly": 11}]}, {"city": "melbourne", "city_label": "Melbourne", "accomodation": [{"type": "city", "homestay": 335, "sharedHouse": 243, "oneBedroom": 675, "managedApartment": 388}, {"type": "suburb", "homestay": 335, "sharedHouse": 225, "oneBedroom": 450, "managedApartment": 388}], "transport": [{"type": "publicTransport", "never": 0, "rarely": 8, "sometime": 23, "often": 38}, {"type": "car", "never": 0, "rarely": 48, "sometime": 57, "often": 75}, {"type": "taxi", "never": 0, "rarely": 15, "sometime": 30, "often": 45}, {"type": "Bicycle/Walking", "never": 0, "rarely": 0, "sometime": 0, "often": 0}], "eating": [{"type": "Breakfast", "price": 7}, {"type": "Lunch", "price": 7}, {"type": "Dinner", "price": 10}], "services": [{"type": "gym", "none": 0, "cheap": 14, "moderate": 16, "expensive": 25}, {"type": "haircuts", "none": 0, "cheap": 9, "moderate": 16, "expensive": 23}, {"type": "cosmetics", "none": 0, "cheap": 4, "moderate": 8, "expensive": 15}, {"type": "mobilePlan", "none": 0, "cheap": 10, "moderate": 15, "expensive": 25}], "clothing": [{"type": "cheap", "price": 35}, {"type": "medium", "price": 60}, {"type": "expensive", "price": 152}], "activities": [{"type": "cinema", "never": 0, "weekly": 21, "fortnightly": 11, "monthly": 5}, {"type": "liveEvent", "never": 0, "weekly": 43, "fortnightly": 22, "monthly": 11}, {"type": "socialSport", "never": 0, "weekly": 14, "fortnightly": 8, "monthly": 4}, {"type": "nightOut", "never": 0, "weekly": 49, "fortnightly": 25, "monthly": 12}]}, {"city": "perth", "city_label": "Perth", "accomodation": [{"type": "city", "homestay": 325, "sharedHouse": 205, "oneBedroom": 410, "managedApartment": 255}, {"type": "suburb", "homestay": 325, "sharedHouse": 188, "oneBedroom": 370, "managedApartment": 240}], "transport": [{"type": "publicTransport", "never": 0, "rarely": 7, "sometime": 20, "often": 33}, {"type": "car", "never": 0, "rarely": 48, "sometime": 57, "often": 75}, {"type": "taxi", "never": 0, "rarely": 15, "sometime": 30, "often": 45}, {"type": "Bicycle/Walking", "never": 0, "rarely": 0, "sometime": 0, "often": 0}], "eating": [{"type": "Breakfast", "price": 7}, {"type": "Lunch", "price": 7}, {"type": "Dinner", "price": 10}], "services": [{"type": "gym", "none": 0, "cheap": 15, "moderate": 19, "expensive": 25}, {"type": "haircuts", "none": 0, "cheap": 5, "moderate": 18, "expensive": 30}, {"type": "cosmetics", "none": 0, "cheap": 4, "moderate": 8, "expensive": 15}, {"type": "mobilePlan", "none": 0, "cheap": 10, "moderate": 15, "expensive": 25}], "clothing": [{"type": "cheap", "price": 35}, {"type": "medium", "price": 60}, {"type": "expensive", "price": 152}], "activities": [{"type": "cinema", "never": 0, "weekly": 18, "fortnightly": 9, "monthly": 5}, {"type": "liveEvent", "never": 0, "weekly": 43, "fortnightly": 22, "monthly": 11}, {"type": "socialSport", "never": 0, "weekly": 13, "fortnightly": 8, "monthly": 3}, {"type": "nightOut", "never": 0, "weekly": 53, "fortnightly": 27, "monthly": 13}]}, {"city": "sydney", "city_label": "Sydney", "accomodation": [{"type": "city", "homestay": 335, "sharedHouse": 283, "oneBedroom": 745, "managedApartment": 405}, {"type": "suburb", "homestay": 335, "sharedHouse": 238, "oneBedroom": 610, "managedApartment": 390}], "transport": [{"type": "publicTransport", "never": 0, "rarely": 11, "sometime": 33, "often": 54}, {"type": "car", "never": 0, "rarely": 48, "sometime": 57, "often": 75}, {"type": "taxi", "never": 0, "rarely": 15, "sometime": 30, "often": 45}, {"type": "Bicycle/Walking", "never": 0, "rarely": 0, "sometime": 0, "often": 0}], "eating": [{"type": "Breakfast", "price": 7}, {"type": "Lunch", "price": 7}, {"type": "Dinner", "price": 10}], "services": [{"type": "gym", "none": 0, "cheap": 16, "moderate": 18, "expensive": 25}, {"type": "haircuts", "none": 0, "cheap": 6, "moderate": 14, "expensive": 35}, {"type": "cosmetics", "none": 0, "cheap": 4, "moderate": 8, "expensive": 15}, {"type": "mobilePlan", "none": 0, "cheap": 10, "moderate": 15, "expensive": 25}], "clothing": [{"type": "cheap", "price": 35}, {"type": "medium", "price": 60}, {"type": "expensive", "price": 152}], "activities": [{"type": "cinema", "never": 0, "weekly": 23, "fortnightly": 12, "monthly": 6}, {"type": "liveEvent", "never": 0, "weekly": 54, "fortnightly": 27, "monthly": 14}, {"type": "socialSport", "never": 0, "weekly": 15, "fortnightly": 9, "monthly": 4}, {"type": "nightOut", "never": 0, "weekly": 49, "fortnightly": 25, "monthly": 12}]}]'

In [ ]: