added 6 more filters
This commit is contained in:
55
utils.py
55
utils.py
@@ -750,7 +750,12 @@ class QualtricsSurvey(QualtricsPlotsMixin):
|
||||
self.filter_consumer:list = None
|
||||
self.filter_ethnicity:list = None
|
||||
self.filter_income:list = None
|
||||
|
||||
self.filter_business_owner:list = None # QID4
|
||||
self.filter_employment_status:list = None # QID13
|
||||
self.filter_personal_products:list = None # QID14
|
||||
self.filter_ai_user:list = None # QID22
|
||||
self.filter_investable_assets:list = None # QID16
|
||||
self.filter_industry:list = None # QID17
|
||||
|
||||
|
||||
|
||||
@@ -838,6 +843,12 @@ class QualtricsSurvey(QualtricsPlotsMixin):
|
||||
self.options_consumer = sorted(df['Consumer'].drop_nulls().unique().to_list()) if 'Consumer' in df.columns else []
|
||||
self.options_ethnicity = sorted(df['QID3'].drop_nulls().unique().to_list()) if 'QID3' in df.columns else []
|
||||
self.options_income = sorted(df['QID15'].drop_nulls().unique().to_list()) if 'QID15' in df.columns else []
|
||||
self.options_business_owner = sorted(df['QID4'].drop_nulls().unique().to_list()) if 'QID4' in df.columns else []
|
||||
self.options_employment_status = sorted(df['QID13'].drop_nulls().unique().to_list()) if 'QID13' in df.columns else []
|
||||
self.options_personal_products = sorted(df['QID14'].drop_nulls().unique().to_list()) if 'QID14' in df.columns else []
|
||||
self.options_ai_user = sorted(df['QID22'].drop_nulls().unique().to_list()) if 'QID22' in df.columns else []
|
||||
self.options_investable_assets = sorted(df['QID16'].drop_nulls().unique().to_list()) if 'QID16' in df.columns else []
|
||||
self.options_industry = sorted(df['QID17'].drop_nulls().unique().to_list()) if 'QID17' in df.columns else []
|
||||
|
||||
return df.lazy()
|
||||
|
||||
@@ -854,15 +865,21 @@ class QualtricsSurvey(QualtricsPlotsMixin):
|
||||
|
||||
return q.select(QIDs).rename(rename_dict)
|
||||
|
||||
def filter_data(self, q: pl.LazyFrame, age:list=None, gender:list=None, consumer:list=None, ethnicity:list=None, income:list=None) -> pl.LazyFrame:
|
||||
def filter_data(self, q: pl.LazyFrame, age:list=None, gender:list=None, consumer:list=None, ethnicity:list=None, income:list=None, business_owner:list=None, employment_status:list=None, personal_products:list=None, ai_user:list=None, investable_assets:list=None, industry:list=None) -> pl.LazyFrame:
|
||||
"""Filter data based on provided parameters
|
||||
|
||||
Possible parameters:
|
||||
- age: list of age groups to include
|
||||
- gender: list
|
||||
- consumer: list
|
||||
- ethnicity: list
|
||||
- income: list
|
||||
- age: list of age groups to include (QID1)
|
||||
- gender: list (QID2)
|
||||
- consumer: list (Consumer)
|
||||
- ethnicity: list (QID3)
|
||||
- income: list (QID15)
|
||||
- business_owner: list (QID4)
|
||||
- employment_status: list (QID13)
|
||||
- personal_products: list (QID14)
|
||||
- ai_user: list (QID22)
|
||||
- investable_assets: list (QID16)
|
||||
- industry: list (QID17)
|
||||
|
||||
Also saves the result to self.data_filtered.
|
||||
"""
|
||||
@@ -888,7 +905,29 @@ class QualtricsSurvey(QualtricsPlotsMixin):
|
||||
if income is not None:
|
||||
q = q.filter(pl.col('QID15').is_in(income))
|
||||
|
||||
self
|
||||
self.filter_business_owner = business_owner
|
||||
if business_owner is not None:
|
||||
q = q.filter(pl.col('QID4').is_in(business_owner))
|
||||
|
||||
self.filter_employment_status = employment_status
|
||||
if employment_status is not None:
|
||||
q = q.filter(pl.col('QID13').is_in(employment_status))
|
||||
|
||||
self.filter_personal_products = personal_products
|
||||
if personal_products is not None:
|
||||
q = q.filter(pl.col('QID14').is_in(personal_products))
|
||||
|
||||
self.filter_ai_user = ai_user
|
||||
if ai_user is not None:
|
||||
q = q.filter(pl.col('QID22').is_in(ai_user))
|
||||
|
||||
self.filter_investable_assets = investable_assets
|
||||
if investable_assets is not None:
|
||||
q = q.filter(pl.col('QID16').is_in(investable_assets))
|
||||
|
||||
self.filter_industry = industry
|
||||
if industry is not None:
|
||||
q = q.filter(pl.col('QID17').is_in(industry))
|
||||
|
||||
self.data_filtered = q
|
||||
return self.data_filtered
|
||||
|
||||
Reference in New Issue
Block a user