text: Title: A Keyerror in pandasai code should be handled well 
  Body: ### System Info
  
  pandasai - 1.3.2
  
  ### 🐛 Describe the bug
  
  **Question asked - Plot a scatter plot to show the relation between hexometer and denominator**
  
  The above question was asked in Pandasai to do testing. Please note that there is no column called 'hexometer'.
  This is done for testing purpose. Hence it gave a keyerror in first run. Eventually, the code seems to correct and generates a new code.
  
  However the column hexometer is changed to kpi_value as can be seen below.
  
  **Can we maintain a threshold for similarity check in case of Keyerrors?**
  Else this is producing irrelevant charts which is not correct. 
  
  You generated this python code:
  # TODO import all the dependencies required
  import pandas as pd
  import matplotlib.pyplot as plt
  
  def analyze_data(dfs: list[pd.DataFrame]) -> dict:
      """
      Analyze the data
      1. Prepare: Preprocessing and cleaning data if necessary
      2. Process: Manipulating data for analysis (grouping, filtering, aggregating, etc.)
      3. Analyze: Conducting the actual analysis (if the user asks to plot a chart save it to an image in temp_chart.png and do not show the chart.)
      At the end, return a dictionary of:
      - type (possible values "string", "number", "dataframe", "plot")
      - value (can be a string, a dataframe or the path of the plot, NOT a dictionary)
      Examples:
          { "type": "string", "value": "The highest salary is $9,000." }
          or
          { "type": "number", "value": 125 }
          or
          { "type": "dataframe", "value": pd.DataFrame({...}) }
          or
          { "type": "plot", "value": "temp_chart.png" }
      """
      # Prepare: Preprocessing and cleaning data if necessary
      df = dfs[0].copy()
      df['denominator'] = df['denominator'].str.replace(',', '').astype(float)
  
      # Process: Manipulating data for analysis
      x = df['hexometer']
      y = df['denominator']
  
      # Analyze: Conducting the actual analysis
      plt.scatter(x, y)
      plt.xlabel('Hexometer')
      plt.ylabel('Denominator')
      plt.title('Relation between Hexometer and Denominator')
      plt.savefig('temp_chart.png')
      plt.close()
  
      return {"type": "plot", "value": "temp_chart.png"}
  
  It fails with the following error:
  Traceback (most recent call last):
    File "C:\Users\sb3249832\Desktop\fapi\Lib\site-packages\pandas\core\indexes\base.py", line 3802, in get_loc
      return self._engine.get_loc(casted_key)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "pandas\_libs\index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
    File "pandas\_libs\index.pyx", line 165, in pandas._libs.index.IndexEngine.get_loc
    File "pandas\_libs\hashtable_class_helper.pxi", line 5745, in pandas._libs.hashtable.PyObjectHashTable.get_item       
    File "pandas\_libs\hashtable_class_helper.pxi", line 5753, in pandas._libs.hashtable.PyObjectHashTable.get_item       
  KeyError: 'hexometer'
  
  The above exception was the direct cause of the following exception:
  
  Traceback (most recent call last):
    File "C:\Users\sb3249832\Desktop\fapi\Lib\site-packages\pandasai\smart_datalake\__init__.py", line 337, in chat       
      result = self._code_manager.execute_code(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\sb3249832\Desktop\fapi\Lib\site-packages\pandasai\helpers\code_manager.py", line 244, in execute_code  
      return analyze_data(self._get_originals(dfs))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "<string>", line 21, in analyze_data
    File "C:\Users\sb3249832\Desktop\fapi\Lib\site-packages\pandas\core\frame.py", line 3807, in __getitem__
      indexer = self.columns.get_loc(key)
                ^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\sb3249832\Desktop\fapi\Lib\site-packages\pandas\core\indexes\base.py", line 3804, in get_loc
      raise KeyError(key) from err
  KeyError: 'hexometer'
  
  
  Correct the python code and return a new python code that fixes the above mentioned error. Do not generate the same code again.
  
  INFO:     2023-11-02 12:42:24
  Code running:
  ```
  def analyze_data(dfs: list[pd.DataFrame]) ->dict:
      """
      Analyze the data
      1. Prepare: Preprocessing and cleaning data if necessary
      2. Process: Manipulating data for analysis (grouping, filtering, aggregating, etc.)
      3. Analyze: Conducting the actual analysis (if the user asks to plot a chart save it to an image in temp_chart.png and do not show the chart.)
      At the end, return a dictionary of:
      - type (possible values "string", "number", "dataframe", "plot")
      - value (can be a string, a dataframe or the path of the plot, NOT a dictionary)
      Examples:
          { "type": "string", "value": "The highest salary is $9,000." }
          or
          { "type": "number", "value": 125 }
          or
          { "type": "dataframe", "value": pd.DataFrame({...}) }
          or
          { "type": "plot", "value": "temp_chart.png" }
      """
      df = dfs[0].copy()
      df['denominator'] = df['denominator'].str.replace(',', '').astype(float)
      x = df['kpi_value']
      y = df['denominator']
      plt.scatter(x, y)
      plt.xlabel('KPI Value')
      plt.ylabel('Denominator')
      plt.title('Relation between KPI Value and Denominator')
      plt.savefig('temp_chart.png')
      plt.close()
      return {'type': 'plot', 'value': 'temp_chart.png'}
          ```
  <string>:23: UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail.
  INFO:     2023-11-02 12:42:25 Answer: {'type': 'plot', 'value': 'temp_chart.png'}
  INFO:     2023-11-02 12:42:25 Executed in: 6.909811973571777s
  C:\Users\sb3249832\Desktop\fapi\Lib\site-packages\pandasai\responses\response_parser.py:101: UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail.
    plt.imshow(image)
  C:\Users\sb3249832\Desktop\fapi\Lib\site-packages\pandasai\responses\response_parser.py:103: UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail.
    plt.show(block=is_running_in_console())
  INFO:     2023-11-02 12:42:27,947 :: 127.0.0.1:64331 - "POST /responses/answer_question HTTP/1.1" 200 OK
  INFO:     2023-11-02 12:50:00 Running job "update_config_periodically (trigger: cron[minute='*/10'], next run at: 2023-11-02 12:50:00 IST)" (scheduled at 2023-11-02 12:50:00+05:30)
  INFO:     2023-11-02 12:50:00 Job "update_config_periodically (trigger: cron[minute='*/10'], next run at: 2023-11-02 13:00:00 IST)" executed successfully
  C:\Program Files\Python311\Lib\concurrent\futures\thread.py:85: RuntimeWarning: coroutine 'update_config_periodically' was neveas never awaited
    del work_item
  RuntimeWarning: Enable tracemalloc to get the object allocation traceback
  WARNING:  2023-11-02 13:00:01 Run time of job "update_config_periodically (trigger: cron[minute='*/10'], next run at: 2023-11-023-11-02 13:10:00 IST)" was missed by 0:00:01.117145
  INFO:     2023-11-02 13:10:00 Running job "update_config_periodically (trigger: cron[minute='*/10'], next run at: 2023-11-02 131-02 13:20:00 IST)" (scheduled at 2023-11-02 13:10:00+05:30)
  INFO:     2023-11-02 13:10:00 Job "update_config_periodically (trigger: cron[minute='*/10'], next run at: 2023-11-02 13:20:00 I20:00 IST)" executed successfully
  