<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def gff3_to_dataframe(path, attributes=None, region=None, score_fill=-1, phase_fill=-1, attributes_fill='.', tabix='tabix', **kwargs):
 """Load data from a GFF3 into a pandas DataFrame. Parameters path : string Path to input file. attributes : list of strings, optional List of columns to extract from the "attributes" field. region : string, optional Genome region to extract. If given, file must be position sorted, bgzipped and tabix indexed. Tabix must also be installed and on the system path. score_fill : int, optional Value to use where score field has a missing value. phase_fill : int, optional Value to use where phase field has a missing value. attributes_fill : object or list of objects, optional Value(s) to use where attribute field(s) have a missing value. tabix : string, optional Tabix command. Returns ------- pandas.DataFrame """


    import pandas

    # read records
    recs = list(iter_gff3(path, attributes=attributes, region=region,
                          score_fill=score_fill, phase_fill=phase_fill,
                          attributes_fill=attributes_fill, tabix=tabix))

    # load into pandas
    columns = ['seqid', 'source', 'type', 'start', 'end', 'score', 'strand', 'phase']
    if attributes:
        columns += list(attributes)
    df = pandas.DataFrame.from_records(recs, columns=columns, **kwargs)

    return df