Repository: evidentlyai/evidently
Issue: Error in running example- CatTargetDrift
Root cause: Documentation Deficiency

The example with CatTargetDrift in the README seems to lead to an  error. Although the code with just DataDriftTab works. Just not CatTargetDriftTab. Any ideas as to what might be going on? Attached the example below with the error statement


```
import pandas as pd
from sklearn import datasets

from evidently.dashboard import Dashboard
from evidently.tabs import DataDriftTab
from evidently.tabs.cat_target_drift_tab import CatTargetDriftTab

iris = datasets.load_iris()
iris_frame = pd.DataFrame(iris.data, columns = iris.feature_names)

iris_data_and_target_drift_report = Dashboard(tabs=[DataDriftTab, CatTargetDriftTab])
iris_data_and_target_drift_report.calculate(iris_frame[:100], iris_frame[100:], column_mapping = None)
iris_data_and_target_drift_report.save("reports/my_report_with_2_tabs.html")

```

Traceback: 
```
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-1-817b60d42b2c> in <module>
     11 iris_data_and_target_drift_report = Dashboard(tabs=[DataDriftTab, CatTargetDriftTab])
     12 iris_data_and_target_drift_report.calculate(iris_frame[:100], iris_frame[100:], column_mapping = None)
---> 13 iris_data_and_target_drift_report.save("reports/my_report_with_2_tabs.html")

~/miniconda3/lib/python3.8/site-packages/evidently/dashboard/dashboard.py in save(self, filename)
    207             os.makedirs(parent_dir, exist_ok=True)
    208         with open(filename, 'w', encoding='utf-8') as out_file:
--> 209             out_file.write(self.html())

~/miniconda3/lib/python3.8/site-packages/evidently/dashboard/dashboard.py in html(self)
    200 
    201     def html(self):
--> 202         return self.__render(file_html_template)
    203 
    204     def save(self, filename):

~/miniconda3/lib/python3.8/site-packages/evidently/dashboard/dashboard.py in __render(self, template)
    156     def __render(self, template: typing.Callable[[TemplateParams], str]):
    157         dashboard_id = "evidently_dashboard_" + str(uuid.uuid4()).replace("-", "")
--> 158         tab_widgets = [t.info() for t in self.tabs_data]
    159 
    160         dashboard_info = DashboardInfo(dashboard_id, [item for tab in tab_widgets for item in tab if item is not None])

~/miniconda3/lib/python3.8/site-packages/evidently/dashboard/dashboard.py in <listcomp>(.0)
    156     def __render(self, template: typing.Callable[[TemplateParams], str]):
    157         dashboard_id = "evidently_dashboard_" + str(uuid.uuid4()).replace("-", "")
--> 158         tab_widgets = [t.info() for t in self.tabs_data]
    159 
    160         dashboard_info = DashboardInfo(dashboard_id, [item for tab in tab_widgets for item in tab if item is not None])

~/miniconda3/lib/python3.8/site-packages/evidently/tabs/base_tab.py in info(self)
     31 
     32     def info(self) -> List[BaseWidgetInfo]:
---> 33         return [w.get_info() for w in self.widgets]
     34 
     35     @abc.abstractmethod

~/miniconda3/lib/python3.8/site-packages/evidently/tabs/base_tab.py in <listcomp>(.0)
     31 
     32     def info(self) -> List[BaseWidgetInfo]:
---> 33         return [w.get_info() for w in self.widgets]
     34 
     35     @abc.abstractmethod

~/miniconda3/lib/python3.8/site-packages/evidently/widgets/widget.py in get_info(self)
     30         if self.wi:
     31             return self.wi
---> 32         raise ValueError(f"[Widget {self.title}] self.wi is None, no data available (forget to set it in widget?)")
     33 
     34     @abc.abstractmethod

ValueError: [Widget Target (Prediction) Behavior By Feature] self.wi is None, no data available (forget to set it in widget?)
```




Hi @sid-sundrani 

It looks like there is not enough data to calculate target drift, because there is no data about target in the dataset.
This can be fixed by adding the target column to the dataframe:
```
iris_frame['target'] = iris.target
```
With this instruction the example should work correctly.
We also recently added some examples in google colab and we have one with the target drift for iris dataset: https://colab.research.google.com/drive/18HvFvZeIjOmbAV7KVL103PlWlFuIjdGj?authuser=1

Hope, this will help!

Thank you for reporting this! Looks like it is time to update the example in the readme :)