<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def groupby(self, by):
 """Group by certain columns, excluding index. Simply reset_index if desiring to group by some index column too. Parameters by : str or list of str Column(s) to groupby. Returns ------- DataFrameGroupBy Object encoding the groupby operation. """

        check_str_or_list_str(by)
        by = as_list(by)
        if len(set(by)) == len(self._data):
            raise ValueError('Cannot groupby all columns')

        from .groupby import DataFrameGroupBy

        return DataFrameGroupBy(self, by)