def timeSeries(self, tag = None, outputFile = None, giveYears = True, greatestFirst = True, limitTo = False, pandasMode = True):
        """Creates an pandas dict of the ordered list of all the values of _tag_, with and ranked by the year the occurred in, multiple year occurrences will create multiple entries. A list can also be returned with the the counts or years added or it can be written to a file.

        If no _tag_ is given the `Records` in the collection will be used

        # Parameters

        _tag_ : `optional str`

        > Default `None`, if provided the tag will be ordered

        _outputFile_ : `optional str`

        > A file path to write a csv with 2 columns, one the tag values the other their years

        _giveYears_ : `optional bool`

        > Default `True`, if `True` the retuned list will be composed of tuples the first values being the tag value and the second their years.

        _greatestFirst_ : `optional bool`

        > Default `True`, if `True` the returned list will be ordered with the highest years first, otherwise the lowest years will be first.

        _pandasMode_ : `optional bool`

        > Default `True`, if `True` a `dict` ready for pandas will be returned, otherwise a list

        _limitTo_ : `optional list[values]`

        > Default `None`, if a list is provided only those values in the list will be counted or returned

        # Returns

        `dict[str:list[value]] or list[str]`

        > A `dict` or `list` will be returned depending on if _pandasMode_ is `True`
        """
        seriesDict = {}
        for R in self:
            #This should be faster than using get, since get is a wrapper for __getitem__
            try:
                year = R['year']
            except KeyError:
                continue
            if tag is None:
                seriesDict[R] = {year : 1}
            else:
                try:
                    val = R[tag]
                except KeyError:
                    continue
                if not isinstance(val, list):
                    val = [val]
                for entry in val:
                    if limitTo and entry not in limitTo:
                        continue
                    if entry in seriesDict:
                        try:
                            seriesDict[entry][year] += 1
                        except KeyError:
                            seriesDict[entry][year] = 1
                    else:
                        seriesDict[entry] = {year : 1}
        seriesList = []
        for e, yd in seriesDict.items():
            seriesList += [(e, y) for y in yd.keys()]
        seriesList = sorted(seriesList, key = lambda x: x[1], reverse = greatestFirst)
        if outputFile is not None:
            with open(outputFile, 'w') as f:
                writer = csv.writer(f, dialect = 'excel')
                writer.writerow((str(tag), 'years'))
                writer.writerows(((k,'|'.join((str(y) for y in v))) for k,v in seriesDict.items()))
        if pandasMode:
            panDict = {'entry' : [], 'count' : [], 'year' : []}
            for entry, year in seriesList:
                panDict['entry'].append(entry)
                panDict['year'].append(year)
                panDict['count'].append(seriesDict[entry][year])
            return panDict
        elif giveYears:
            return seriesList
        else:
            return [e for e,c in seriesList]
Creates an pandas dict of the ordered list of all the values of _tag_, with and ranked by the year the occurred in, multiple year occurrences will create multiple entries. A list can also be returned with the the counts or years added or it can be written to a file.

        If no _tag_ is given the `Records` in the collection will be used

        # Parameters

        _tag_ : `optional str`

        > Default `None`, if provided the tag will be ordered

        _outputFile_ : `optional str`

        > A file path to write a csv with 2 columns, one the tag values the other their years

        _giveYears_ : `optional bool`

        > Default `True`, if `True` the retuned list will be composed of tuples the first values being the tag value and the second their years.

        _greatestFirst_ : `optional bool`

        > Default `True`, if `True` the returned list will be ordered with the highest years first, otherwise the lowest years will be first.

        _pandasMode_ : `optional bool`

        > Default `True`, if `True` a `dict` ready for pandas will be returned, otherwise a list

        _limitTo_ : `optional list[values]`

        > Default `None`, if a list is provided only those values in the list will be counted or returned

        # Returns

        `dict[str:list[value]] or list[str]`

        > A `dict` or `list` will be returned depending on if _pandasMode_ is `True`