The Data Model¶
Let’s read the following csv file.
first_name | last_name | birthday |
John | Doe | 3-Mar-85 |
Typhoid | Mary | 2-Aug-83 |
Jane | Smith | 23-Oct-46 |
>>> import fuzzytable
>>> ft = fuzzytable.FuzzyTable('birthdays.csv')
Data View 1: FuzzyTable
as dictionary¶
A FuzzyTable
object behaves like a dictionary, where keys are field names and values are lists of column values:
>>> keys = ft.keys()
>>> list(keys)
['first_name', 'last_name', 'birthday']
>>> for col in ft.values():
... print(col)
...
['John', 'Typhoid', 'Jane']
['Doe', 'Mary', 'Smith']
['3 March 1985', '2 Aug 1983', '23 Oct 1946']
Loop through first names:
>>> for first_name in ft['first_name']:
... print(first_name)
John
Typhoid
Jane
See the fuzzytable.FuzzyTable
API Reference for more details.
Data View 2: FuzzyTable.records
- list of rows as dictionaries¶
FuzzyTable
’s records
attribute is a sequence of dictionaries each representing a row of data.
>>> ft.records[1]
{'first_name': 'Typhoid', 'last_name': 'Mary', 'birthday': '2-Aug-83', 'row': 3}
Note that a 'row'
key was automatically included.
You can change this behavior via the include_row_num
property:
>>> ft.records.include_row_num = False
>>> for record in ft.records:
... print(record)
...
{'first_name': 'John', 'last_name': 'Doe', 'birthday': '3-Mar-85'}
{'first_name': 'Typhoid', 'last_name': 'Mary', 'birthday': '2-Aug-83'}
{'first_name': 'Jane', 'last_name': 'Smith', 'birthday': '23-Oct-46'}
See the fuzzytable.datamodel.Records
API Reference for more details.
Data View 3: FuzzyTable.fields
- list of Field
objects¶
FuzzyTable
’s fields
attribute is a list of Field
objects which contain field name, data, and additional metadata e.g. column number.
>>> fields = ft.fields
>>> first_name = fields[0]
>>> first_name.col_num
1
>>> first_name.data
['John', 'Typhoid', 'Jane']
>>> str(first_name)
"<Field 'first_name' 0x10dcce8>"
See the fuzzytable.datamodel.Field
API Reference for more details.
Data View 4: FuzzyTable.sheet
- spreadsheet metadata¶
FuzzyTable
’s sheet
attribute contains metadata about the sheet itself (path, header row number, number of rows):
>>> sheet = ft.sheet
>>> sheet.header_row_num
1
>>> sheet.row_count
4
>>> sheet.path
WindowsPath('birthdays.csv')
See the fuzzytable.datamodel.Sheet
API Reference for more details.
Go back to top of page