Source code for ads.type_discovery.type_discovery_driver
#!/usr/bin/env python# -*- coding: utf-8; -*-# Copyright (c) 2020, 2022 Oracle and/or its affiliates.# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/from__future__importprint_function,absolute_importimportpandasaspdfromads.commonimportutilsfromads.type_discovery.constant_detectorimportConstantDetectorfromads.type_discovery.continuous_detectorimportContinuousDetectorfromads.type_discovery.credit_card_detectorimportCreditCardDetectorfromads.type_discovery.datetime_detectorimportDateTimeDetectorfromads.type_discovery.discrete_detectorimportDiscreteDetectorfromads.type_discovery.document_detectorimportDocumentDetectorfromads.type_discovery.latlon_detectorimportLatLonDetectorfromads.type_discovery.phone_number_detectorimportPhoneNumberDetectorfromads.type_discovery.unknown_detectorimportUnknownDetectorfromads.type_discovery.zipcode_detectorimportZipCodeDetectorfromads.type_discovery.typed_featureimportContinuousTypedFeature## these should be in precendence order, from low to high#discovery_plugins=[ConstantDetector(),DocumentDetector(),ZipCodeDetector(),LatLonDetector(),CreditCardDetector(),PhoneNumberDetector(),DateTimeDetector(),DiscreteDetector(),ContinuousDetector(),UnknownDetector(),]
[docs]classTypeDiscoveryDriver:## takes a pandas series#
[docs]defdiscover(self,name:str,s:pd.Series,is_target:bool=False):"""return the type of series Parameters ---------- name : type variable name to discover. s : type series of values to 'type' is_target : type when true the rules differ, any continuous is contunuous regardless of other rules Returns ------- type one of: ConstantDetector, DocumentDetector, ZipCodeDetector, LatLonDetector, CreditCardDetector, PhoneNumberDetector, DateTimeDetector, DiscreteDetector, ContinuousDetector, """assert(type(s).__name__=="Series"),"Type discovery can only be performed on a pandas.Series"ifis_targetandContinuousDetector._target_is_continuous(s):returnContinuousTypedFeature.build(name,s)## to lazily evaluate the discover method we use a generator expression iterable#returnutils.first_not_none((plugin.discover(name,s)forpluginindiscovery_plugins))