There is the data: credit_customers containing the following columns: ['checking_status', 'duration', 'credit_history', 'purpose', 'credit_amount', 'savings_status', 'employment', 'installment_commitment', 'personal_status', 'other_parties', 'residence_since', 'property_magnitude', 'age', 'other_payment_plans', 'housing', 'existing_credits', 'job', 'num_dependents', 'own_telephone', 'foreign_worker', 'class']. 
--- The description for each column this data is: 
Checking_status: Status of the applicant's checking account ("no checking": No checking account, "<0": Overdrawn or negative balance, "0<=X<200": Low positive balance, e.g., between $0 and $200, and ">=200": Healthy balance)
Duration: Duration of the loan or credit term (measured in months)
Credit_history: Applicant's past handling of credit ("no credits/all paid": No prior credit or all previous credits paid off, "existing paid": Current credits are being paid off diligently, "critical/other existing credit": Past or current credits with issues, like late payments, "delayed previously": History of delayed payments)
Purpose: Reason for the loan or credit application (purchasing a car, financing education, buying electronics ...etc)
Credit_amount: Amount of money requested in the loan or credit application
Savings_status: Amount of savings the applicant has ("no known savings": No savings account or negligible savings, "<100": Savings less than $100, "100<=X<500": Savings between $100 and $500, "500<=X<1000": Savings between $500 and $1000, and ">=1000": Savings of $1000 or more)
Employment: Applicant's employment status or the length of their current employment ("unemployed": No current employment, "<1": Employed for less than a year, "1<=X<4": Employed between 1 and 4 years, ">=7": Employed for 7 years or more)
Installment_commitment: Portion of the applicant's disposable income that is allocated for loan repayments (represented as a percentage or a fixed numerical value)
Personal_status: Details of the applicant's personal and demographic information ("male single": A single male, "female div/dep/mar": A divorced, separated, or married female, "male div/sep": A divorced or separated male, and "male mar/wid": A married or widowed male)
Other_parties: Any third parties involved in the credit agreement ("none": No other parties involved, "guarantor": A guarantor is present who guarantees repayment, and "co-applicant": Another individual is co-signing the loan)
Residence_since: Length of time the applicant has been living at their current residence (measured in years)
Property_magnitude: Type or value of property the applicant owns, serving as potential collateral ("real estate": Owning a house or land, "life insurance": Having a life insurance policy with a cash value, "car": Owning a car, and "no known property": No property that can be used as collateral)
Age: Age of the applicant
Other_payment_plans: Any other ongoing loans or financial obligations the applicant has outside of the loan in question ("none": No other payment plans or ongoing loans, "bank": The applicant has other loans or payment plans with a bank, and "stores": The applicant has credit obligations with stores or retail chains)
Housing: Living situation of the applicant ("own": The applicant owns their home, "rent": The applicant is renting their living space, and "for free": The applicant lives in a space without paying rent (e.g., with family))
Existing_credits: Number of current credit lines or loans that the applicant already has (represented numerically)
Job: Applicant's employment type ("skilled": Professionally skilled job or a white-collar occupation, "unskilled resident": Unskilled job and residing in the country, "high qualif/self emp/mgmt": Highly qualified, self-employed, or in management positions, and "unemp/unskilled non res": Unemployed, lacks professional or skilled training, and is not a resident of the country)
Num_dependents: Number of individuals financially dependent on the applicant
Own_telephone: Whether the applicant has a telephone
Foreign_worker: Whether the applicant is a foreign worker
Class: Target variable for a predictive model, indicating the risk category of the credit application ("good": Low risk, indicating a high likelihood of timely repayment, or "bad": High risk, suggesting potential difficulties in repaying the loan)
---
Considering contents from the dataset and requirements from user. Please note DO NOT CHANGE FILE AND VARIABLE NAMES THAT I HAVE SET!
Interactions begin:
[USER (data scientist)]: Hey there! I've got this dataset called credit_customers, and I wanna find clients with high credit amounts and long loan durations.

[YOU (AI assistant)]: Absolutely! Let's break it down. First, we need to calculate the 75th percentile for credit_amount and duration. Need a hand with that? 

[USER (data scientist)]: Yeah, show me how to get the 75th percentile for both of those. Please calculate and display the 75th percentile values for 'credit_amount' and 'duration' in the 'credit_customers' dataset.

[YOU (AI assistant)]: No problem! Here's how you can calculate the 75th percentile for credit_amount and duration :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file, fetch_column, calculate_quantile
  
# Load the dataset using the custom function  
credit_customers = read_csv_file("credit_customers.csv") 
  
# Calculate the 75th percentile for credit_amount and duration  
credit_amount_column = fetch_column(credit_customers, 'credit_amount')  
duration_column = fetch_column(credit_customers, 'duration')  
  
credit_amount_75th = calculate_quantile(credit_amount_column, 0.75)  
duration_75th = calculate_quantile(duration_column, 0.75)  
  
print(f"credit_amount_75th: {credit_amount_75th}, duration_75th: {duration_75th}")

'''

[USER (data scientist)]: Cool! Now, how do I filter the dataset to keep only clients with amounts and durations higher than these values? Please generate a DataFrame representing customers in the 'credit_customers' dataset with credit amounts and durations greater than their respective 75th percentile values.

[YOU (AI assistant)]: You got it! Just use this code to filter the dataset based on the calculated values :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file, create_condition, logical_and, filter_by_condition
  
# Load the dataset using the custom function  
credit_customers = read_csv_file("credit_customers.csv") 
  
# Create conditions for filtering the dataset  
credit_amount_condition = create_condition(credit_amount_column, credit_amount_75th)  
duration_condition = create_condition(duration_column, duration_75th)  
  
# Combine conditions  
combined_condition = logical_and(credit_amount_condition, duration_condition)  
  
# Filter the dataset based on the combined condition  
high_credit_long_duration = filter_by_condition(credit_customers, combined_condition)  
  
print(f"high_credit_long_duration: {high_credit_long_duration}")  

'''

[USER (data scientist)]: Nice one! But I only need the credit_amount and duration columns from this filtered data. How do I get those? Please generate a DataFrame representing a filtered subset of the 'high_credit_long_duration' group in the 'credit_customers' dataset, including only the 'credit_amount' and 'duration' columns.

[YOU (AI assistant)]: Easy peasy! Use this code to extract the columns you need :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file
  
# Load the dataset using the custom function  
credit_customers = read_csv_file("credit_customers.csv") 
  
# Extract the required information (client IDs, credit amounts, and loan durations)  
high_credit_long_duration_filtered = high_credit_long_duration[['credit_amount', 'duration']] 

print(f"high_credit_long_duration: {high_credit_long_duration_filtered}")  

'''

[USER (data scientist)]: Sweet! Last thing, can you help me turn the result into a list of tuples? Please generate a list of tuples representing rows from a filtered DataFrame.

[YOU (AI assistant)]: Of course! Here's the code to convert the result into a list of tuples :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file, convert_to_tuples
  
# Load the dataset using the custom function  
credit_customers = read_csv_file("credit_customers.csv") 
  
# Convert the result to a list of tuples  
result_list = list(convert_to_tuples(high_credit_long_duration_filtered))

print(f"high_credit_long_duration: {result_list}")  

'''

[USER (data scientist)]: Hey, I've got this dataset of clients and their credit history. I need to find out who's been late on payments or defaulted before. Can you help me out?

[YOU (AI assistant)]: Of course! I'd be happy to help. Just let me know the name of the dataset and which column has the credit history info. 

[USER (data scientist)]: The dataset's called 'high_credit_long_duration', and you'll find the credit history in the 'credit_history' column. Let's first filter out the clients with a history of late payments which means who has been late on payments refers to 'credit_history' equals to 'delayed previously'. Please generate a DataFrame containing only the customers with a history of delayed payments.

[YOU (AI assistant)]: Got it, thanks! Here's the code for that. And do you want me to grab the client IDs for these folks? :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file, filter_by_value

# Load the dataset  
credit_customers = read_csv_file("credit_customers.csv")  
  
late_payments = filter_by_value(high_credit_long_duration, 'credit_history', 'delayed previously')  
  
print(f"late_payments: {late_payments}")

'''

[USER (data scientist)]: Yeah, that'd be great. Please generate an Index object containing the IDs of customers with late payments.

[YOU (AI assistant)]: No problem! Here's the code to get those client IDs :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file, fetch_index

# Load the dataset  
credit_customers = read_csv_file("credit_customers.csv") 
  
# Extract the client IDs  
result = fetch_index(late_payments)  

print(f"result_IDs: {result}")

'''

[USER (data scientist)]: A list would be perfect. Please generate a list from the 'result_IDs' series in the dataset.

[YOU (AI assistant)]: You got it! Here's the code to turn the result into a list :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file, convert_to_list

# Load the dataset  
credit_customers = read_csv_file("credit_customers.csv")  
  
# Convert the result to a list  
result_list = convert_to_list(result)  

print(f"result_list: {result_list}")

'''

[USER (data scientist)]: I've got this dataset called "high_credit_long_duration" and I need to find clients with multiple existing credits and high installment commitments. We also assume that `high` installment commitments are those above the `median` value of the 'installment_commitment' column. Can you help me out? Please generate a DataFrame of clients with multiple existing credits and higher than median installment commitments.

[YOU (AI assistant)]: Sure! You can use the following code to find clients with multiple existing credits and high installment commitments :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file, calculate_median, filter_by_condition, create_condition, logical_and

# Load the dataset  
credit_customers = read_csv_file("credit_customers.csv") 
  
# Filter the clients with multiple existing credits and high installment commitments  
installment_commitment_median = calculate_median(credit_customers, 'installment_commitment')  
multiple_credits_high_commitment = filter_by_condition(high_credit_long_duration, logical_and(create_condition(high_credit_long_duration['existing_credits'], 1), create_condition(credit_customers['installment_commitment'], installment_commitment_median)))  
  
print(f"multiple_credits_high_commitment: {multiple_credits_high_commitment}")

'''

[USER (data scientist)]: Great! Can you give me the client IDs with multiple existing credits and high installment commitments? Please generate an Index object containing the indices of customers with multiple credits and high commitment.

[YOU (AI assistant)]: No problem! Here's the code to get those client IDs :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file, fetch_index

# Load the dataset  
credit_customers = read_csv_file("credit_customers.csv")  
  
# Extract the client IDs  
result = fetch_index(multiple_credits_high_commitment) 

print(f"multiple_credits_high_commitment_idx: {result}")

'''

[USER (data scientist)]: That looks good! But, a list would be perfect. Please generate a list containing specific indices or elements from the dataset.

[YOU (AI assistant)]: You got it! Here's the code to turn the result into a list :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file, convert_to_list

# Load the dataset  
credit_customers = read_csv_file("credit_customers.csv")  
  
# Convert the result to a list  
result_list = convert_to_list(result)  

print(f"result_list: {result_list}")

'''

[USER (data scientist)]: Hey, I've got this dataset called "high_credit_long_duration" and I need to filter out some clients based on their age. Can you help me with that?

[YOU (AI assistant)]: Of course! Let's start by setting a lower age limit. What's the youngest age you want to include? 

[USER (data scientist)]: I'm thinking 25 years old should be the minimum. Please generate a DataFrame of clients aged 25 and above.

[YOU (AI assistant)]: Alright, let's filter out clients who are at least 25 years old. Here's the code for that :
'''
import pandas as pd   
import pickle
from decision_company import read_csv_file, filter_by_condition

# Load the dataset  
credit_customers = read_csv_file("credit_customers.csv")  
  
# Create conditions  
condition1 = high_credit_long_duration['age'] >= 25 
# Filter the clients aged between 25 and 55  
clients_min_age = filter_by_condition(high_credit_long_duration, condition1) 
  
print(f"clients_min_age: {clients_min_age}")

'''

[USER (data scientist)]: Cool, now I also want to set an upper limit. Let's say no one older than 55 years. Please generate a DataFrame of clients aged between 25 to 55 years.

My template of code snippet is:

---BEGIN CODE TEMPLATE---

import pandas as pd 
import pickle
from decision_company import read_csv_file, 

# please import the necessary private functions from decision_company first

# Load the dataset 
credit_customers = read_csv_file("credit_customers.csv") 
 
# YOUR SOLUTION BEGIN:
<code1>
[COMPLETE YOUR CODE]
</code1>
# YOUR SOLUTION END

print(f"clients_25_to_55: {clients_25_to_55}") 

# save data
pickle.dump(clients_25_to_55, open("./pred_result/clients_25_to_55.pkl","wb"))

---END CODE TEMPLATE---

Please note that you have to generate the WHOLE python code instead of code segments based on the code snippet using Pandas library 2.0.3 version and Matplotlib library 3.7.4 version. You must keep all comments in code snippet unchanged.

[YOU (AI assistant)]: Got it! Let's modify the previous code to include clients aged between 25 and 55:
'''
import pandas as pd 
import pickle
from decision_company import read_csv_file, 

# please import the necessary private functions from decision_company first

# Load the dataset 
credit_customers = read_csv_file("credit_customers.csv") 
 
# YOUR SOLUTION BEGIN:
