<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def generate_data_chunk_format(df, column_id, column_kind, column_value):
 """Converts the dataframe df in into a list of individual time seriess. E.g. the DataFrame ==== ====== ========= id kind val ==== ====== ========= 1 a -0.21761 1 a -0.613667 1 a -2.07339 2 b -0.576254 2 b -1.21924 ==== ====== ========= into [(1, 'a', pd.Series([-0.217610, -0.613667, -2.073386]), (2, 'b', pd.Series([-0.576254, -1.219238])] The data is separated out into those single time series and the _do_extraction_on_chunk is called on each of them. The results are then combined into a single pandas DataFrame. The call is either happening in parallel or not and is showing a progress bar or not depending on the given flags. :param df: The dataframe in the normalized format which is used for extraction. :type df: pd.DataFrame :param column_id: The name of the id column to group by. :type column_id: str :param column_kind: The name of the column keeping record on the kind of the value. :type column_kind: str :param column_value: The name for the column keeping the value itself. :type column_value: str :return: the data in chunks :rtype: list """

    MAX_VALUES_GROUPBY = 2147483647

    if df[[column_id, column_kind]].nunique().prod() >= MAX_VALUES_GROUPBY:
        _logger.error(
            "The time series container has {} different ids and {} different kind of time series, in total {} possible combinations. "
            "Due to a limitation in pandas we can only process a maximum of {} id/kind combinations. Please reduce your time series container and restart "
            "the calculation".format(
                df[column_id].nunique(), df[column_kind].nunique(),
                df[[column_id, column_kind]].nunique().prod(), MAX_VALUES_GROUPBY)
        )
        raise ValueError(
            "Number of ids/kinds are too high. Please reduce your data size and run feature extraction again.")
    data_in_chunks = [x + (y,) for x, y in
                      df.groupby([column_id, column_kind], as_index=True)[column_value]]

    return data_in_chunks