---
title: DataFrameProtocol
framework: tabulardata
role: symbol
role_heading: Protocol
path: tabulardata/dataframeprotocol
---

# DataFrameProtocol

A type that represents a data frame.

## Declaration

```swift
protocol DataFrameProtocol
```

## Topics

### Inspecting a Data Frame Type

- [isEmpty](tabulardata/dataframeprotocol/isempty.md)
- [shape](tabulardata/dataframeprotocol/shape.md)
- [columns](tabulardata/dataframeprotocol/columns.md)
- [ColumnType](tabulardata/dataframeprotocol/columntype.md)
- [rows](tabulardata/dataframeprotocol/rows.md)
- [DataFrame.Rows](tabulardata/dataframe/rows-swift.struct.md)
- [base](tabulardata/dataframeprotocol/base.md)

### Accessing Rows

- [subscript(_:)](tabulardata/dataframeprotocol/subscript(_:).md)
- [subscript(_:)](tabulardata/dataframeprotocol/subscript(_:)-8hly3.md)

### Creating Two Slices by Splitting Rows

- [randomSplit(by:seed:)](tabulardata/dataframeprotocol/randomsplit(by:seed:).md)
- [randomSplit(by:using:)](tabulardata/dataframeprotocol/randomsplit(by:using:).md)

### Creating Two Data Frames by Splitting Rows

- [stratifiedSplit(on:by:randomSeed:)](tabulardata/dataframeprotocol/stratifiedsplit(on:by:randomseed:)-9iauf.md)
- [stratifiedSplit(on:by:randomSeed:)](tabulardata/dataframeprotocol/stratifiedsplit(on:by:randomseed:)-8szu1.md)
- [stratifiedSplit(on:by:randomSeed:)](tabulardata/dataframeprotocol/stratifiedsplit(on:by:randomseed:)-714jk.md)
- [stratifiedSplit(on:_:by:randomSeed:)](tabulardata/dataframeprotocol/stratifiedsplit(on:_:by:randomseed:).md)
- [stratifiedSplit(on:_:_:by:randomSeed:)](tabulardata/dataframeprotocol/stratifiedsplit(on:_:_:by:randomseed:).md)

### Creating a Data Frame by Sorting a Column

- [sorted(on:order:)](tabulardata/dataframeprotocol/sorted(on:order:)-818u5.md)
- [sorted(on:_:order:)](tabulardata/dataframeprotocol/sorted(on:_:order:)-8d7rr.md)
- [sorted(on:_:by:)](tabulardata/dataframeprotocol/sorted(on:_:by:).md)
- [sorted(on:order:)](tabulardata/dataframeprotocol/sorted(on:order:)-5nl5c.md)
- [sorted(on:by:)](tabulardata/dataframeprotocol/sorted(on:by:).md)

### Creating a Data Frame by Sorting Multiple Columns

- [sorted(on:_:order:)](tabulardata/dataframeprotocol/sorted(on:_:order:)-79los.md)
- [sorted(on:_:_:order:)](tabulardata/dataframeprotocol/sorted(on:_:_:order:).md)

### Creating a Data Frame by Joining Another Data Frame

- [joined(_:on:kind:)](tabulardata/dataframeprotocol/joined(_:on:kind:)-1gp6k.md)
- [joined(_:on:kind:)](tabulardata/dataframeprotocol/joined(_:on:kind:)-7u2tw.md)
- [joined(_:on:kind:)](tabulardata/dataframeprotocol/joined(_:on:kind:)-9629e.md)
- [joined(_:on:kind:)](tabulardata/dataframeprotocol/joined(_:on:kind:)-mvic.md)
- [JoinKind](tabulardata/joinkind.md)

### Creating a Row Grouping by a Column

- [grouped(by:)](tabulardata/dataframeprotocol/grouped(by:)-77mq2.md)
- [grouped(by:timeUnit:)](tabulardata/dataframeprotocol/grouped(by:timeunit:)-7s782.md)
- [grouped(by:timeUnit:)](tabulardata/dataframeprotocol/grouped(by:timeunit:)-78cy.md)
- [grouped(by:transform:)](tabulardata/dataframeprotocol/grouped(by:transform:)-3cr4p.md)
- [grouped(by:transform:)](tabulardata/dataframeprotocol/grouped(by:transform:)-3aade.md)

### Creating a Row Grouping by Multiple Columns

- [grouped(by:)](tabulardata/dataframeprotocol/grouped(by:)-4wcw6.md)
- [grouped(by:)](tabulardata/dataframeprotocol/grouped(by:)-6m6to.md)
- [grouped(by:_:)](tabulardata/dataframeprotocol/grouped(by:_:).md)
- [grouped(by:_:_:)](tabulardata/dataframeprotocol/grouped(by:_:_:).md)

### Saving a Data Frame Type to a CSV Format

- [writeCSV(to:options:)](tabulardata/dataframeprotocol/writecsv(to:options:).md)
- [csvRepresentation(options:)](tabulardata/dataframeprotocol/csvrepresentation(options:).md)

### Describing a Data Frame Type

- [description(options:)](tabulardata/dataframeprotocol/description(options:).md)

### Instance Methods

- [jsonRepresentation(options:)](tabulardata/dataframeprotocol/jsonrepresentation(options:).md)
- [writeJSON(to:options:)](tabulardata/dataframeprotocol/writejson(to:options:).md)

## Relationships

### Conforming Types

- [DataFrame](tabulardata/dataframe.md)
- [DataFrame.Slice](tabulardata/dataframe/slice.md)

## See Also

### Data Tables

- [DataFrame](tabulardata/dataframe.md)
