Available Endpoints¶
- The responses from
RestDFcan be categorized into three following types: DocsMetadataData
Docs¶
These endpoints provides some documentation on the API. Following are the available documentation related endpoints.
Method |
Endpoint |
Description |
|---|---|---|
|
|
Index route, gives brief intro about the API |
|
|
|
|
|
Provides basic Stats about the currently running API |
Index route (/)¶
Index route, gives brief intro about the API.
Type: GET
/ Example Response¶
{
"endpoints": [
{
"method": "get",
"name": "/",
"summary": "Index route, gives brief intro about the API"
},
{
"method": "get",
"name": "/stats",
"summary": "Provides basic Stats about the currently running API"
},
{
"method": "get",
"name": "/columns",
"summary": "Get the dataframe columns"
}
],
"filename": "dataset.csv"
}
SwaggerUI (/docs)¶
SwaggerUI endpoint endpoint, which is generated using flasgger. The OpenAPI definitions are generated
in form of a dictionary in runtime, to make some attributes such as column_name dynamic Enums.
Type: GET
Device/Server Statistics endpoint (/stats)¶
Provides basic Stats about the currently running API. Returns details such as
Type: GET
Device stats (available, free, used, total memory of the device)
Python version
Runtime informations (# Requests, filename, running_since, runtime_duration)
Server Framework info (Frameword being used & its version)
/stats Example Response¶
{
"Device": {
"Memory": {
"available": 3022258176,
"free": 3022258176
},
"cpu_percent": 23.5
},
"Python": {
"version": "3.8.7 (tags/v3.8.7:6503f05, Dec 21 2020, 17:59:51) [MSC v.1928 64 bit (AMD64)]"
},
"Runtime": {
"API": {
"/values_requests": 0
},
"filename": "test.csv",
"running_since": "2021-11-05 05:20:27.363299",
"runtime_duration": 818.451938867569
},
"Server": {
"name": "Flask",
"version": "2.0.2"
}
}
Metadata¶
As the name suggests, these provide some information about the dataset itself.
Method |
Endpoint |
Description |
|---|---|---|
|
|
Get the dataframe columns |
|
|
Describes different properties of the dataframe |
|
|
Returns the datatype of all columns |
|
|
Returns some dataframe info (Datatype, Non-null counts etc) |
|
|
Returns the count of nulls in the dataframe |
|
|
Returns the value_count results of a column |
Columns endpoint (/columns)¶
Returns the columns available in the dataframe.
Type: GET
/columns Example Response¶
{
"columns": [
"column1",
"column2",
"column3"
]
}
Dataset description endpoint (/describe)¶
Returns some dataframe info (Datatype, Non-null counts etc). This endpoint
returns the response from df.describe() and returns the result.
Type: POST
/describe Request Body¶
The following request body is the usual arguments for df.describe(). For more detailed info about the
meaning of the arguments please refer to this documentation from pandas
official documentation.
{
"datetime_is_numeric": false,
"exclude": [
"O"
],
"include": [
"int"
],
"percentiles": [
0.01,
0.25,
0.75,
0.99
]
}
/describe Example Response¶
{
"description": {
"Parch": {
"1%": 0,
"25%": 0,
"50%": 0,
"75%": 0,
"99%": 2,
"count": 30,
"max": 2,
"mean": 0.3,
"min": 0,
"std": 0.5959634332684375
},
"PassengerId": {
"1%": 927.47,
"25%": 1037.75,
"50%": 1102,
"75%": 1215,
"99%": 1280.04,
"count": 30,
"max": 1287,
"mean": 1112.4666666666667,
"min": 915,
"std": 107.31189905206654
}
}
}
Datatypes endpoint (/dtypes)¶
Returns the datatypes of the columns. This endpoint returns the response from df.dtypes
and returns the result.
Type: GET
/dtypes Example Response¶
{
"dtypes": {
"column1": "float64",
"column2": "object",
"column3": "int64"
}
}
DataFrame info endpoint (/info)¶
Returns some dataframe info (Datatypes, Non-null counts etc). This endpoint returns the
response from df.info() and returns the result.
Type: GET
/info Example Response¶
{
"info": [
{
"column": "column1",
"count": 30,
"dtype": "int64",
"index": 0
},
{
"column": "column2",
"count": 30,
"dtype": "int64",
"index": 1
},
{
"column": "column3",
"count": 30,
"dtype": "object",
"index": 2
}
]
}
DataFrame nulls endpoint (/nulls)¶
Returns the counts of nulls in the dataframe. This endpoint returns the response
from pd.isna(df) aggregated by sum
Type: GET
/null Example Response¶
{
"nulls": {
"column1": 7,
"column2": 22,
"column3": 0
}
}
Value Counts endpoint (/value_counts/{column_name})¶
Returns the value_count result of a column using the method
pd.Series.value_counts() since, this method works on a pandas.Series
we require the column_name on which we’re performing the value_counts operation.
According to pandas docs on value_counts
“The resulting object will be in descending order so that the first element is the most frequently-occurring element. Excludes NA values by default.”
/value_counts Example Response¶
{
"column": "Sex",
"value_counts": {
"female": 16,
"male": 14
}
}
Data¶
These endpoints returns values from the dataset. Either by some condition or by using some dataframe methods.
Method |
Endpoint |
Description |
|---|---|---|
|
|
Returns rows where all column values are exactly equal to the given value |
|
|
Returns rows where all string values contains given pattern |
|
|
Returns the head of the dataframe |
|
|
Returns rows where all column values are within the array content |
|
|
Returns rows where all column values are not equal to the given value |
|
|
Returns rows where all column values are not within the array content |
|
|
Returns random rows from the dataframe |
|
|
Returns values for a selected column |
DataFrame equal values endpoint (/equals/{column_name})¶
This endpoint returns rows where all column values are exactly equal to the
given value. For the given column name, this endpoint returns the rows where
the values for that column is equal to the given values.
column_name is the name of the column on which we’re performing the operation.
Type: POST
/equals Request Body¶
{
"as_string": false,
"columns": [],
"index": true,
"value": 0
}
equals attributes¶
as_string: Converts the entire column as string first.columns: Columns we’re expecting in return.index: Whether to include the index included in the returned objects.value: Value to check the condition against (in this case equality).
/equals Example Request Body¶
{
"as_string": false,
"columns": ["Age", "Name"],
"index": true,
"value": 18
}
/equals Example Response¶
{
"values": [
{
"Age": 18,
"Name": "Nilsson, Miss. Berta Olivia",
"_index": 12
},
{
"Age": 18,
"Name": "Smith, Mrs. Lucien Philip (Mary Eloise Hughes)",
"_index": 24
},
{
"Age": 18,
"Name": "Burns, Miss. Mary Delia",
"_index": 25
}
]
}
Find String endpoint (/find_string/{column_name})¶
This endpoint returns rows where all string values contain given pattern. For the
given column name, this endpoint returns the rows where the values (string DataTypes) for
that column containing the given pattern. This uses the str.contains() method,
please refer to this page
for more details.
Type: POST
/find_string Request Body¶
{
"case": false,
"columns": [],
"flags": 0,
"index": true,
"na": true,
"pattern": "string",
"regex": false
}
find_string attributes¶
case: IfTrue, case sensitive.columns: Columns we’re expecting in return.flags: Flags to pass through to the re module, e.g.,re.IGNORECASE.index: Whether to include the index included in the returned objects.na: Fill value for missing values. The default depends on dtype of the array. For object-dtype,numpy.nanis used.pattern: Character sequence or regular expr.regex: IfTrue, assumes the pattern is a regular expression, IfFalse, treats the pattern as a literal string.
/find_string Example Request¶
{
"case": false,
"columns": ["Name", "Pclass"],
"flags": 0,
"index": true,
"na": true,
"pattern": "miss.",
"regex": false
}
/find_string Example Response¶
{
"num": 9,
"option_used": {
"case": false,
"flags": 0,
"na": true,
"pat": "miss.",
"regex": false
},
"values": [
{
"Name": "Becker, Miss. Ruth Elizabeth",
"Pclass": 2,
"_index": 0
},
{
"Name": "Abelseth, Miss. Karen Marie",
"Pclass": 3,
"_index": 2
},
{
"Name": "Goodwin, Miss. Jessie Allis",
"Pclass": 3,
"_index": 5
},
{
"Name": "Wilson, Miss. Helen Alice",
"Pclass": 1,
"_index": 8
},
{
"Name": "Quick, Miss. Winifred Vera",
"Pclass": 2,
"_index": 9
},
{
"Name": "Nilsson, Miss. Berta Olivia",
"Pclass": 3,
"_index": 12
},
{
"Name": "Geiger, Miss. Amalie",
"Pclass": 1,
"_index": 23
},
{
"Name": "Burns, Miss. Mary Delia",
"Pclass": 3,
"_index": 25
},
{
"Name": "Lundin, Miss. Olga Elida",
"Pclass": 3,
"_index": 29
}
]
}
DataFrame head endpoint (/head)¶
This endpoint returns the response from df.head() and returns the result.
Type: POST
/head Request Body¶
{
"columns": [],
"index": true,
"n": 5
}
head attributes¶
columns: Columns we’re expecting in return.index: Whether to include the index included in the returned objects.n: Number of rows to return.
/head Example Request Body¶
{
"columns": [],
"index": true,
"n": 1
}
/head Example Response¶
{
"head": [
{
"Age": 12,
"Cabin": "F4",
"Embarked": "S",
"Fare": 39,
"Name": "Becker, Miss. Ruth Elizabeth",
"Parch": 1,
"PassengerId": 1218,
"Pclass": 2,
"Sex": "female",
"SibSp": 2,
"Ticket": "230136",
"_index": 0
}
]
}
isin Operation endpoint (/isin/{column_name})¶
For the given column name, this endpoint returns the rows where the values are
within the values array.
Type: POST
/isin Request Body¶
{
"as_string": false,
"columns": [],
"index": true,
"values": []
}
isin attributes¶
as_string: Converts the entire column as string first.columns: Columns we’re expecting in return.index: Whether to include the index included in the returned objects.values: Values list to check the condition against (in this case isin).
/isin Example Request Body¶
{
"as_string": false,
"columns": ["Pclass"],
"index": true,
"values": [1, 2]
}
/isin Example Response Body¶
{
"values": [
{
"Pclass": 2,
"_index": 0
},
{
"Pclass": 1,
"_index": 1
},
{
"Pclass": 1,
"_index": 3
},
{
"Pclass": 1,
"_index": 4
}
]
}
DataFrame equal values endpoint (/not_equals/{column_name})¶
This endpoint returns rows where all column values are not equals to the
given value. For the given column name, this endpoint returns the rows where
the values for that column is not equal to the given value.
Type: POST
column_name is the name of the column on which we’re performing the operation.
Type: POST
/not_equals Request Body¶
{
"as_string": false,
"columns": [],
"index": true,
"value": 0
}
not_equals attributes¶
as_string: Converts the entire column as string first.columns: Columns we’re expecting in return.index: Whether to include the index included in the returned objects.value: Value to check the condition against (in this case not-equality).
/not_equals Example Request Body¶
{
"as_string": false,
"columns": ["Age", "Name"],
"index": true,
"value": 18
}
/not_equals Example Response¶
{
"values": [
{
"Age": 12.0,
"Name": "Becker, Miss. Ruth Elizabeth",
"_index": 0
},
{
"Age": 64.0,
"Name": "Warren, Mr. Frank Manley",
"_index": 1
},
{
"Age": 16.0,
"Name": "Abelseth, Miss. Karen Marie",
"_index": 2
}
]
}
notin Operation endpoint (/notin/{column_name})¶
For the given column name, this endpoint returns the rows where the values are
not within the values array.
Type: POST
/notin Request Body¶
{
"as_string": false,
"columns": [],
"index": true,
"values": []
}
notin attributes¶
as_string: Converts the entire column as string first.columns: Columns we’re expecting in return.index: Whether to include the index included in the returned objects.values: Values list to check the condition against (in this case notin).
/notin Example Request Body¶
{
"as_string": false,
"columns": ["Pclass"],
"index": true,
"values": [1, 2]
}
/notin Example Response Body¶
{
"values": [
{
"Pclass": 3,
"_index": 2
},
{
"Pclass": 3,
"_index": 5
},
{
"Pclass": 3,
"_index": 10
}
]
}
DataFrame sample rows endpoint (/sample)¶
This endpoint returns the response from df.sample(**kwargs) and returns the result.
Type: POST
/sample Request Body¶
{
"columns": [],
"frac": null,
"index": true,
"n": 1,
"random_state": 0,
"replace": false,
"weights": null
}
sample attributes¶
n: Number of random rows to return (default: 1)frac: Fraction of axis items to return. Cannot be used alongside nreplace: Allow or disallow sampling of the same row more than once. If n > (size of DataFrame) then replace must be True, else error will be thrown.weights: [list containing probability distribution], Defaults to None, meaning equal probability weighting.random_state: Seed for random number generator.
/sample Example Request Body¶
{
"columns": ["Age", "Name"],
"frac": null,
"index": false,
"n": 1,
"random_state": 0,
"replace": false,
"weights": null
}
/sample Example Response¶
{
"sample": [
{
"Age": 16,
"Name": "Abelseth, Miss. Karen Marie"
}
]
}
DataFrame values endpoint (/values/{column_name})¶
This method values from the passed column_name, using pd[column_name]. If n
exceeds the size of the dataframe, no warnings are given!
Type: POST
/values Request Body¶
{
"add_index": true,
"n": 5
}
/values Example Response¶
{
"values": {
"0": "Becker, Miss. Ruth Elizabeth",
"1": "Warren, Mr. Frank Manley",
"2": "Abelseth, Miss. Karen Marie",
"3": "Wick, Mr. George Dennick",
"4": "Williams, Mr. Richard Norris II"
}
}