log2ml/Elasticsearch-Pandas-vs-Polars-May-15-2024.ipynb

3689 lines
237 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "fa00684b-2e50-4cf5-b8f3-bd28f583391b",
"metadata": {},
"source": [
"# Elasticsearch and tabular integration\n",
"\n",
"Elasticsearch is a NoSQL database, which indexes JSON records.\n",
"In the following the Winlog Beat index gets queried, which holds Windows EventLog data.\n",
"The Elasticsearch SQL endpoint is used to define a query, and the resulting data is retrieved as a JSON stream.\n",
"The data gets read into in-memory dataframe objects which allow data-manipulation tasks.\n",
"\n",
"In-memory processing can be difficult if the datasets grow large.\n",
"Therefore a comparison is made between two polular in-memory dataframe libraries:\n",
"\n",
"1.) Pandas\n",
"2.) Polars\n",
"\n",
"The memory footprint is assessed, because runtime memory is the limiting factor for the implementations."
]
},
{
"cell_type": "markdown",
"id": "0bd2a29a-68e0-42a6-b46d-13aa95eca26d",
"metadata": {},
"source": [
"## Versions"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "9ea2636c-b07e-44c8-ba5f-aace81dba245",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Name: pandas\n",
"Version: 2.1.4\n"
]
}
],
"source": [
"!pip show pandas | grep -E 'Name:|Version:'"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "590ac008-153d-4603-83bc-02f87a7a8d60",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Name: polars\n",
"Version: 0.20.26\n"
]
}
],
"source": [
"!pip show polars | grep -E 'Name:|Version:'"
]
},
{
"cell_type": "markdown",
"id": "b7760198-a975-4810-b3d4-25554e4fe3c4",
"metadata": {},
"source": [
"## Elasticsearch API\n",
"\n",
"The Elasticsearch API uses HTTP and is available on port 9200.\n",
"\n",
"The index \"winlogbeat-\" contains data from the period. It's a periodically rotating index.\n",
"\n",
"Here the Elasticsearch DSL is used, and an event timeline is being retrieved, in time-descending order.\n",
"\n",
"The resulting JSON data is piped to the `jq` utility, which is prettier on a command-line.\n",
"Only the first JSON record is analyzed. \n",
"\n",
"The output shows the index and the timestamp."
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "cce35135-52d7-484b-bbae-d1c876836433",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"index\": \"winlogbeat-7.10.0-2024.05.15-000008\",\n",
" \"timestamp\": \"2024-05-15T15:57:22.877Z\"\n",
"}\n"
]
}
],
"source": [
"%%bash\n",
"curl -s -X GET \"http://192.168.20.106:9200/winlogbeat-*/_search\" -H 'Content-Type: application/json' -d '{\n",
" \"size\": 1,\n",
" \"sort\": [\n",
" {\n",
" \"@timestamp\": {\n",
" \"order\": \"desc\"\n",
" }\n",
" }\n",
" ]\n",
"}' | jq '.hits.hits[0] | {index: ._index, timestamp: ._source[\"@timestamp\"]}'\n"
]
},
{
"cell_type": "markdown",
"id": "4e6efd1c-2f22-4f5b-9ad7-b569065f182d",
"metadata": {},
"source": [
"The following Bash command shows a SQL query.\n",
"\n",
"The `Limit 1` is a common SQL statement.\n",
"The output is further limited with the `head` command. Only the first fields of the first record are shown.\n",
"\n",
"By default the order of records doesn't represent a timeline, but the order of records in the index."
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "2d3f97cb-cc71-4d81-ad9c-df11125cd109",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"size\": 1,\n",
" \"_source\": {\n"
]
}
],
"source": [
"%%bash\n",
"curl -s -X POST \"http://192.168.20.106:9200/_sql/translate\" -H 'Content-Type: application/json' -d '{\n",
" \"query\": \"SELECT * FROM \\\"winlogbeat-7.10.0-2024.05.15-*\\\" LIMIT 1\"\n",
"}' | jq | head -n 3\n"
]
},
{
"cell_type": "markdown",
"id": "9e42a51f-e5a0-480d-9e2e-9744a288aef7",
"metadata": {},
"source": [
"## Elasticsearch tabular-integration and Pandas\n",
"\n",
"Pandas is the de-facto standard for data-manipulation of small to medium datasets in Data Science.\n",
"It offers robust functions for in-memory data transactions and tabular feature integration.\n",
"\n",
"In the following the expansion of JSON data is used to allow a simple feature selection for further processing.\n",
"The data is returned from Elasticsearch, from an SQL query.\n",
"\n",
"The data is provided via a Scrolling API, which delivers a portion of the data each time.\n",
"This simplifies batch processing of large datasets."
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "f8747542-a2d1-4814-8dc2-acf172db2d0c",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Retrieved 1000 documents.\n",
"Retrieved 2000 documents.\n",
"Retrieved 3000 documents.\n",
"Retrieved 4000 documents.\n",
"Retrieved 5000 documents.\n",
"Files have been written.\n"
]
}
],
"source": [
"import requests\n",
"import pandas as pd\n",
"import json\n",
"\n",
"# Function to recursively normalize nested columns in a DataFrame\n",
"def recursively_normalize(data):\n",
" df = pd.json_normalize(data)\n",
" while True:\n",
" nested_cols = [col for col in df.columns if isinstance(df[col].iloc[0], (dict, list))]\n",
" if not nested_cols:\n",
" break\n",
" for col in nested_cols:\n",
" if isinstance(df[col].iloc[0], dict):\n",
" normalized = pd.json_normalize(df[col])\n",
" df = df.drop(columns=[col]).join(normalized)\n",
" elif isinstance(df[col].iloc[0], list):\n",
" df = df.explode(col)\n",
" normalized = pd.json_normalize(df[col])\n",
" df = df.drop(columns=[col]).join(normalized)\n",
" return df\n",
"\n",
"# Function to fetch the next batch using the cursor\n",
"def fetch_next_batch(cursor):\n",
" response = requests.post(\n",
" f\"{base_url}/_sql?format=json\",\n",
" headers={\"Content-Type\": \"application/json\"},\n",
" json={\"cursor\": cursor}\n",
" ).json()\n",
" return response\n",
"\n",
"# Elasticsearch base URL\n",
"base_url = \"http://192.168.20.106:9200\"\n",
"# Index name\n",
"index = \"winlogbeat-*\"\n",
"\n",
"# SQL query for initial search\n",
"sql_query = \"\"\"\n",
"SELECT \"@timestamp\", host.hostname, host.ip, log.level, winlog.event_id, winlog.task, message FROM \"winlogbeat-7.10.0-2024.05.15-*\"\n",
"LIMIT 5000\n",
"\"\"\"\n",
"\n",
"# Initial search request to start scrolling\n",
"initial_response = requests.post(\n",
" f\"{base_url}/_sql?format=json\",\n",
" headers={\"Content-Type\": \"application/json\"},\n",
" json={\n",
" \"query\": sql_query,\n",
" \"field_multi_value_leniency\": True\n",
" }\n",
").json()\n",
"\n",
"# Extract the cursor for scrolling\n",
"cursor = initial_response.get('cursor')\n",
"rows = initial_response.get('rows')\n",
"columns = [col['name'] for col in initial_response['columns']]\n",
"\n",
"# Initialize CSV file (assumes the first batch is not empty)\n",
"if rows:\n",
" df = pd.DataFrame(rows, columns=columns)\n",
" df = recursively_normalize(df.to_dict(orient='records'))\n",
" df.to_csv(\"lab_logs_normal_activity.csv\", mode='w', index=False, header=True)\n",
"\n",
"# Track total documents retrieved\n",
"total_documents_retrieved = len(rows)\n",
"print(f\"Retrieved {total_documents_retrieved} documents.\")\n",
"\n",
"# Loop to fetch subsequent batches of documents until no more documents are left\n",
"while cursor:\n",
" # Fetch next batch of documents using cursor\n",
" response = fetch_next_batch(cursor)\n",
" \n",
" # Update cursor for the next batch\n",
" cursor = response.get('cursor')\n",
" rows = response.get('rows')\n",
" \n",
" # If no rows, break out of the loop\n",
" if not rows:\n",
" break\n",
" \n",
" # Normalize data and append to CSV\n",
" df = pd.DataFrame(rows, columns=columns)\n",
" df = recursively_normalize(df.to_dict(orient='records'))\n",
" \n",
" # Append to CSV file without headers\n",
" df.to_csv(\"lab_logs_normal_activity.csv\", mode='a', index=False, header=False)\n",
" \n",
" # Convert DataFrame to JSON, line by line\n",
" json_lines = df.to_json(orient='records', lines=True).splitlines()\n",
" # Append each line to an existing JSON file\n",
" with open(\"lab_logs_normal_activity.json\", 'a') as file:\n",
" for line in json_lines:\n",
" file.write(line + '\\n') # Append each line and add a newline\n",
" \n",
" # Update total documents retrieved\n",
" total_documents_retrieved += len(rows)\n",
" \n",
" print(f\"Retrieved {total_documents_retrieved} documents.\")\n",
"\n",
"print(\"Files have been written.\")\n"
]
},
{
"cell_type": "markdown",
"id": "1b236f1c-7060-43a0-b4e7-2b9697114a3e",
"metadata": {},
"source": [
"## Alternative approach with polars\n",
"\n",
"Polars is a newer tabular-integration library, which challenges Pandas. \n",
"It's supposed to me more memory efficient, because it's backend is written in Rust."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "78e37d61-4554-4bbb-99d9-ecbb2e892557",
"metadata": {},
"outputs": [],
"source": [
"%pip install polars"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "328b8d13-3cc0-4239-b3e5-d98da9bb51ec",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Retrieved 1000 documents.\n",
"Retrieved 2000 documents.\n",
"Retrieved 3000 documents.\n",
"Retrieved 4000 documents.\n",
"Retrieved 5000 documents.\n",
"Files have been written.\n"
]
}
],
"source": [
"import requests\n",
"import polars as pl\n",
"import json\n",
"\n",
"# Function to recursively unnest nested columns in a DataFrame\n",
"def recursively_unnest(df):\n",
" nested = True\n",
" while nested:\n",
" nested = False\n",
" for col in df.columns:\n",
" if df[col].dtype == pl.List:\n",
" df = df.explode(col)\n",
" nested = True\n",
" elif df[col].dtype == pl.Struct:\n",
" df = df.unnest(col)\n",
" nested = True\n",
" return df\n",
"\n",
"# Function to fetch the next batch using the cursor\n",
"def fetch_next_batch(cursor):\n",
" response = requests.post(\n",
" f\"{base_url}/_sql?format=json\",\n",
" headers={\"Content-Type\": \"application/json\"},\n",
" json={\"cursor\": cursor}\n",
" ).json()\n",
" return response\n",
"\n",
"# Elasticsearch base URL\n",
"base_url = \"http://192.168.20.106:9200\"\n",
"# Index name\n",
"index = \"winlogbeat-*\"\n",
"\n",
"# SQL query for initial search\n",
"sql_query = \"\"\"\n",
"SELECT \"@timestamp\", host.hostname, host.ip, log.level, winlog.event_id, winlog.task, message FROM \"winlogbeat-7.10.0-2024.05.15-*\"\n",
"LIMIT 5000\n",
"\"\"\"\n",
"\n",
"# Initial search request to start scrolling\n",
"initial_response = requests.post(\n",
" f\"{base_url}/_sql?format=json\",\n",
" headers={\"Content-Type\": \"application/json\"},\n",
" json={\n",
" \"query\": sql_query,\n",
" \"field_multi_value_leniency\": True\n",
" }\n",
").json()\n",
"\n",
"# Extract the cursor for scrolling\n",
"cursor = initial_response.get('cursor')\n",
"rows = initial_response.get('rows')\n",
"columns = [col['name'] for col in initial_response['columns']]\n",
"\n",
"# Initialize CSV file (assumes the first batch is not empty)\n",
"if rows:\n",
" df = pl.DataFrame(rows, schema=columns)\n",
" df = recursively_unnest(df)\n",
" df.write_csv(\"lab_logs_normal_activity.csv\", include_header=True)\n",
"\n",
"# Track total documents retrieved\n",
"total_documents_retrieved = len(rows)\n",
"print(f\"Retrieved {total_documents_retrieved} documents.\")\n",
"\n",
"# Loop to fetch subsequent batches of documents until no more documents are left\n",
"while cursor:\n",
" # Fetch next batch of documents using cursor\n",
" response = fetch_next_batch(cursor)\n",
" \n",
" # Update cursor for the next batch\n",
" cursor = response.get('cursor')\n",
" rows = response.get('rows')\n",
" \n",
" # If no rows, break out of the loop\n",
" if not rows:\n",
" break\n",
" \n",
" # Normalize data and append to CSV\n",
" df = pl.DataFrame(rows, schema=columns)\n",
" df = recursively_unnest(df)\n",
" \n",
" # Manually write the CSV to avoid headers\n",
" with open(\"lab_logs_normal_activity.csv\", 'a') as f:\n",
" df.write_csv(f, include_header=False)\n",
" \n",
" # Convert DataFrame to JSON, line by line\n",
" json_lines = [json.dumps(record) for record in df.to_dicts()]\n",
" # Append each line to an existing JSON file\n",
" with open(\"lab_logs_normal_activity.json\", 'a') as file:\n",
" for line in json_lines:\n",
" file.write(line + '\\n') # Append each line and add a newline\n",
" \n",
" # Update total documents retrieved\n",
" total_documents_retrieved += len(rows)\n",
" \n",
" print(f\"Retrieved {total_documents_retrieved} documents.\")\n",
"\n",
"print(\"Files have been written.\")\n"
]
},
{
"cell_type": "markdown",
"id": "3dd720a7-c716-4d41-9ab4-37652acca137",
"metadata": {
"tags": []
},
"source": [
"## Memory footprint and profile comparison"
]
},
{
"cell_type": "markdown",
"id": "0e433322-5120-4451-9aa4-cfd5795aaa24",
"metadata": {},
"source": [
"A JSON schema is provided in both cases to improve the comparison."
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "93a2116d-1fdd-432b-a48c-8be77c67e0e7",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdin",
"output_type": "stream",
"text": [
"Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n"
]
}
],
"source": [
"%reset"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bdf4020a-3b23-47e0-b7c4-3335bf3d5d8c",
"metadata": {},
"outputs": [],
"source": [
"!pip install git+https://github.com/H4dr1en/jupyterflame.git"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "427b969f-0e68-44da-b74d-5cada875f74f",
"metadata": {},
"outputs": [],
"source": [
"# directly on the shell within the conda env: conda install -y perl"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "08db61e8-d70f-4434-bfcc-6225405b81f2",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The jupyterflame extension is already loaded. To reload it, use:\n",
" %reload_ext jupyterflame\n"
]
}
],
"source": [
"%load_ext jupyterflame"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "eefffe2a-f61c-47c8-90e3-d0de0ab932d6",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"@timestamp object\n",
"host.hostname object\n",
"host.ip object\n",
"log.level object\n",
"winlog.event_id int64\n",
"winlog.task object\n",
"message object\n",
"dtype: object\n"
]
}
],
"source": [
"import pandas as pd\n",
"\n",
"# Read a small chunk of the JSON file\n",
"file_path = \"lab_logs_normal_activity.json\"\n",
"pd_df = pd.read_json(file_path, lines=True, nrows=10)\n",
"\n",
"print(pd_df.dtypes)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "0b2be27e-a56c-411b-bbff-dc42e533ca80",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Polars Schema: {'@timestamp': String, 'host.hostname': String, 'host.ip': String, 'log.level': String, 'winlog.event_id': Int64, 'winlog.task': String, 'message': String}\n",
"Pandas Schema: {'@timestamp': 'str', 'host.hostname': 'str', 'host.ip': 'str', 'log.level': 'str', 'winlog.event_id': 'int64', 'winlog.task': 'str', 'message': 'str'}\n"
]
}
],
"source": [
"import polars as pl\n",
"\n",
"# Define the mapping from Pandas dtype to Polars dtype\n",
"dtype_mapping = {\n",
" \"object\": pl.Utf8,\n",
" \"int64\": pl.Int64,\n",
" \"float64\": pl.Float64,\n",
" # Add more mappings if needed\n",
"}\n",
"\n",
"pandas_dtype_mapping = {\n",
" \"object\": \"str\",\n",
" \"int64\": \"int64\",\n",
" \"float64\": \"float64\",\n",
" # Add more mappings if needed\n",
"}\n",
"\n",
"\n",
"# Generate the schema for Polars from Pandas dtype\n",
"polars_schema = {col: dtype_mapping[str(dtype)] for col, dtype in pd_df.dtypes.items()}\n",
"print(\"Polars Schema:\", polars_schema)\n",
"\n",
"pandas_schema = {col: pandas_dtype_mapping[str(dtype)] for col, dtype in pd_df.dtypes.items()}\n",
"print(\"Pandas Schema:\", pandas_schema)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "5ccc9d58-8e27-43d0-bf69-7f2ff44c9874",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"def test_polars():\n",
" # Read the JSON file using the defined schema\n",
" lazy_df = pl.scan_ndjson(file_path)\n",
"\n",
" # Collect the LazyFrame to a DataFrame\n",
" pl_df = lazy_df.collect()\n",
"\n",
" # Convert columns to the correct data types according to the schema\n",
" pl_df = pl_df.with_columns([pl.col(col).cast(dtype) for col, dtype in polars_schema.items()])\n",
"\n",
" # Print the DataFrame and its memory usage\n",
" print(pl_df)\n",
"\n",
" num_rows_polars = pl_df.shape[0]\n",
"\n",
" print(f\"Polars DataFarme number of rows: {num_rows_polars}\")\n",
" print(f\"Polars DataFrame memory usage: {pl_df.estimated_size() / (1024 ** 2):.2f} MB\")"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "6e1ca70b-9aae-43af-b1c0-cc8d6f19a7ce",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"shape: (8_000, 7)\n",
"┌──────────────┬─────────────┬─────────────┬─────────────┬─────────────┬─────────────┬─────────────┐\n",
"│ @timestamp ┆ host.hostna ┆ host.ip ┆ log.level ┆ winlog.even ┆ winlog.task ┆ message │\n",
"│ --- ┆ me ┆ --- ┆ --- ┆ t_id ┆ --- ┆ --- │\n",
"│ str ┆ --- ┆ str ┆ str ┆ --- ┆ str ┆ str │\n",
"│ ┆ str ┆ ┆ ┆ i64 ┆ ┆ │\n",
"╞══════════════╪═════════════╪═════════════╪═════════════╪═════════════╪═════════════╪═════════════╡\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 13 ┆ Registry ┆ Registry │\n",
"│ 5:57:18.471Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ value set ┆ value set: │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ (rule: ┆ RuleName: … │\n",
"│ ┆ ┆ ┆ ┆ ┆ Regi… ┆ │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 13 ┆ Registry ┆ Registry │\n",
"│ 5:57:18.471Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ value set ┆ value set: │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ (rule: ┆ RuleName: … │\n",
"│ ┆ ┆ ┆ ┆ ┆ Regi… ┆ │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 13 ┆ Registry ┆ Registry │\n",
"│ 5:57:18.471Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ value set ┆ value set: │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ (rule: ┆ RuleName: … │\n",
"│ ┆ ┆ ┆ ┆ ┆ Regi… ┆ │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 13 ┆ Registry ┆ Registry │\n",
"│ 5:57:18.471Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ value set ┆ value set: │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ (rule: ┆ RuleName: … │\n",
"│ ┆ ┆ ┆ ┆ ┆ Regi… ┆ │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 13 ┆ Registry ┆ Registry │\n",
"│ 5:57:18.471Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ value set ┆ value set: │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ (rule: ┆ RuleName: … │\n",
"│ ┆ ┆ ┆ ┆ ┆ Regi… ┆ │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 4663 ┆ Removable ┆ An attempt │\n",
"│ 6:10:07.128Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ Storage ┆ was made to │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ ┆ access … │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 4663 ┆ Removable ┆ An attempt │\n",
"│ 6:10:07.136Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ Storage ┆ was made to │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ ┆ access … │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 4663 ┆ Removable ┆ An attempt │\n",
"│ 6:10:07.136Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ Storage ┆ was made to │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ ┆ access … │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 4663 ┆ Removable ┆ An attempt │\n",
"│ 6:10:07.149Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ Storage ┆ was made to │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ ┆ access … │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 4663 ┆ Removable ┆ An attempt │\n",
"│ 6:10:07.149Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ Storage ┆ was made to │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ ┆ access … │\n",
"└──────────────┴─────────────┴─────────────┴─────────────┴─────────────┴─────────────┴─────────────┘\n",
"Pandas DataFarme number of rows: 8000\n",
"Polars DataFrame memory usage: 4.76 MB\n",
" "
]
},
{
"data": {
"text/html": [
"<?xml version=\"1.0\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<svg version=\"1.1\" width=\"1200\" height=\"230\" onload=\"init(evt)\" viewBox=\"0 0 1200 230\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<!-- Flame graph stack visualization. See https://github.com/brendangregg/FlameGraph for latest version, and http://www.brendangregg.com/flamegraphs.html for examples. -->\n",
"<!-- NOTES: -->\n",
"<defs>\n",
"\t<linearGradient id=\"background\" y1=\"0\" y2=\"1\" x1=\"0\" x2=\"0\" >\n",
"\t\t<stop stop-color=\"#eeeeee\" offset=\"5%\" />\n",
"\t\t<stop stop-color=\"#eeeeb0\" offset=\"95%\" />\n",
"\t</linearGradient>\n",
"</defs>\n",
"<style type=\"text/css\">\n",
"\ttext { font-family:Verdana; font-size:12px; fill:rgb(0,0,0); }\n",
"\t#search { opacity:0.1; cursor:pointer; }\n",
"\t#search:hover, #search.show { opacity:1; }\n",
"\t#subtitle { text-anchor:middle; font-color:rgb(160,160,160); }\n",
"\t#title { text-anchor:middle; font-size:17px}\n",
"\t#unzoom { cursor:pointer; }\n",
"\t#frames > *:hover { stroke:black; stroke-width:0.5; cursor:pointer; }\n",
"\t.hide { display:none; }\n",
"\t.parent { opacity:0.5; }\n",
"</style>\n",
"<script type=\"text/ecmascript\">\n",
"<![CDATA[\n",
"\t\"use strict\";\n",
"\tvar details, searchbtn, unzoombtn, matchedtxt, svg, searching;\n",
"\tfunction init(evt) {\n",
"\t\tdetails = document.getElementById(\"details\").firstChild;\n",
"\t\tsearchbtn = document.getElementById(\"search\");\n",
"\t\tunzoombtn = document.getElementById(\"unzoom\");\n",
"\t\tmatchedtxt = document.getElementById(\"matched\");\n",
"\t\tsvg = document.getElementsByTagName(\"svg\")[0];\n",
"\t\tsearching = 0;\n",
"\t}\n",
"\n",
"\twindow.addEventListener(\"click\", function(e) {\n",
"\t\tvar target = find_group(e.target);\n",
"\t\tif (target) {\n",
"\t\t\tif (target.nodeName == \"a\") {\n",
"\t\t\t\tif (e.ctrlKey === false) return;\n",
"\t\t\t\te.preventDefault();\n",
"\t\t\t}\n",
"\t\t\tif (target.classList.contains(\"parent\")) unzoom();\n",
"\t\t\tzoom(target);\n",
"\t\t}\n",
"\t\telse if (e.target.id == \"unzoom\") unzoom();\n",
"\t\telse if (e.target.id == \"search\") search_prompt();\n",
"\t}, false)\n",
"\n",
"\t// mouse-over for info\n",
"\t// show\n",
"\twindow.addEventListener(\"mouseover\", function(e) {\n",
"\t\tvar target = find_group(e.target);\n",
"\t\tif (target) details.nodeValue = \"Function: \" + g_to_text(target);\n",
"\t}, false)\n",
"\n",
"\t// clear\n",
"\twindow.addEventListener(\"mouseout\", function(e) {\n",
"\t\tvar target = find_group(e.target);\n",
"\t\tif (target) details.nodeValue = ' ';\n",
"\t}, false)\n",
"\n",
"\t// ctrl-F for search\n",
"\twindow.addEventListener(\"keydown\",function (e) {\n",
"\t\tif (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) {\n",
"\t\t\te.preventDefault();\n",
"\t\t\tsearch_prompt();\n",
"\t\t}\n",
"\t}, false)\n",
"\n",
"\t// functions\n",
"\tfunction find_child(node, selector) {\n",
"\t\tvar children = node.querySelectorAll(selector);\n",
"\t\tif (children.length) return children[0];\n",
"\t\treturn;\n",
"\t}\n",
"\tfunction find_group(node) {\n",
"\t\tvar parent = node.parentElement;\n",
"\t\tif (!parent) return;\n",
"\t\tif (parent.id == \"frames\") return node;\n",
"\t\treturn find_group(parent);\n",
"\t}\n",
"\tfunction orig_save(e, attr, val) {\n",
"\t\tif (e.attributes[\"_orig_\" + attr] != undefined) return;\n",
"\t\tif (e.attributes[attr] == undefined) return;\n",
"\t\tif (val == undefined) val = e.attributes[attr].value;\n",
"\t\te.setAttribute(\"_orig_\" + attr, val);\n",
"\t}\n",
"\tfunction orig_load(e, attr) {\n",
"\t\tif (e.attributes[\"_orig_\"+attr] == undefined) return;\n",
"\t\te.attributes[attr].value = e.attributes[\"_orig_\" + attr].value;\n",
"\t\te.removeAttribute(\"_orig_\"+attr);\n",
"\t}\n",
"\tfunction g_to_text(e) {\n",
"\t\tvar text = find_child(e, \"title\").firstChild.nodeValue;\n",
"\t\treturn (text)\n",
"\t}\n",
"\tfunction g_to_func(e) {\n",
"\t\tvar func = g_to_text(e);\n",
"\t\t// if there's any manipulation we want to do to the function\n",
"\t\t// name before it's searched, do it here before returning.\n",
"\t\treturn (func);\n",
"\t}\n",
"\tfunction update_text(e) {\n",
"\t\tvar r = find_child(e, \"rect\");\n",
"\t\tvar t = find_child(e, \"text\");\n",
"\t\tvar w = parseFloat(r.attributes.width.value) -3;\n",
"\t\tvar txt = find_child(e, \"title\").textContent.replace(/\\([^(]*\\)$/,\"\");\n",
"\t\tt.attributes.x.value = parseFloat(r.attributes.x.value) + 3;\n",
"\n",
"\t\t// Smaller than this size won't fit anything\n",
"\t\tif (w < 2 * 12 * 0.59) {\n",
"\t\t\tt.textContent = \"\";\n",
"\t\t\treturn;\n",
"\t\t}\n",
"\n",
"\t\tt.textContent = txt;\n",
"\t\t// Fit in full text width\n",
"\t\tif (/^ *$/.test(txt) || t.getSubStringLength(0, txt.length) < w)\n",
"\t\t\treturn;\n",
"\n",
"\t\tfor (var x = txt.length - 2; x > 0; x--) {\n",
"\t\t\tif (t.getSubStringLength(0, x + 2) <= w) {\n",
"\t\t\t\tt.textContent = txt.substring(0, x) + \"..\";\n",
"\t\t\t\treturn;\n",
"\t\t\t}\n",
"\t\t}\n",
"\t\tt.textContent = \"\";\n",
"\t}\n",
"\n",
"\t// zoom\n",
"\tfunction zoom_reset(e) {\n",
"\t\tif (e.attributes != undefined) {\n",
"\t\t\torig_load(e, \"x\");\n",
"\t\t\torig_load(e, \"width\");\n",
"\t\t}\n",
"\t\tif (e.childNodes == undefined) return;\n",
"\t\tfor (var i = 0, c = e.childNodes; i < c.length; i++) {\n",
"\t\t\tzoom_reset(c[i]);\n",
"\t\t}\n",
"\t}\n",
"\tfunction zoom_child(e, x, ratio) {\n",
"\t\tif (e.attributes != undefined) {\n",
"\t\t\tif (e.attributes.x != undefined) {\n",
"\t\t\t\torig_save(e, \"x\");\n",
"\t\t\t\te.attributes.x.value = (parseFloat(e.attributes.x.value) - x - 10) * ratio + 10;\n",
"\t\t\t\tif (e.tagName == \"text\")\n",
"\t\t\t\t\te.attributes.x.value = find_child(e.parentNode, \"rect[x]\").attributes.x.value + 3;\n",
"\t\t\t}\n",
"\t\t\tif (e.attributes.width != undefined) {\n",
"\t\t\t\torig_save(e, \"width\");\n",
"\t\t\t\te.attributes.width.value = parseFloat(e.attributes.width.value) * ratio;\n",
"\t\t\t}\n",
"\t\t}\n",
"\n",
"\t\tif (e.childNodes == undefined) return;\n",
"\t\tfor (var i = 0, c = e.childNodes; i < c.length; i++) {\n",
"\t\t\tzoom_child(c[i], x - 10, ratio);\n",
"\t\t}\n",
"\t}\n",
"\tfunction zoom_parent(e) {\n",
"\t\tif (e.attributes) {\n",
"\t\t\tif (e.attributes.x != undefined) {\n",
"\t\t\t\torig_save(e, \"x\");\n",
"\t\t\t\te.attributes.x.value = 10;\n",
"\t\t\t}\n",
"\t\t\tif (e.attributes.width != undefined) {\n",
"\t\t\t\torig_save(e, \"width\");\n",
"\t\t\t\te.attributes.width.value = parseInt(svg.width.baseVal.value) - (10 * 2);\n",
"\t\t\t}\n",
"\t\t}\n",
"\t\tif (e.childNodes == undefined) return;\n",
"\t\tfor (var i = 0, c = e.childNodes; i < c.length; i++) {\n",
"\t\t\tzoom_parent(c[i]);\n",
"\t\t}\n",
"\t}\n",
"\tfunction zoom(node) {\n",
"\t\tvar attr = find_child(node, \"rect\").attributes;\n",
"\t\tvar width = parseFloat(attr.width.value);\n",
"\t\tvar xmin = parseFloat(attr.x.value);\n",
"\t\tvar xmax = parseFloat(xmin + width);\n",
"\t\tvar ymin = parseFloat(attr.y.value);\n",
"\t\tvar ratio = (svg.width.baseVal.value - 2 * 10) / width;\n",
"\n",
"\t\t// XXX: Workaround for JavaScript float issues (fix me)\n",
"\t\tvar fudge = 0.0001;\n",
"\n",
"\t\tunzoombtn.classList.remove(\"hide\");\n",
"\n",
"\t\tvar el = document.getElementById(\"frames\").children;\n",
"\t\tfor (var i = 0; i < el.length; i++) {\n",
"\t\t\tvar e = el[i];\n",
"\t\t\tvar a = find_child(e, \"rect\").attributes;\n",
"\t\t\tvar ex = parseFloat(a.x.value);\n",
"\t\t\tvar ew = parseFloat(a.width.value);\n",
"\t\t\tvar upstack;\n",
"\t\t\t// Is it an ancestor\n",
"\t\t\tif (1 == 0) {\n",
"\t\t\t\tupstack = parseFloat(a.y.value) > ymin;\n",
"\t\t\t} else {\n",
"\t\t\t\tupstack = parseFloat(a.y.value) < ymin;\n",
"\t\t\t}\n",
"\t\t\tif (upstack) {\n",
"\t\t\t\t// Direct ancestor\n",
"\t\t\t\tif (ex <= xmin && (ex+ew+fudge) >= xmax) {\n",
"\t\t\t\t\te.classList.add(\"parent\");\n",
"\t\t\t\t\tzoom_parent(e);\n",
"\t\t\t\t\tupdate_text(e);\n",
"\t\t\t\t}\n",
"\t\t\t\t// not in current path\n",
"\t\t\t\telse\n",
"\t\t\t\t\te.classList.add(\"hide\");\n",
"\t\t\t}\n",
"\t\t\t// Children maybe\n",
"\t\t\telse {\n",
"\t\t\t\t// no common path\n",
"\t\t\t\tif (ex < xmin || ex + fudge >= xmax) {\n",
"\t\t\t\t\te.classList.add(\"hide\");\n",
"\t\t\t\t}\n",
"\t\t\t\telse {\n",
"\t\t\t\t\tzoom_child(e, xmin, ratio);\n",
"\t\t\t\t\tupdate_text(e);\n",
"\t\t\t\t}\n",
"\t\t\t}\n",
"\t\t}\n",
"\t}\n",
"\tfunction unzoom() {\n",
"\t\tunzoombtn.classList.add(\"hide\");\n",
"\t\tvar el = document.getElementById(\"frames\").children;\n",
"\t\tfor(var i = 0; i < el.length; i++) {\n",
"\t\t\tel[i].classList.remove(\"parent\");\n",
"\t\t\tel[i].classList.remove(\"hide\");\n",
"\t\t\tzoom_reset(el[i]);\n",
"\t\t\tupdate_text(el[i]);\n",
"\t\t}\n",
"\t}\n",
"\n",
"\t// search\n",
"\tfunction reset_search() {\n",
"\t\tvar el = document.querySelectorAll(\"#frames rect\");\n",
"\t\tfor (var i = 0; i < el.length; i++) {\n",
"\t\t\torig_load(el[i], \"fill\")\n",
"\t\t}\n",
"\t}\n",
"\tfunction search_prompt() {\n",
"\t\tif (!searching) {\n",
"\t\t\tvar term = prompt(\"Enter a search term (regexp \" +\n",
"\t\t\t \"allowed, eg: ^ext4_)\", \"\");\n",
"\t\t\tif (term != null) {\n",
"\t\t\t\tsearch(term)\n",
"\t\t\t}\n",
"\t\t} else {\n",
"\t\t\treset_search();\n",
"\t\t\tsearching = 0;\n",
"\t\t\tsearchbtn.classList.remove(\"show\");\n",
"\t\t\tsearchbtn.firstChild.nodeValue = \"Search\"\n",
"\t\t\tmatchedtxt.classList.add(\"hide\");\n",
"\t\t\tmatchedtxt.firstChild.nodeValue = \"\"\n",
"\t\t}\n",
"\t}\n",
"\tfunction search(term) {\n",
"\t\tvar re = new RegExp(term);\n",
"\t\tvar el = document.getElementById(\"frames\").children;\n",
"\t\tvar matches = new Object();\n",
"\t\tvar maxwidth = 0;\n",
"\t\tfor (var i = 0; i < el.length; i++) {\n",
"\t\t\tvar e = el[i];\n",
"\t\t\tvar func = g_to_func(e);\n",
"\t\t\tvar rect = find_child(e, \"rect\");\n",
"\t\t\tif (func == null || rect == null)\n",
"\t\t\t\tcontinue;\n",
"\n",
"\t\t\t// Save max width. Only works as we have a root frame\n",
"\t\t\tvar w = parseFloat(rect.attributes.width.value);\n",
"\t\t\tif (w > maxwidth)\n",
"\t\t\t\tmaxwidth = w;\n",
"\n",
"\t\t\tif (func.match(re)) {\n",
"\t\t\t\t// highlight\n",
"\t\t\t\tvar x = parseFloat(rect.attributes.x.value);\n",
"\t\t\t\torig_save(rect, \"fill\");\n",
"\t\t\t\trect.attributes.fill.value = \"rgb(230,0,230)\";\n",
"\n",
"\t\t\t\t// remember matches\n",
"\t\t\t\tif (matches[x] == undefined) {\n",
"\t\t\t\t\tmatches[x] = w;\n",
"\t\t\t\t} else {\n",
"\t\t\t\t\tif (w > matches[x]) {\n",
"\t\t\t\t\t\t// overwrite with parent\n",
"\t\t\t\t\t\tmatches[x] = w;\n",
"\t\t\t\t\t}\n",
"\t\t\t\t}\n",
"\t\t\t\tsearching = 1;\n",
"\t\t\t}\n",
"\t\t}\n",
"\t\tif (!searching)\n",
"\t\t\treturn;\n",
"\n",
"\t\tsearchbtn.classList.add(\"show\");\n",
"\t\tsearchbtn.firstChild.nodeValue = \"Reset Search\";\n",
"\n",
"\t\t// calculate percent matched, excluding vertical overlap\n",
"\t\tvar count = 0;\n",
"\t\tvar lastx = -1;\n",
"\t\tvar lastw = 0;\n",
"\t\tvar keys = Array();\n",
"\t\tfor (k in matches) {\n",
"\t\t\tif (matches.hasOwnProperty(k))\n",
"\t\t\t\tkeys.push(k);\n",
"\t\t}\n",
"\t\t// sort the matched frames by their x location\n",
"\t\t// ascending, then width descending\n",
"\t\tkeys.sort(function(a, b){\n",
"\t\t\treturn a - b;\n",
"\t\t});\n",
"\t\t// Step through frames saving only the biggest bottom-up frames\n",
"\t\t// thanks to the sort order. This relies on the tree property\n",
"\t\t// where children are always smaller than their parents.\n",
"\t\tvar fudge = 0.0001;\t// JavaScript floating point\n",
"\t\tfor (var k in keys) {\n",
"\t\t\tvar x = parseFloat(keys[k]);\n",
"\t\t\tvar w = matches[keys[k]];\n",
"\t\t\tif (x >= lastx + lastw - fudge) {\n",
"\t\t\t\tcount += w;\n",
"\t\t\t\tlastx = x;\n",
"\t\t\t\tlastw = w;\n",
"\t\t\t}\n",
"\t\t}\n",
"\t\t// display matched percent\n",
"\t\tmatchedtxt.classList.remove(\"hide\");\n",
"\t\tvar pct = 100 * count / maxwidth;\n",
"\t\tif (pct != 100) pct = pct.toFixed(1)\n",
"\t\tmatchedtxt.firstChild.nodeValue = \"Matched: \" + pct + \"%\";\n",
"\t}\n",
"]]>\n",
"</script>\n",
"<rect x=\"0.0\" y=\"0\" width=\"1200.0\" height=\"230.0\" fill=\"url(#background)\" />\n",
"<text id=\"title\" x=\"600.00\" y=\"24\" >Icicle Graph</text>\n",
"<text id=\"details\" x=\"10.00\" y=\"213\" > </text>\n",
"<text id=\"unzoom\" x=\"10.00\" y=\"24\" class=\"hide\">Reset Zoom</text>\n",
"<text id=\"search\" x=\"1090.00\" y=\"24\" >Search</text>\n",
"<text id=\"matched\" x=\"1090.00\" y=\"213\" > </text>\n",
"<g id=\"frames\">\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/lazyframe/frame.py:1683:collect (27,454 samples, 84.56%)</title><rect x=\"168.5\" y=\"100\" width=\"997.8\" height=\"15.0\" fill=\"rgb(251,171,36)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"171.50\" y=\"110.5\" >/home/marius/anaconda3/lib/python3.11/site-packages/polars/lazyframe/frame.py:1683:collect</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/ipykernel/iostream.py:532:_schedule_flush (65 samples, 0.20%)</title><rect x=\"1173.0\" y=\"132\" width=\"2.4\" height=\"15.0\" fill=\"rgb(216,143,41)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1175.99\" y=\"142.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method posix.stat&gt; (278 samples, 0.86%)</title><rect x=\"63.6\" y=\"164\" width=\"10.1\" height=\"15.0\" fill=\"rgb(220,88,29)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"66.61\" y=\"174.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/_utils/parse_expr_input.py:50:_parse_positional_inputs (36 samples, 0.11%)</title><rect x=\"167.2\" y=\"148\" width=\"1.3\" height=\"15.0\" fill=\"rgb(239,54,52)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"170.19\" y=\"158.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/zmq/sugar/socket.py:543:send (40 samples, 0.12%)</title><rect x=\"1173.9\" y=\"164\" width=\"1.5\" height=\"15.0\" fill=\"rgb(223,40,30)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1176.90\" y=\"174.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/_utils/parse_expr_input.py:20:parse_as_list_of_expressions (38 samples, 0.12%)</title><rect x=\"167.1\" y=\"132\" width=\"1.4\" height=\"15.0\" fill=\"rgb(221,67,37)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"170.12\" y=\"142.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/_utils/various.py:182:normalize_filepath (147 samples, 0.45%)</title><rect x=\"22.4\" y=\"148\" width=\"5.3\" height=\"15.0\" fill=\"rgb(224,167,33)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"25.36\" y=\"158.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method builtins.print&gt; (529 samples, 1.63%)</title><rect x=\"1170.8\" y=\"100\" width=\"19.2\" height=\"15.0\" fill=\"rgb(240,155,26)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1173.77\" y=\"110.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/lazyframe/frame.py:1683:collect (599 samples, 1.84%)</title><rect x=\"143.9\" y=\"116\" width=\"21.8\" height=\"15.0\" fill=\"rgb(237,175,44)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"146.93\" y=\"126.5\" >/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/tmp/ipykernel_67611/2832609216.py:1:test_polars (32,221 samples, 99.24%)</title><rect x=\"18.9\" y=\"84\" width=\"1171.1\" height=\"15.0\" fill=\"rgb(232,3,23)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"21.94\" y=\"94.5\" >/tmp/ipykernel_67611/2832609216.py:1:test_polars</text>\n",
"</g>\n",
"<g >\n",
"<title>/tmp/ipykernel_67611/2832609216.py:9:&lt;listcomp&gt; (123 samples, 0.38%)</title><rect x=\"1166.3\" y=\"100\" width=\"4.5\" height=\"15.0\" fill=\"rgb(250,203,15)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1169.30\" y=\"110.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/io/ndjson.py:86:scan_ndjson (1,108 samples, 3.41%)</title><rect x=\"22.0\" y=\"132\" width=\"40.3\" height=\"15.0\" fill=\"rgb(253,94,26)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"24.99\" y=\"142.5\" >/ho..</text>\n",
"</g>\n",
"<g >\n",
"<title>&lt;frozen genericpath&gt;:16:exists (140 samples, 0.43%)</title><rect x=\"22.6\" y=\"164\" width=\"5.1\" height=\"15.0\" fill=\"rgb(233,117,35)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"25.61\" y=\"174.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'collect' of 'builtins.PyLazyFrame' objects&gt; (593 samples, 1.83%)</title><rect x=\"144.1\" y=\"132\" width=\"21.6\" height=\"15.0\" fill=\"rgb(239,189,31)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"147.15\" y=\"142.5\" >~..</text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'collect' of 'builtins.PyLazyFrame' objects&gt; (27,400 samples, 84.39%)</title><rect x=\"170.5\" y=\"116\" width=\"995.8\" height=\"15.0\" fill=\"rgb(229,84,3)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"173.46\" y=\"126.5\" >~:0:&lt;method 'collect' of 'builtins.PyLazyFrame' objects&gt;</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/ipykernel/iostream.py:243:schedule (61 samples, 0.19%)</title><rect x=\"1173.1\" y=\"148\" width=\"2.3\" height=\"15.0\" fill=\"rgb(235,223,6)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1176.14\" y=\"158.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>all (32,467 samples, 100%)</title><rect x=\"10.0\" y=\"36\" width=\"1180.0\" height=\"15.0\" fill=\"rgb(223,13,53)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"13.00\" y=\"46.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method posix.stat&gt; (139 samples, 0.43%)</title><rect x=\"22.6\" y=\"180\" width=\"5.1\" height=\"15.0\" fill=\"rgb(209,190,18)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"25.65\" y=\"190.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method new_from_ndjson&gt; (951 samples, 2.93%)</title><rect x=\"27.7\" y=\"148\" width=\"34.6\" height=\"15.0\" fill=\"rgb(229,129,15)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"30.70\" y=\"158.5\" >~:..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/ipykernel/iostream.py:610:write (114 samples, 0.35%)</title><rect x=\"1171.2\" y=\"116\" width=\"4.2\" height=\"15.0\" fill=\"rgb(218,81,38)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1174.21\" y=\"126.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/_utils/deprecation.py:130:wrapper (1,112 samples, 3.43%)</title><rect x=\"21.8\" y=\"116\" width=\"40.5\" height=\"15.0\" fill=\"rgb(251,10,25)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"24.85\" y=\"126.5\" >/ho..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/functions/col.py:20:_create_col (39 samples, 0.12%)</title><rect x=\"1169.4\" y=\"132\" width=\"1.4\" height=\"15.0\" fill=\"rgb(235,110,1)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1172.36\" y=\"142.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/dataframe/frame.py:8164:with_columns (706 samples, 2.17%)</title><rect x=\"142.8\" y=\"100\" width=\"25.7\" height=\"15.0\" fill=\"rgb(219,171,2)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"145.84\" y=\"110.5\" >/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/functions/col.py:145:__new__ (46 samples, 0.14%)</title><rect x=\"1169.1\" y=\"116\" width=\"1.7\" height=\"15.0\" fill=\"rgb(219,77,30)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1172.10\" y=\"126.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/_utils/various.py:182:normalize_filepath (294 samples, 0.91%)</title><rect x=\"63.0\" y=\"132\" width=\"10.7\" height=\"15.0\" fill=\"rgb(244,215,27)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"66.03\" y=\"142.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/_utils/deprecation.py:130:wrapper (3,334 samples, 10.27%)</title><rect x=\"21.7\" y=\"100\" width=\"121.1\" height=\"15.0\" fill=\"rgb(218,119,5)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"24.67\" y=\"110.5\" >/home/marius/an..</text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method new_from_ndjson&gt; (1,902 samples, 5.86%)</title><rect x=\"73.7\" y=\"132\" width=\"69.1\" height=\"15.0\" fill=\"rgb(249,154,53)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"76.71\" y=\"142.5\" >~:0:&lt;bu..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/dataframe/frame.py:980:__str__ (403 samples, 1.24%)</title><rect x=\"1175.4\" y=\"116\" width=\"14.6\" height=\"15.0\" fill=\"rgb(248,125,7)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1178.35\" y=\"126.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>&lt;frozen genericpath&gt;:16:exists (280 samples, 0.86%)</title><rect x=\"63.5\" y=\"148\" width=\"10.2\" height=\"15.0\" fill=\"rgb(240,204,51)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"66.54\" y=\"158.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/lazyframe/frame.py:4006:with_columns (77 samples, 0.24%)</title><rect x=\"165.7\" y=\"116\" width=\"2.8\" height=\"15.0\" fill=\"rgb(207,1,52)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"168.70\" y=\"126.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>&lt;string&gt;:1:&lt;module&gt; (32,424 samples, 99.87%)</title><rect x=\"11.6\" y=\"68\" width=\"1178.4\" height=\"15.0\" fill=\"rgb(245,200,44)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"14.56\" y=\"78.5\" >&lt;string&gt;:1:&lt;module&gt;</text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method builtins.exec&gt; (32,467 samples, 100.00%)</title><rect x=\"10.0\" y=\"52\" width=\"1180.0\" height=\"15.0\" fill=\"rgb(245,159,10)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"13.00\" y=\"62.5\" >~:0:&lt;built-in method builtins.exec&gt;</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/expr/expr.py:1917:cast (50 samples, 0.15%)</title><rect x=\"1167.3\" y=\"116\" width=\"1.8\" height=\"15.0\" fill=\"rgb(207,186,29)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1170.28\" y=\"126.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/polars/io/ndjson.py:86:scan_ndjson (2,217 samples, 6.83%)</title><rect x=\"62.3\" y=\"116\" width=\"80.5\" height=\"15.0\" fill=\"rgb(249,64,17)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"65.26\" y=\"126.5\" >/home/mar..</text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'as_str' of 'builtins.PyDataFrame' objects&gt; (399 samples, 1.23%)</title><rect x=\"1175.5\" y=\"132\" width=\"14.5\" height=\"15.0\" fill=\"rgb(210,100,53)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1178.50\" y=\"142.5\" ></text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%flame -q --inverted\n",
"test_polars()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "87f043b9-6cfa-4c3b-b550-25818e29bd45",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"shape: (8_000, 7)\n",
"┌──────────────┬─────────────┬─────────────┬─────────────┬─────────────┬─────────────┬─────────────┐\n",
"│ @timestamp ┆ host.hostna ┆ host.ip ┆ log.level ┆ winlog.even ┆ winlog.task ┆ message │\n",
"│ --- ┆ me ┆ --- ┆ --- ┆ t_id ┆ --- ┆ --- │\n",
"│ str ┆ --- ┆ str ┆ str ┆ --- ┆ str ┆ str │\n",
"│ ┆ str ┆ ┆ ┆ i64 ┆ ┆ │\n",
"╞══════════════╪═════════════╪═════════════╪═════════════╪═════════════╪═════════════╪═════════════╡\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 13 ┆ Registry ┆ Registry │\n",
"│ 5:57:18.471Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ value set ┆ value set: │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ (rule: ┆ RuleName: … │\n",
"│ ┆ ┆ ┆ ┆ ┆ Regi… ┆ │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 13 ┆ Registry ┆ Registry │\n",
"│ 5:57:18.471Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ value set ┆ value set: │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ (rule: ┆ RuleName: … │\n",
"│ ┆ ┆ ┆ ┆ ┆ Regi… ┆ │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 13 ┆ Registry ┆ Registry │\n",
"│ 5:57:18.471Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ value set ┆ value set: │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ (rule: ┆ RuleName: … │\n",
"│ ┆ ┆ ┆ ┆ ┆ Regi… ┆ │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 13 ┆ Registry ┆ Registry │\n",
"│ 5:57:18.471Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ value set ┆ value set: │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ (rule: ┆ RuleName: … │\n",
"│ ┆ ┆ ┆ ┆ ┆ Regi… ┆ │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 13 ┆ Registry ┆ Registry │\n",
"│ 5:57:18.471Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ value set ┆ value set: │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ (rule: ┆ RuleName: … │\n",
"│ ┆ ┆ ┆ ┆ ┆ Regi… ┆ │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 4663 ┆ Removable ┆ An attempt │\n",
"│ 6:10:07.128Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ Storage ┆ was made to │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ ┆ access … │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 4663 ┆ Removable ┆ An attempt │\n",
"│ 6:10:07.136Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ Storage ┆ was made to │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ ┆ access … │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 4663 ┆ Removable ┆ An attempt │\n",
"│ 6:10:07.136Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ Storage ┆ was made to │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ ┆ access … │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 4663 ┆ Removable ┆ An attempt │\n",
"│ 6:10:07.149Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ Storage ┆ was made to │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ ┆ access … │\n",
"│ 2024-05-15T1 ┆ win10 ┆ fe80::24b4: ┆ information ┆ 4663 ┆ Removable ┆ An attempt │\n",
"│ 6:10:07.149Z ┆ ┆ 3691:44a6:3 ┆ ┆ ┆ Storage ┆ was made to │\n",
"│ ┆ ┆ 8a1 ┆ ┆ ┆ ┆ access … │\n",
"└──────────────┴─────────────┴─────────────┴─────────────┴─────────────┴─────────────┴─────────────┘\n",
"Pandas DataFarme number of rows: 8000\n",
"Polars DataFrame memory usage: 4.76 MB\n",
" "
]
},
{
"data": {
"text/plain": [
" 256 function calls (253 primitive calls) in 0.020 seconds\n",
"\n",
" Ordered by: internal time\n",
"\n",
" ncalls tottime percall cumtime percall filename:lineno(function)\n",
" 2 0.014 0.007 0.014 0.007 {method 'collect' of 'builtins.PyLazyFrame' objects}\n",
" 1 0.003 0.003 0.003 0.003 {built-in method new_from_ndjson}\n",
" 2 0.001 0.001 0.001 0.001 {built-in method posix.stat}\n",
" 1 0.000 0.000 0.000 0.000 {method 'as_str' of 'builtins.PyDataFrame' objects}\n",
" 1 0.000 0.000 0.020 0.020 <string>:1(<module>)\n",
" 1 0.000 0.000 0.020 0.020 2832609216.py:1(test_polars)\n",
" 1 0.000 0.000 0.000 0.000 socket.py:543(send)\n",
" 2 0.000 0.000 0.000 0.000 wrap.py:12(wrap_df)\n",
" 6 0.000 0.000 0.000 0.000 iostream.py:610(write)\n",
" 1 0.000 0.000 0.020 0.020 {built-in method builtins.exec}\n",
" 2 0.000 0.000 0.014 0.007 frame.py:1683(collect)\n",
" 1 0.000 0.000 0.004 0.004 ndjson.py:86(scan_ndjson)\n",
" 1 0.000 0.000 0.000 0.000 2832609216.py:9(<listcomp>)\n",
" 2/1 0.000 0.000 0.004 0.004 deprecation.py:130(wrapper)\n",
" 2 0.000 0.000 0.000 0.000 wrap.py:16(wrap_ldf)\n",
" 7 0.000 0.000 0.000 0.000 expr.py:1917(cast)\n",
" 1 0.000 0.000 0.001 0.001 various.py:182(normalize_filepath)\n",
" 41/39 0.000 0.000 0.000 0.000 {built-in method builtins.isinstance}\n",
" 7 0.000 0.000 0.000 0.000 col.py:20(_create_col)\n",
" 3 0.000 0.000 0.001 0.000 {built-in method builtins.print}\n",
" 1 0.000 0.000 0.000 0.000 frame.py:4006(with_columns)\n",
" 2 0.000 0.000 0.000 0.000 {method 'optimization_toggle' of 'builtins.PyLazyFrame' objects}\n",
" 1 0.000 0.000 0.000 0.000 frame.py:7998(lazy)\n",
" 3 0.000 0.000 0.000 0.000 frame.py:316(_from_pyldf)\n",
" 1 0.000 0.000 0.001 0.001 frame.py:8164(with_columns)\n",
" 7 0.000 0.000 0.000 0.000 {method 'cast' of 'builtins.PyExpr' objects}\n",
" 1 0.000 0.000 0.000 0.000 iostream.py:243(schedule)\n",
" 7 0.000 0.000 0.000 0.000 convert.py:388(py_type_to_dtype)\n",
" 19 0.000 0.000 0.000 0.000 {built-in method __new__ of type object at 0x860f60}\n",
" 6 0.000 0.000 0.000 0.000 iostream.py:505(_is_master_process)\n",
" 1 0.000 0.000 0.000 0.000 {method 'with_columns' of 'builtins.PyLazyFrame' objects}\n",
" 1 0.000 0.000 0.000 0.000 <frozen os>:674(__getitem__)\n",
" 7 0.000 0.000 0.000 0.000 {col}\n",
" 7 0.000 0.000 0.000 0.000 col.py:145(__new__)\n",
" 1 0.000 0.000 0.000 0.000 <frozen genericpath>:39(isdir)\n",
" 7 0.000 0.000 0.000 0.000 wrap.py:24(wrap_expr)\n",
" 1 0.000 0.000 0.000 0.000 <frozen posixpath>:229(expanduser)\n",
" 6 0.000 0.000 0.000 0.000 {built-in method posix.getpid}\n",
" 14 0.000 0.000 0.000 0.000 expr.py:131(_from_pyexpr)\n",
" 1 0.000 0.000 0.000 0.000 {method 'lazy' of 'builtins.PyDataFrame' objects}\n",
" 1 0.000 0.000 0.000 0.000 typing.py:1579(__subclasscheck__)\n",
" 2 0.000 0.000 0.000 0.000 frame.py:439(_from_pydf)\n",
" 1 0.000 0.000 0.000 0.000 parse_expr_input.py:56(<listcomp>)\n",
" 7 0.000 0.000 0.000 0.000 convert.py:146(is_polars_dtype)\n",
" 1 0.000 0.000 0.000 0.000 threading.py:1185(is_alive)\n",
" 1 0.000 0.000 0.001 0.001 <frozen genericpath>:16(exists)\n",
" 1 0.000 0.000 0.000 0.000 {method 'estimated_size' of 'builtins.PyDataFrame' objects}\n",
" 6 0.000 0.000 0.000 0.000 iostream.py:532(_schedule_flush)\n",
" 1 0.000 0.000 0.000 0.000 frame.py:980(__str__)\n",
" 1 0.000 0.000 0.000 0.000 parse_expr_input.py:59(_parse_inputs_as_iterable)\n",
" 1 0.000 0.000 0.000 0.000 <frozen _collections_abc>:771(get)\n",
" 1 0.000 0.000 0.000 0.000 threading.py:1118(_wait_for_tstate_lock)\n",
" 7 0.000 0.000 0.000 0.000 parse_expr_input.py:85(parse_as_expression)\n",
" 1 0.000 0.000 0.000 0.000 frame.py:3600(estimated_size)\n",
" 1 0.000 0.000 0.000 0.000 parse_expr_input.py:50(_parse_positional_inputs)\n",
" 1 0.000 0.000 0.000 0.000 <frozen os>:756(encode)\n",
" 1 0.000 0.000 0.000 0.000 frame.py:591(shape)\n",
" 1 0.000 0.000 0.000 0.000 {built-in method builtins.issubclass}\n",
" 1 0.000 0.000 0.000 0.000 iostream.py:127(_event_pipe)\n",
" 1 0.000 0.000 0.000 0.000 parse_expr_input.py:72(_is_iterable)\n",
" 1 0.000 0.000 0.000 0.000 parse_expr_input.py:20(parse_as_list_of_expressions)\n",
" 1 0.000 0.000 0.000 0.000 typing.py:1304(__instancecheck__)\n",
" 1 0.000 0.000 0.000 0.000 <frozen abc>:121(__subclasscheck__)\n",
" 1 0.000 0.000 0.000 0.000 {built-in method _abc._abc_subclasscheck}\n",
" 1 0.000 0.000 0.000 0.000 {method 'shape' of 'builtins.PyDataFrame' objects}\n",
" 1 0.000 0.000 0.000 0.000 {method 'acquire' of '_thread.lock' objects}\n",
" 7 0.000 0.000 0.000 0.000 {built-in method builtins.len}\n",
" 6 0.000 0.000 0.000 0.000 {method 'write' of '_io.StringIO' objects}\n",
" 6 0.000 0.000 0.000 0.000 {method '__exit__' of '_thread.RLock' objects}\n",
" 1 0.000 0.000 0.000 0.000 {built-in method _stat.S_ISDIR}\n",
" 1 0.000 0.000 0.000 0.000 various.py:210(scale_bytes)\n",
" 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n",
" 2 0.000 0.000 0.000 0.000 {method 'get' of 'dict' objects}\n",
" 2 0.000 0.000 0.000 0.000 deprecation.py:143(_rename_keyword_argument)\n",
" 1 0.000 0.000 0.000 0.000 {method 'encode' of 'str' objects}\n",
" 1 0.000 0.000 0.000 0.000 {method 'items' of 'dict' objects}\n",
" 1 0.000 0.000 0.000 0.000 {method 'startswith' of 'str' objects}\n",
" 1 0.000 0.000 0.000 0.000 _utils.py:58(parse_row_index_args)\n",
" 1 0.000 0.000 0.000 0.000 threading.py:568(is_set)\n",
" 1 0.000 0.000 0.000 0.000 {method 'append' of 'collections.deque' objects}\n",
" 1 0.000 0.000 0.000 0.000 {built-in method posix.fspath}"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%prun\n",
"test_polars()"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "547f7253-cd62-44c6-8d7a-840dab2dbbbd",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"def test_pandas():\n",
" # Load the JSON file into a Pandas DataFrame\n",
" pd_df = pd.read_json(file_path, lines=True, dtype=pandas_schema)\n",
" pd_memory_usage = pd_df.memory_usage(deep=True).sum()\n",
"\n",
" # Get the number of rows in the Pandas DataFrame\n",
" num_rows_pandas = pd_df.shape[0]\n",
"\n",
" print(pd_df)\n",
"\n",
" print(f\"Pandas DataFarme number of rows: {num_rows_pandas}\")\n",
" print(f\"Pandas DataFrame memory usage: {pd_memory_usage / (1024 ** 2):.2f} MB\") \n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "50230892-0a0e-4144-a17e-27d2714de1e8",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" @timestamp host.hostname host.ip \\\n",
"0 2024-05-15T15:57:18.471Z win10 fe80::24b4:3691:44a6:38a1 \n",
"1 2024-05-15T15:57:18.471Z win10 fe80::24b4:3691:44a6:38a1 \n",
"2 2024-05-15T15:57:18.471Z win10 fe80::24b4:3691:44a6:38a1 \n",
"3 2024-05-15T15:57:18.471Z win10 fe80::24b4:3691:44a6:38a1 \n",
"4 2024-05-15T15:57:18.471Z win10 fe80::24b4:3691:44a6:38a1 \n",
"... ... ... ... \n",
"7995 2024-05-15T16:10:07.128Z win10 fe80::24b4:3691:44a6:38a1 \n",
"7996 2024-05-15T16:10:07.136Z win10 fe80::24b4:3691:44a6:38a1 \n",
"7997 2024-05-15T16:10:07.136Z win10 fe80::24b4:3691:44a6:38a1 \n",
"7998 2024-05-15T16:10:07.149Z win10 fe80::24b4:3691:44a6:38a1 \n",
"7999 2024-05-15T16:10:07.149Z win10 fe80::24b4:3691:44a6:38a1 \n",
"\n",
" log.level winlog.event_id winlog.task \\\n",
"0 information 13 Registry value set (rule: RegistryEvent) \n",
"1 information 13 Registry value set (rule: RegistryEvent) \n",
"2 information 13 Registry value set (rule: RegistryEvent) \n",
"3 information 13 Registry value set (rule: RegistryEvent) \n",
"4 information 13 Registry value set (rule: RegistryEvent) \n",
"... ... ... ... \n",
"7995 information 4663 Removable Storage \n",
"7996 information 4663 Removable Storage \n",
"7997 information 4663 Removable Storage \n",
"7998 information 4663 Removable Storage \n",
"7999 information 4663 Removable Storage \n",
"\n",
" message \n",
"0 Registry value set:\\nRuleName: InvDB-Ver\\nEven... \n",
"1 Registry value set:\\nRuleName: InvDB-Path\\nEve... \n",
"2 Registry value set:\\nRuleName: InvDB-Pub\\nEven... \n",
"3 Registry value set:\\nRuleName: InvDB-CompileTi... \n",
"4 Registry value set:\\nRuleName: InvDB-Ver\\nEven... \n",
"... ... \n",
"7995 An attempt was made to access an object.\\n\\nSu... \n",
"7996 An attempt was made to access an object.\\n\\nSu... \n",
"7997 An attempt was made to access an object.\\n\\nSu... \n",
"7998 An attempt was made to access an object.\\n\\nSu... \n",
"7999 An attempt was made to access an object.\\n\\nSu... \n",
"\n",
"[8000 rows x 7 columns]\n",
"Pandas DataFarme number of rows: 8000\n",
"Pandas DataFrame memory usage: 7.56 MB\n",
" "
]
},
{
"data": {
"text/html": [
"<?xml version=\"1.0\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<svg version=\"1.1\" width=\"1200\" height=\"406\" onload=\"init(evt)\" viewBox=\"0 0 1200 406\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<!-- Flame graph stack visualization. See https://github.com/brendangregg/FlameGraph for latest version, and http://www.brendangregg.com/flamegraphs.html for examples. -->\n",
"<!-- NOTES: -->\n",
"<defs>\n",
"\t<linearGradient id=\"background\" y1=\"0\" y2=\"1\" x1=\"0\" x2=\"0\" >\n",
"\t\t<stop stop-color=\"#eeeeee\" offset=\"5%\" />\n",
"\t\t<stop stop-color=\"#eeeeb0\" offset=\"95%\" />\n",
"\t</linearGradient>\n",
"</defs>\n",
"<style type=\"text/css\">\n",
"\ttext { font-family:Verdana; font-size:12px; fill:rgb(0,0,0); }\n",
"\t#search { opacity:0.1; cursor:pointer; }\n",
"\t#search:hover, #search.show { opacity:1; }\n",
"\t#subtitle { text-anchor:middle; font-color:rgb(160,160,160); }\n",
"\t#title { text-anchor:middle; font-size:17px}\n",
"\t#unzoom { cursor:pointer; }\n",
"\t#frames > *:hover { stroke:black; stroke-width:0.5; cursor:pointer; }\n",
"\t.hide { display:none; }\n",
"\t.parent { opacity:0.5; }\n",
"</style>\n",
"<script type=\"text/ecmascript\">\n",
"<![CDATA[\n",
"\t\"use strict\";\n",
"\tvar details, searchbtn, unzoombtn, matchedtxt, svg, searching;\n",
"\tfunction init(evt) {\n",
"\t\tdetails = document.getElementById(\"details\").firstChild;\n",
"\t\tsearchbtn = document.getElementById(\"search\");\n",
"\t\tunzoombtn = document.getElementById(\"unzoom\");\n",
"\t\tmatchedtxt = document.getElementById(\"matched\");\n",
"\t\tsvg = document.getElementsByTagName(\"svg\")[0];\n",
"\t\tsearching = 0;\n",
"\t}\n",
"\n",
"\twindow.addEventListener(\"click\", function(e) {\n",
"\t\tvar target = find_group(e.target);\n",
"\t\tif (target) {\n",
"\t\t\tif (target.nodeName == \"a\") {\n",
"\t\t\t\tif (e.ctrlKey === false) return;\n",
"\t\t\t\te.preventDefault();\n",
"\t\t\t}\n",
"\t\t\tif (target.classList.contains(\"parent\")) unzoom();\n",
"\t\t\tzoom(target);\n",
"\t\t}\n",
"\t\telse if (e.target.id == \"unzoom\") unzoom();\n",
"\t\telse if (e.target.id == \"search\") search_prompt();\n",
"\t}, false)\n",
"\n",
"\t// mouse-over for info\n",
"\t// show\n",
"\twindow.addEventListener(\"mouseover\", function(e) {\n",
"\t\tvar target = find_group(e.target);\n",
"\t\tif (target) details.nodeValue = \"Function: \" + g_to_text(target);\n",
"\t}, false)\n",
"\n",
"\t// clear\n",
"\twindow.addEventListener(\"mouseout\", function(e) {\n",
"\t\tvar target = find_group(e.target);\n",
"\t\tif (target) details.nodeValue = ' ';\n",
"\t}, false)\n",
"\n",
"\t// ctrl-F for search\n",
"\twindow.addEventListener(\"keydown\",function (e) {\n",
"\t\tif (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) {\n",
"\t\t\te.preventDefault();\n",
"\t\t\tsearch_prompt();\n",
"\t\t}\n",
"\t}, false)\n",
"\n",
"\t// functions\n",
"\tfunction find_child(node, selector) {\n",
"\t\tvar children = node.querySelectorAll(selector);\n",
"\t\tif (children.length) return children[0];\n",
"\t\treturn;\n",
"\t}\n",
"\tfunction find_group(node) {\n",
"\t\tvar parent = node.parentElement;\n",
"\t\tif (!parent) return;\n",
"\t\tif (parent.id == \"frames\") return node;\n",
"\t\treturn find_group(parent);\n",
"\t}\n",
"\tfunction orig_save(e, attr, val) {\n",
"\t\tif (e.attributes[\"_orig_\" + attr] != undefined) return;\n",
"\t\tif (e.attributes[attr] == undefined) return;\n",
"\t\tif (val == undefined) val = e.attributes[attr].value;\n",
"\t\te.setAttribute(\"_orig_\" + attr, val);\n",
"\t}\n",
"\tfunction orig_load(e, attr) {\n",
"\t\tif (e.attributes[\"_orig_\"+attr] == undefined) return;\n",
"\t\te.attributes[attr].value = e.attributes[\"_orig_\" + attr].value;\n",
"\t\te.removeAttribute(\"_orig_\"+attr);\n",
"\t}\n",
"\tfunction g_to_text(e) {\n",
"\t\tvar text = find_child(e, \"title\").firstChild.nodeValue;\n",
"\t\treturn (text)\n",
"\t}\n",
"\tfunction g_to_func(e) {\n",
"\t\tvar func = g_to_text(e);\n",
"\t\t// if there's any manipulation we want to do to the function\n",
"\t\t// name before it's searched, do it here before returning.\n",
"\t\treturn (func);\n",
"\t}\n",
"\tfunction update_text(e) {\n",
"\t\tvar r = find_child(e, \"rect\");\n",
"\t\tvar t = find_child(e, \"text\");\n",
"\t\tvar w = parseFloat(r.attributes.width.value) -3;\n",
"\t\tvar txt = find_child(e, \"title\").textContent.replace(/\\([^(]*\\)$/,\"\");\n",
"\t\tt.attributes.x.value = parseFloat(r.attributes.x.value) + 3;\n",
"\n",
"\t\t// Smaller than this size won't fit anything\n",
"\t\tif (w < 2 * 12 * 0.59) {\n",
"\t\t\tt.textContent = \"\";\n",
"\t\t\treturn;\n",
"\t\t}\n",
"\n",
"\t\tt.textContent = txt;\n",
"\t\t// Fit in full text width\n",
"\t\tif (/^ *$/.test(txt) || t.getSubStringLength(0, txt.length) < w)\n",
"\t\t\treturn;\n",
"\n",
"\t\tfor (var x = txt.length - 2; x > 0; x--) {\n",
"\t\t\tif (t.getSubStringLength(0, x + 2) <= w) {\n",
"\t\t\t\tt.textContent = txt.substring(0, x) + \"..\";\n",
"\t\t\t\treturn;\n",
"\t\t\t}\n",
"\t\t}\n",
"\t\tt.textContent = \"\";\n",
"\t}\n",
"\n",
"\t// zoom\n",
"\tfunction zoom_reset(e) {\n",
"\t\tif (e.attributes != undefined) {\n",
"\t\t\torig_load(e, \"x\");\n",
"\t\t\torig_load(e, \"width\");\n",
"\t\t}\n",
"\t\tif (e.childNodes == undefined) return;\n",
"\t\tfor (var i = 0, c = e.childNodes; i < c.length; i++) {\n",
"\t\t\tzoom_reset(c[i]);\n",
"\t\t}\n",
"\t}\n",
"\tfunction zoom_child(e, x, ratio) {\n",
"\t\tif (e.attributes != undefined) {\n",
"\t\t\tif (e.attributes.x != undefined) {\n",
"\t\t\t\torig_save(e, \"x\");\n",
"\t\t\t\te.attributes.x.value = (parseFloat(e.attributes.x.value) - x - 10) * ratio + 10;\n",
"\t\t\t\tif (e.tagName == \"text\")\n",
"\t\t\t\t\te.attributes.x.value = find_child(e.parentNode, \"rect[x]\").attributes.x.value + 3;\n",
"\t\t\t}\n",
"\t\t\tif (e.attributes.width != undefined) {\n",
"\t\t\t\torig_save(e, \"width\");\n",
"\t\t\t\te.attributes.width.value = parseFloat(e.attributes.width.value) * ratio;\n",
"\t\t\t}\n",
"\t\t}\n",
"\n",
"\t\tif (e.childNodes == undefined) return;\n",
"\t\tfor (var i = 0, c = e.childNodes; i < c.length; i++) {\n",
"\t\t\tzoom_child(c[i], x - 10, ratio);\n",
"\t\t}\n",
"\t}\n",
"\tfunction zoom_parent(e) {\n",
"\t\tif (e.attributes) {\n",
"\t\t\tif (e.attributes.x != undefined) {\n",
"\t\t\t\torig_save(e, \"x\");\n",
"\t\t\t\te.attributes.x.value = 10;\n",
"\t\t\t}\n",
"\t\t\tif (e.attributes.width != undefined) {\n",
"\t\t\t\torig_save(e, \"width\");\n",
"\t\t\t\te.attributes.width.value = parseInt(svg.width.baseVal.value) - (10 * 2);\n",
"\t\t\t}\n",
"\t\t}\n",
"\t\tif (e.childNodes == undefined) return;\n",
"\t\tfor (var i = 0, c = e.childNodes; i < c.length; i++) {\n",
"\t\t\tzoom_parent(c[i]);\n",
"\t\t}\n",
"\t}\n",
"\tfunction zoom(node) {\n",
"\t\tvar attr = find_child(node, \"rect\").attributes;\n",
"\t\tvar width = parseFloat(attr.width.value);\n",
"\t\tvar xmin = parseFloat(attr.x.value);\n",
"\t\tvar xmax = parseFloat(xmin + width);\n",
"\t\tvar ymin = parseFloat(attr.y.value);\n",
"\t\tvar ratio = (svg.width.baseVal.value - 2 * 10) / width;\n",
"\n",
"\t\t// XXX: Workaround for JavaScript float issues (fix me)\n",
"\t\tvar fudge = 0.0001;\n",
"\n",
"\t\tunzoombtn.classList.remove(\"hide\");\n",
"\n",
"\t\tvar el = document.getElementById(\"frames\").children;\n",
"\t\tfor (var i = 0; i < el.length; i++) {\n",
"\t\t\tvar e = el[i];\n",
"\t\t\tvar a = find_child(e, \"rect\").attributes;\n",
"\t\t\tvar ex = parseFloat(a.x.value);\n",
"\t\t\tvar ew = parseFloat(a.width.value);\n",
"\t\t\tvar upstack;\n",
"\t\t\t// Is it an ancestor\n",
"\t\t\tif (1 == 0) {\n",
"\t\t\t\tupstack = parseFloat(a.y.value) > ymin;\n",
"\t\t\t} else {\n",
"\t\t\t\tupstack = parseFloat(a.y.value) < ymin;\n",
"\t\t\t}\n",
"\t\t\tif (upstack) {\n",
"\t\t\t\t// Direct ancestor\n",
"\t\t\t\tif (ex <= xmin && (ex+ew+fudge) >= xmax) {\n",
"\t\t\t\t\te.classList.add(\"parent\");\n",
"\t\t\t\t\tzoom_parent(e);\n",
"\t\t\t\t\tupdate_text(e);\n",
"\t\t\t\t}\n",
"\t\t\t\t// not in current path\n",
"\t\t\t\telse\n",
"\t\t\t\t\te.classList.add(\"hide\");\n",
"\t\t\t}\n",
"\t\t\t// Children maybe\n",
"\t\t\telse {\n",
"\t\t\t\t// no common path\n",
"\t\t\t\tif (ex < xmin || ex + fudge >= xmax) {\n",
"\t\t\t\t\te.classList.add(\"hide\");\n",
"\t\t\t\t}\n",
"\t\t\t\telse {\n",
"\t\t\t\t\tzoom_child(e, xmin, ratio);\n",
"\t\t\t\t\tupdate_text(e);\n",
"\t\t\t\t}\n",
"\t\t\t}\n",
"\t\t}\n",
"\t}\n",
"\tfunction unzoom() {\n",
"\t\tunzoombtn.classList.add(\"hide\");\n",
"\t\tvar el = document.getElementById(\"frames\").children;\n",
"\t\tfor(var i = 0; i < el.length; i++) {\n",
"\t\t\tel[i].classList.remove(\"parent\");\n",
"\t\t\tel[i].classList.remove(\"hide\");\n",
"\t\t\tzoom_reset(el[i]);\n",
"\t\t\tupdate_text(el[i]);\n",
"\t\t}\n",
"\t}\n",
"\n",
"\t// search\n",
"\tfunction reset_search() {\n",
"\t\tvar el = document.querySelectorAll(\"#frames rect\");\n",
"\t\tfor (var i = 0; i < el.length; i++) {\n",
"\t\t\torig_load(el[i], \"fill\")\n",
"\t\t}\n",
"\t}\n",
"\tfunction search_prompt() {\n",
"\t\tif (!searching) {\n",
"\t\t\tvar term = prompt(\"Enter a search term (regexp \" +\n",
"\t\t\t \"allowed, eg: ^ext4_)\", \"\");\n",
"\t\t\tif (term != null) {\n",
"\t\t\t\tsearch(term)\n",
"\t\t\t}\n",
"\t\t} else {\n",
"\t\t\treset_search();\n",
"\t\t\tsearching = 0;\n",
"\t\t\tsearchbtn.classList.remove(\"show\");\n",
"\t\t\tsearchbtn.firstChild.nodeValue = \"Search\"\n",
"\t\t\tmatchedtxt.classList.add(\"hide\");\n",
"\t\t\tmatchedtxt.firstChild.nodeValue = \"\"\n",
"\t\t}\n",
"\t}\n",
"\tfunction search(term) {\n",
"\t\tvar re = new RegExp(term);\n",
"\t\tvar el = document.getElementById(\"frames\").children;\n",
"\t\tvar matches = new Object();\n",
"\t\tvar maxwidth = 0;\n",
"\t\tfor (var i = 0; i < el.length; i++) {\n",
"\t\t\tvar e = el[i];\n",
"\t\t\tvar func = g_to_func(e);\n",
"\t\t\tvar rect = find_child(e, \"rect\");\n",
"\t\t\tif (func == null || rect == null)\n",
"\t\t\t\tcontinue;\n",
"\n",
"\t\t\t// Save max width. Only works as we have a root frame\n",
"\t\t\tvar w = parseFloat(rect.attributes.width.value);\n",
"\t\t\tif (w > maxwidth)\n",
"\t\t\t\tmaxwidth = w;\n",
"\n",
"\t\t\tif (func.match(re)) {\n",
"\t\t\t\t// highlight\n",
"\t\t\t\tvar x = parseFloat(rect.attributes.x.value);\n",
"\t\t\t\torig_save(rect, \"fill\");\n",
"\t\t\t\trect.attributes.fill.value = \"rgb(230,0,230)\";\n",
"\n",
"\t\t\t\t// remember matches\n",
"\t\t\t\tif (matches[x] == undefined) {\n",
"\t\t\t\t\tmatches[x] = w;\n",
"\t\t\t\t} else {\n",
"\t\t\t\t\tif (w > matches[x]) {\n",
"\t\t\t\t\t\t// overwrite with parent\n",
"\t\t\t\t\t\tmatches[x] = w;\n",
"\t\t\t\t\t}\n",
"\t\t\t\t}\n",
"\t\t\t\tsearching = 1;\n",
"\t\t\t}\n",
"\t\t}\n",
"\t\tif (!searching)\n",
"\t\t\treturn;\n",
"\n",
"\t\tsearchbtn.classList.add(\"show\");\n",
"\t\tsearchbtn.firstChild.nodeValue = \"Reset Search\";\n",
"\n",
"\t\t// calculate percent matched, excluding vertical overlap\n",
"\t\tvar count = 0;\n",
"\t\tvar lastx = -1;\n",
"\t\tvar lastw = 0;\n",
"\t\tvar keys = Array();\n",
"\t\tfor (k in matches) {\n",
"\t\t\tif (matches.hasOwnProperty(k))\n",
"\t\t\t\tkeys.push(k);\n",
"\t\t}\n",
"\t\t// sort the matched frames by their x location\n",
"\t\t// ascending, then width descending\n",
"\t\tkeys.sort(function(a, b){\n",
"\t\t\treturn a - b;\n",
"\t\t});\n",
"\t\t// Step through frames saving only the biggest bottom-up frames\n",
"\t\t// thanks to the sort order. This relies on the tree property\n",
"\t\t// where children are always smaller than their parents.\n",
"\t\tvar fudge = 0.0001;\t// JavaScript floating point\n",
"\t\tfor (var k in keys) {\n",
"\t\t\tvar x = parseFloat(keys[k]);\n",
"\t\t\tvar w = matches[keys[k]];\n",
"\t\t\tif (x >= lastx + lastw - fudge) {\n",
"\t\t\t\tcount += w;\n",
"\t\t\t\tlastx = x;\n",
"\t\t\t\tlastw = w;\n",
"\t\t\t}\n",
"\t\t}\n",
"\t\t// display matched percent\n",
"\t\tmatchedtxt.classList.remove(\"hide\");\n",
"\t\tvar pct = 100 * count / maxwidth;\n",
"\t\tif (pct != 100) pct = pct.toFixed(1)\n",
"\t\tmatchedtxt.firstChild.nodeValue = \"Matched: \" + pct + \"%\";\n",
"\t}\n",
"]]>\n",
"</script>\n",
"<rect x=\"0.0\" y=\"0\" width=\"1200.0\" height=\"406.0\" fill=\"url(#background)\" />\n",
"<text id=\"title\" x=\"600.00\" y=\"24\" >Icicle Graph</text>\n",
"<text id=\"details\" x=\"10.00\" y=\"389\" > </text>\n",
"<text id=\"unzoom\" x=\"10.00\" y=\"24\" class=\"hide\">Reset Zoom</text>\n",
"<text id=\"search\" x=\"1090.00\" y=\"24\" >Search</text>\n",
"<text id=\"matched\" x=\"1090.00\" y=\"389\" > </text>\n",
"<g id=\"frames\">\n",
"<g >\n",
"<title>/tmp/ipykernel_67611/1231667944.py:1:test_pandas (102,753 samples, 97.34%)</title><rect x=\"41.4\" y=\"84\" width=\"1148.6\" height=\"15.0\" fill=\"rgb(237,13,2)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"44.43\" y=\"94.5\" >/tmp/ipykernel_67611/1231667944.py:1:test_pandas</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2068:create_block_manager_from_column_arrays (2,137 samples, 2.02%)</title><rect x=\"408.7\" y=\"228\" width=\"23.8\" height=\"15.0\" fill=\"rgb(231,182,35)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"411.66\" y=\"238.5\" >/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/nanops.py:76:_f (147 samples, 0.14%)</title><rect x=\"188.2\" y=\"164\" width=\"1.6\" height=\"15.0\" fill=\"rgb(245,40,14)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"191.20\" y=\"174.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:7521:ensure_index (207 samples, 0.20%)</title><rect x=\"434.0\" y=\"244\" width=\"2.3\" height=\"15.0\" fill=\"rgb(249,27,47)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"436.98\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/generic.py:6337:dtypes (182 samples, 0.17%)</title><rect x=\"1163.7\" y=\"260\" width=\"2.1\" height=\"15.0\" fill=\"rgb(251,38,49)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1166.73\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/generic.py:6368:astype (306 samples, 0.29%)</title><rect x=\"973.8\" y=\"244\" width=\"3.4\" height=\"15.0\" fill=\"rgb(232,45,3)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"976.77\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:500:read_json (82,450 samples, 78.10%)</title><rect x=\"189.8\" y=\"100\" width=\"921.7\" height=\"15.0\" fill=\"rgb(248,216,25)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"192.84\" y=\"110.5\" >/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:500:read_json</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2194:_stack_arrays (271 samples, 0.26%)</title><rect x=\"845.3\" y=\"276\" width=\"3.1\" height=\"15.0\" fill=\"rgb(220,219,52)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"848.34\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2068:create_block_manager_from_column_arrays (285 samples, 0.27%)</title><rect x=\"874.6\" y=\"228\" width=\"3.2\" height=\"15.0\" fill=\"rgb(210,158,29)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"877.64\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/series.py:371:__init__ (109 samples, 0.10%)</title><rect x=\"367.2\" y=\"244\" width=\"1.2\" height=\"15.0\" fill=\"rgb(241,68,31)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"370.20\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1204:_try_convert_data (379 samples, 0.36%)</title><rect x=\"973.0\" y=\"228\" width=\"4.2\" height=\"15.0\" fill=\"rgb(240,174,48)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"975.96\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/base.py:510:find (182 samples, 0.17%)</title><rect x=\"951.3\" y=\"324\" width=\"2.0\" height=\"15.0\" fill=\"rgb(218,71,47)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"954.31\" y=\"334.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1282:_try_convert_to_date (299 samples, 0.28%)</title><rect x=\"365.1\" y=\"196\" width=\"3.3\" height=\"15.0\" fill=\"rgb(245,3,54)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"368.08\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method pandas._libs.json.ujson_loads&gt; (24,688 samples, 23.39%)</title><rect x=\"547.2\" y=\"180\" width=\"276.0\" height=\"15.0\" fill=\"rgb(244,85,52)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"550.23\" y=\"190.5\" >~:0:&lt;built-in method pandas._libs.js..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/astype.py:192:astype_array_safe (5,918 samples, 5.61%)</title><rect x=\"887.2\" y=\"292\" width=\"66.1\" height=\"15.0\" fill=\"rgb(226,137,20)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"890.19\" y=\"302.5\" >/home/m..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:506:nested_data_to_arrays (9,067 samples, 8.59%)</title><rect x=\"432.5\" y=\"196\" width=\"101.4\" height=\"15.0\" fill=\"rgb(232,51,14)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"435.55\" y=\"206.5\" >/home/marius..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:665:__init__ (13,135 samples, 12.44%)</title><rect x=\"400.4\" y=\"180\" width=\"146.8\" height=\"15.0\" fill=\"rgb(220,72,38)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"403.41\" y=\"190.5\" >/home/marius/anaco..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:1681:_getitem_axis (125 samples, 0.12%)</title><rect x=\"1177.4\" y=\"244\" width=\"1.4\" height=\"15.0\" fill=\"rgb(208,108,47)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1180.36\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/missing.py:184:_isna (117 samples, 0.11%)</title><rect x=\"1146.8\" y=\"340\" width=\"1.3\" height=\"15.0\" fill=\"rgb(242,29,4)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1149.76\" y=\"350.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/reshape/concat.py:695:new_axes (124 samples, 0.12%)</title><rect x=\"177.9\" y=\"164\" width=\"1.4\" height=\"15.0\" fill=\"rgb(232,83,25)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"180.90\" y=\"174.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2224:_merge_blocks (881 samples, 0.83%)</title><rect x=\"409.7\" y=\"276\" width=\"9.9\" height=\"15.0\" fill=\"rgb(242,62,33)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"412.72\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:1681:_getitem_axis (127 samples, 0.12%)</title><rect x=\"1137.7\" y=\"308\" width=\"1.5\" height=\"15.0\" fill=\"rgb(242,49,1)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1140.74\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;pandas._libs.lib.dicts_to_array&gt; (2,870 samples, 2.72%)</title><rect x=\"446.7\" y=\"244\" width=\"32.1\" height=\"15.0\" fill=\"rgb(206,43,19)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"449.69\" y=\"254.5\" >~:..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1022:_get_object_parser (56,621 samples, 53.64%)</title><rect x=\"344.3\" y=\"132\" width=\"632.9\" height=\"15.0\" fill=\"rgb(242,172,28)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"347.29\" y=\"142.5\" >/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1022:_get_o..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/_config/config.py:145:_get_option (122 samples, 0.12%)</title><rect x=\"1140.2\" y=\"292\" width=\"1.4\" height=\"15.0\" fill=\"rgb(233,171,25)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1143.21\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method builtins.max&gt; (112 samples, 0.11%)</title><rect x=\"1160.8\" y=\"308\" width=\"1.2\" height=\"15.0\" fill=\"rgb(239,32,45)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1163.77\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method pandas._libs.lib.ensure_string_array&gt; (4,514 samples, 4.28%)</title><rect x=\"890.0\" y=\"340\" width=\"50.5\" height=\"15.0\" fill=\"rgb(216,60,51)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"893.04\" y=\"350.5\" >~:0:&lt;..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/nanops.py:604:nansum (117 samples, 0.11%)</title><rect x=\"188.5\" y=\"212\" width=\"1.3\" height=\"15.0\" fill=\"rgb(217,181,54)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"191.53\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;pandas._libs.lib.dicts_to_array&gt; (737 samples, 0.70%)</title><rect x=\"852.6\" y=\"260\" width=\"8.2\" height=\"15.0\" fill=\"rgb(210,105,8)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"855.60\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/tools/datetimes.py:216:_maybe_cache (117 samples, 0.11%)</title><rect x=\"367.1\" y=\"228\" width=\"1.3\" height=\"15.0\" fill=\"rgb(223,228,27)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"370.11\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'close' of '_io.TextIOWrapper' objects&gt; (117 samples, 0.11%)</title><rect x=\"202.8\" y=\"196\" width=\"1.3\" height=\"15.0\" fill=\"rgb(228,112,31)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"205.79\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:1744:_consolidate_inplace (502 samples, 0.48%)</title><rect x=\"534.9\" y=\"228\" width=\"5.6\" height=\"15.0\" fill=\"rgb(254,214,5)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"537.87\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:789:truncate (1,298 samples, 1.23%)</title><rect x=\"1174.2\" y=\"164\" width=\"14.5\" height=\"15.0\" fill=\"rgb(209,228,48)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1177.23\" y=\"174.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:922:&lt;listcomp&gt; (239 samples, 0.23%)</title><rect x=\"849.9\" y=\"260\" width=\"2.7\" height=\"15.0\" fill=\"rgb(236,123,24)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"852.93\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/tools/datetimes.py:526:_to_datetime_with_unit (247 samples, 0.23%)</title><rect x=\"967.9\" y=\"276\" width=\"2.8\" height=\"15.0\" fill=\"rgb(252,83,34)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"970.93\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:1392:items (667 samples, 0.63%)</title><rect x=\"43.0\" y=\"132\" width=\"7.4\" height=\"15.0\" fill=\"rgb(206,86,17)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"45.95\" y=\"142.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/common.py:1587:pandas_dtype (365 samples, 0.35%)</title><rect x=\"949.3\" y=\"308\" width=\"4.0\" height=\"15.0\" fill=\"rgb(229,95,18)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"952.26\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/missing.py:380:notna (150 samples, 0.14%)</title><rect x=\"1146.4\" y=\"308\" width=\"1.7\" height=\"15.0\" fill=\"rgb(223,122,32)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1149.39\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/concat.py:94:concatenate_managers (235 samples, 0.22%)</title><rect x=\"1182.4\" y=\"228\" width=\"2.6\" height=\"15.0\" fill=\"rgb(219,99,11)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1185.38\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:1006:convert_object_array (164 samples, 0.16%)</title><rect x=\"532.1\" y=\"244\" width=\"1.8\" height=\"15.0\" fill=\"rgb(249,72,54)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"535.07\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/reshape/concat.py:618:get_result (779 samples, 0.74%)</title><rect x=\"1180.0\" y=\"212\" width=\"8.7\" height=\"15.0\" fill=\"rgb(217,93,14)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1183.03\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:816:__init__ (12,676 samples, 12.01%)</title><rect x=\"202.1\" y=\"116\" width=\"141.7\" height=\"15.0\" fill=\"rgb(220,142,36)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"205.07\" y=\"126.5\" >/home/marius/anaco..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:596:_homogenize (145 samples, 0.14%)</title><rect x=\"407.0\" y=\"228\" width=\"1.7\" height=\"15.0\" fill=\"rgb(235,101,49)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"410.04\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1172:parse (56,590 samples, 53.61%)</title><rect x=\"344.6\" y=\"148\" width=\"632.6\" height=\"15.0\" fill=\"rgb(223,209,19)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"347.63\" y=\"158.5\" >/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1172:parse</text>\n",
"</g>\n",
"<g >\n",
"<title>all (105,565 samples, 100%)</title><rect x=\"10.0\" y=\"36\" width=\"1180.0\" height=\"15.0\" fill=\"rgb(214,205,26)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"13.00\" y=\"46.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>&lt;frozen codecs&gt;:319:decode (2,921 samples, 2.77%)</title><rect x=\"298.9\" y=\"164\" width=\"32.7\" height=\"15.0\" fill=\"rgb(216,23,19)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"301.95\" y=\"174.5\" >&lt;f..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/string.py:40:_get_string_representation (5,210 samples, 4.94%)</title><rect x=\"1115.0\" y=\"180\" width=\"58.3\" height=\"15.0\" fill=\"rgb(218,45,3)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1118.02\" y=\"190.5\" >/home/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2137:_form_blocks (1,161 samples, 1.10%)</title><rect x=\"419.6\" y=\"244\" width=\"12.9\" height=\"15.0\" fill=\"rgb(233,109,34)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"422.57\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:1651:_getitem_tuple (305 samples, 0.29%)</title><rect x=\"1175.3\" y=\"212\" width=\"3.5\" height=\"15.0\" fill=\"rgb(218,54,29)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1178.35\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/common.py:121:close (131 samples, 0.12%)</title><rect x=\"202.6\" y=\"180\" width=\"1.5\" height=\"15.0\" fill=\"rgb(207,154,31)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"205.63\" y=\"190.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:1139:__getitem__ (1,092 samples, 1.03%)</title><rect x=\"1127.0\" y=\"260\" width=\"12.2\" height=\"15.0\" fill=\"rgb(221,96,49)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1129.96\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/generic.py:6368:astype (6,712 samples, 6.36%)</title><rect x=\"878.3\" y=\"228\" width=\"75.0\" height=\"15.0\" fill=\"rgb(239,162,14)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"881.31\" y=\"238.5\" >/home/ma..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/astype.py:56:_astype_nansafe (250 samples, 0.24%)</title><rect x=\"974.4\" y=\"340\" width=\"2.8\" height=\"15.0\" fill=\"rgb(208,47,34)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"977.40\" y=\"350.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;pandas._libs.lib.fast_unique_multiple_list_gen&gt; (4,722 samples, 4.47%)</title><rect x=\"478.8\" y=\"244\" width=\"52.8\" height=\"15.0\" fill=\"rgb(248,130,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"481.77\" y=\"254.5\" >~:0:&lt;..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:843:_get_strcols_without_index (4,287 samples, 4.06%)</title><rect x=\"1119.6\" y=\"228\" width=\"47.9\" height=\"15.0\" fill=\"rgb(207,164,27)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1122.58\" y=\"238.5\" >/hom..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2137:_form_blocks (155 samples, 0.15%)</title><rect x=\"876.1\" y=\"244\" width=\"1.7\" height=\"15.0\" fill=\"rgb(208,132,4)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"879.09\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:965:&lt;listcomp&gt; (3,827 samples, 3.63%)</title><rect x=\"1006.1\" y=\"148\" width=\"42.7\" height=\"15.0\" fill=\"rgb(237,69,19)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1009.07\" y=\"158.5\" >/hom..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:4402:_get_item_cache (483 samples, 0.46%)</title><rect x=\"834.6\" y=\"212\" width=\"5.4\" height=\"15.0\" fill=\"rgb(240,212,11)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"837.62\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2207:_consolidate (477 samples, 0.45%)</title><rect x=\"535.2\" y=\"244\" width=\"5.3\" height=\"15.0\" fill=\"rgb(230,215,42)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"538.15\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:611:get_strcols (4,538 samples, 4.30%)</title><rect x=\"1119.5\" y=\"212\" width=\"50.7\" height=\"15.0\" fill=\"rgb(232,102,53)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1122.51\" y=\"222.5\" >/home..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:1038:astype (316 samples, 0.30%)</title><rect x=\"953.3\" y=\"228\" width=\"3.6\" height=\"15.0\" fill=\"rgb(212,106,28)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"956.34\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/reshape/concat.py:695:new_axes (334 samples, 0.32%)</title><rect x=\"1185.0\" y=\"228\" width=\"3.7\" height=\"15.0\" fill=\"rgb(225,120,26)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1188.00\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:564:__init__ (1,385 samples, 1.31%)</title><rect x=\"1173.3\" y=\"148\" width=\"15.4\" height=\"15.0\" fill=\"rgb(206,51,41)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1176.26\" y=\"158.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:3776:_ixs (390 samples, 0.37%)</title><rect x=\"835.7\" y=\"228\" width=\"4.3\" height=\"15.0\" fill=\"rgb(226,102,35)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"838.66\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:423:dict_to_mgr (706 samples, 0.67%)</title><rect x=\"840.5\" y=\"212\" width=\"7.9\" height=\"15.0\" fill=\"rgb(213,21,35)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"843.48\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:405:astype (6,217 samples, 5.89%)</title><rect x=\"883.8\" y=\"244\" width=\"69.5\" height=\"15.0\" fill=\"rgb(245,222,40)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"886.85\" y=\"254.5\" >/home/m..</text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method builtins.exec&gt; (105,565 samples, 100.00%)</title><rect x=\"10.0\" y=\"52\" width=\"1180.0\" height=\"15.0\" fill=\"rgb(235,119,39)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"13.00\" y=\"62.5\" >~:0:&lt;built-in method builtins.exec&gt;</text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;pandas._libs.lib.fast_unique_multiple_list_gen&gt; (1,213 samples, 1.15%)</title><rect x=\"860.8\" y=\"260\" width=\"13.6\" height=\"15.0\" fill=\"rgb(250,211,0)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"863.84\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:991:iget (106 samples, 0.10%)</title><rect x=\"838.8\" y=\"244\" width=\"1.2\" height=\"15.0\" fill=\"rgb(207,62,44)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"841.83\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:891:_list_of_dict_to_arrays (2,251 samples, 2.13%)</title><rect x=\"849.2\" y=\"244\" width=\"25.2\" height=\"15.0\" fill=\"rgb(254,181,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"852.24\" y=\"254.5\" >/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:793:to_arrays (9,043 samples, 8.57%)</title><rect x=\"432.8\" y=\"212\" width=\"101.1\" height=\"15.0\" fill=\"rgb(240,136,21)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"435.82\" y=\"222.5\" >/home/marius..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/_config/config.py:271:__call__ (134 samples, 0.13%)</title><rect x=\"1140.1\" y=\"276\" width=\"1.5\" height=\"15.0\" fill=\"rgb(249,200,24)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1143.08\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:487:get_dataframe_repr_params (113 samples, 0.11%)</title><rect x=\"1188.7\" y=\"132\" width=\"1.3\" height=\"15.0\" fill=\"rgb(219,208,34)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1191.74\" y=\"142.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:1651:_getitem_tuple (870 samples, 0.82%)</title><rect x=\"1129.4\" y=\"276\" width=\"9.8\" height=\"15.0\" fill=\"rgb(238,129,27)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1132.44\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/tools/datetimes.py:216:_maybe_cache (485 samples, 0.46%)</title><rect x=\"962.3\" y=\"260\" width=\"5.4\" height=\"15.0\" fill=\"rgb(238,123,42)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"965.26\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/numpy/core/shape_base.py:223:vstack (113 samples, 0.11%)</title><rect x=\"539.2\" y=\"308\" width=\"1.3\" height=\"15.0\" fill=\"rgb(219,95,37)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"542.22\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:915:&lt;genexpr&gt; (796 samples, 0.75%)</title><rect x=\"865.5\" y=\"276\" width=\"8.9\" height=\"15.0\" fill=\"rgb(238,176,27)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"868.50\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'split' of 'str' objects&gt; (2,960 samples, 2.80%)</title><rect x=\"1078.4\" y=\"132\" width=\"33.1\" height=\"15.0\" fill=\"rgb(237,132,20)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1081.38\" y=\"142.5\" >~:..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1185:_convert_axes (2,110 samples, 2.00%)</title><rect x=\"344.8\" y=\"164\" width=\"23.6\" height=\"15.0\" fill=\"rgb(226,3,47)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"347.84\" y=\"174.5\" >/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:956:_get_formatted_index (245 samples, 0.23%)</title><rect x=\"1167.5\" y=\"228\" width=\"2.7\" height=\"15.0\" fill=\"rgb(206,48,16)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1170.50\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:890:format_col (3,355 samples, 3.18%)</title><rect x=\"1124.5\" y=\"244\" width=\"37.5\" height=\"15.0\" fill=\"rgb(253,136,4)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1127.52\" y=\"254.5\" >/ho..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1396:_process_converter (576 samples, 0.55%)</title><rect x=\"970.8\" y=\"196\" width=\"6.4\" height=\"15.0\" fill=\"rgb(229,150,7)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"973.76\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>&lt;__array_function__ internals&gt;:177:concatenate (109 samples, 0.10%)</title><rect x=\"539.3\" y=\"324\" width=\"1.2\" height=\"15.0\" fill=\"rgb(214,188,32)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"542.26\" y=\"334.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method _codecs.utf_8_decode&gt; (2,892 samples, 2.74%)</title><rect x=\"299.3\" y=\"180\" width=\"32.3\" height=\"15.0\" fill=\"rgb(238,32,37)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"302.27\" y=\"190.5\" >~:..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2207:_consolidate (918 samples, 0.87%)</title><rect x=\"409.3\" y=\"260\" width=\"10.3\" height=\"15.0\" fill=\"rgb(252,125,0)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"412.31\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/reshape/concat.py:157:concat (893 samples, 0.85%)</title><rect x=\"1178.8\" y=\"196\" width=\"9.9\" height=\"15.0\" fill=\"rgb(247,143,1)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1181.75\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1282:_try_convert_to_date (1,236 samples, 1.17%)</title><rect x=\"956.9\" y=\"228\" width=\"13.8\" height=\"15.0\" fill=\"rgb(242,156,47)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"959.87\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/series.py:3159:_append (365 samples, 0.35%)</title><rect x=\"175.2\" y=\"116\" width=\"4.1\" height=\"15.0\" fill=\"rgb(218,210,15)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"178.21\" y=\"126.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:4402:_get_item_cache (583 samples, 0.55%)</title><rect x=\"43.9\" y=\"148\" width=\"6.5\" height=\"15.0\" fill=\"rgb(254,37,27)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"46.89\" y=\"158.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/tools/datetimes.py:721:to_datetime (823 samples, 0.78%)</title><rect x=\"961.5\" y=\"244\" width=\"9.2\" height=\"15.0\" fill=\"rgb(239,79,53)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"964.49\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/astype.py:158:astype_array (1,337 samples, 1.27%)</title><rect x=\"350.1\" y=\"276\" width=\"15.0\" height=\"15.0\" fill=\"rgb(233,101,31)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"353.13\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2207:_consolidate (123 samples, 0.12%)</title><rect x=\"874.7\" y=\"260\" width=\"1.4\" height=\"15.0\" fill=\"rgb(220,19,6)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"877.71\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:5422:append (261 samples, 0.25%)</title><rect x=\"1185.8\" y=\"292\" width=\"2.9\" height=\"15.0\" fill=\"rgb(238,126,10)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1188.82\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2194:_stack_arrays (1,054 samples, 1.00%)</title><rect x=\"420.8\" y=\"260\" width=\"11.7\" height=\"15.0\" fill=\"rgb(246,142,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"423.77\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1204:_try_convert_data (8,299 samples, 7.86%)</title><rect x=\"877.9\" y=\"212\" width=\"92.8\" height=\"15.0\" fill=\"rgb(252,209,6)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"880.92\" y=\"222.5\" >/home/mariu..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/series.py:6195:sum (181 samples, 0.17%)</title><rect x=\"187.8\" y=\"100\" width=\"2.0\" height=\"15.0\" fill=\"rgb(239,196,42)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"190.82\" y=\"110.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:931:_validate_tuple_indexer (188 samples, 0.18%)</title><rect x=\"1135.4\" y=\"292\" width=\"2.1\" height=\"15.0\" fill=\"rgb(244,2,48)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1138.44\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/string.py:28:to_string (5,230 samples, 4.95%)</title><rect x=\"1114.8\" y=\"164\" width=\"58.5\" height=\"15.0\" fill=\"rgb(229,12,32)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1117.79\" y=\"174.5\" >/home/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/generic.py:12070:sum (178 samples, 0.17%)</title><rect x=\"187.9\" y=\"116\" width=\"1.9\" height=\"15.0\" fill=\"rgb(210,141,42)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"190.85\" y=\"126.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:928:_finalize_columns_and_data (210 samples, 0.20%)</title><rect x=\"531.6\" y=\"228\" width=\"2.3\" height=\"15.0\" fill=\"rgb(249,209,45)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"534.55\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:405:astype (283 samples, 0.27%)</title><rect x=\"974.0\" y=\"260\" width=\"3.2\" height=\"15.0\" fill=\"rgb(209,13,25)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"977.03\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;pandas._libs.tslib.array_with_unit_to_datetime&gt; (223 samples, 0.21%)</title><rect x=\"968.2\" y=\"292\" width=\"2.5\" height=\"15.0\" fill=\"rgb(243,113,6)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"971.20\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:1418:_format_with_header (152 samples, 0.14%)</title><rect x=\"1165.8\" y=\"276\" width=\"1.7\" height=\"15.0\" fill=\"rgb(221,10,33)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1168.80\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/generic.py:6368:astype (1,626 samples, 1.54%)</title><rect x=\"346.9\" y=\"196\" width=\"18.2\" height=\"15.0\" fill=\"rgb(247,63,16)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"349.90\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:3561:&lt;listcomp&gt; (11,854 samples, 11.23%)</title><rect x=\"42.7\" y=\"116\" width=\"132.5\" height=\"15.0\" fill=\"rgb(212,122,37)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"45.71\" y=\"126.5\" >/home/marius/ana..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:1964:array_values (165 samples, 0.16%)</title><rect x=\"55.3\" y=\"180\" width=\"1.8\" height=\"15.0\" fill=\"rgb(247,45,49)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"58.29\" y=\"190.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:5519:equals (106 samples, 0.10%)</title><rect x=\"1181.2\" y=\"228\" width=\"1.2\" height=\"15.0\" fill=\"rgb(235,46,10)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1184.19\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/printing.py:28:adjoin (195 samples, 0.18%)</title><rect x=\"1117.2\" y=\"228\" width=\"2.1\" height=\"15.0\" fill=\"rgb(240,44,27)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1120.15\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1396:_process_converter (12,381 samples, 11.73%)</title><rect x=\"832.3\" y=\"180\" width=\"138.4\" height=\"15.0\" fill=\"rgb(212,212,42)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"835.29\" y=\"190.5\" >/home/marius/anac..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:965:&lt;genexpr&gt; (2,854 samples, 2.70%)</title><rect x=\"1016.9\" y=\"164\" width=\"31.9\" height=\"15.0\" fill=\"rgb(205,66,21)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1019.94\" y=\"174.5\" >/h..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:1355:_format (590 samples, 0.56%)</title><rect x=\"1148.1\" y=\"308\" width=\"6.6\" height=\"15.0\" fill=\"rgb(209,80,32)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1151.07\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:1028:convert (157 samples, 0.15%)</title><rect x=\"532.1\" y=\"276\" width=\"1.8\" height=\"15.0\" fill=\"rgb(210,81,18)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"535.14\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/reshape/concat.py:618:get_result (290 samples, 0.27%)</title><rect x=\"176.0\" y=\"148\" width=\"3.3\" height=\"15.0\" fill=\"rgb(240,223,33)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"179.05\" y=\"158.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/reshape/concat.py:698:&lt;listcomp&gt; (326 samples, 0.31%)</title><rect x=\"1185.1\" y=\"244\" width=\"3.6\" height=\"15.0\" fill=\"rgb(240,95,23)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1188.09\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method numpy.core._multiarray_umath.implement_array_function&gt; (146 samples, 0.14%)</title><rect x=\"538.9\" y=\"292\" width=\"1.6\" height=\"15.0\" fill=\"rgb(241,161,41)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"541.85\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:96:arrays_to_mgr (1,193 samples, 1.13%)</title><rect x=\"533.9\" y=\"196\" width=\"13.3\" height=\"15.0\" fill=\"rgb(254,70,17)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"536.90\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:956:_get_formatted_index (210 samples, 0.20%)</title><rect x=\"1170.9\" y=\"228\" width=\"2.4\" height=\"15.0\" fill=\"rgb(205,147,45)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1173.91\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:960:_combine_lines (9,052 samples, 8.57%)</title><rect x=\"977.2\" y=\"132\" width=\"101.2\" height=\"15.0\" fill=\"rgb(210,184,54)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"980.19\" y=\"142.5\" >/home/marius..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/series.py:371:__init__ (763 samples, 0.72%)</title><rect x=\"179.3\" y=\"116\" width=\"8.5\" height=\"15.0\" fill=\"rgb(219,213,18)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"182.29\" y=\"126.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2137:_form_blocks (299 samples, 0.28%)</title><rect x=\"845.0\" y=\"260\" width=\"3.4\" height=\"15.0\" fill=\"rgb(243,208,11)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"848.03\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:1217:format_array (2,045 samples, 1.94%)</title><rect x=\"1139.2\" y=\"260\" width=\"22.8\" height=\"15.0\" fill=\"rgb(240,148,16)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1142.16\" y=\"270.5\" >/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:1418:_format_with_header (149 samples, 0.14%)</title><rect x=\"1168.6\" y=\"260\" width=\"1.6\" height=\"15.0\" fill=\"rgb(240,126,10)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1171.57\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:1536:_validate_key (139 samples, 0.13%)</title><rect x=\"1136.0\" y=\"308\" width=\"1.5\" height=\"15.0\" fill=\"rgb(221,29,47)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1138.99\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/astype.py:192:astype_array_safe (270 samples, 0.26%)</title><rect x=\"974.2\" y=\"308\" width=\"3.0\" height=\"15.0\" fill=\"rgb(225,111,26)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"977.18\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/nanops.py:389:new_func (126 samples, 0.12%)</title><rect x=\"188.4\" y=\"180\" width=\"1.4\" height=\"15.0\" fill=\"rgb(247,69,1)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"191.43\" y=\"190.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1429:&lt;lambda&gt; (379 samples, 0.36%)</title><rect x=\"973.0\" y=\"212\" width=\"4.2\" height=\"15.0\" fill=\"rgb(254,114,21)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"975.96\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'keys' of 'dict' objects&gt; (378 samples, 0.36%)</title><rect x=\"527.3\" y=\"276\" width=\"4.3\" height=\"15.0\" fill=\"rgb(230,80,0)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"530.33\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/series.py:5223:memory_usage (11,165 samples, 10.58%)</title><rect x=\"50.4\" y=\"132\" width=\"124.8\" height=\"15.0\" fill=\"rgb(221,136,39)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"53.41\" y=\"142.5\" >/home/marius/an..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/blocks.py:2241:array_values (135 samples, 0.13%)</title><rect x=\"55.6\" y=\"196\" width=\"1.5\" height=\"15.0\" fill=\"rgb(236,75,25)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"58.63\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2194:_stack_arrays (141 samples, 0.13%)</title><rect x=\"876.2\" y=\"260\" width=\"1.6\" height=\"15.0\" fill=\"rgb(209,149,16)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"879.25\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'read' of '_io.TextIOWrapper' objects&gt; (11,407 samples, 10.81%)</title><rect x=\"204.1\" y=\"148\" width=\"127.5\" height=\"15.0\" fill=\"rgb(239,87,0)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"207.09\" y=\"158.5\" >~:0:&lt;method 'rea..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:96:arrays_to_mgr (306 samples, 0.29%)</title><rect x=\"874.4\" y=\"212\" width=\"3.4\" height=\"15.0\" fill=\"rgb(247,101,8)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"877.40\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:1418:_format_with_header (129 samples, 0.12%)</title><rect x=\"1171.8\" y=\"260\" width=\"1.5\" height=\"15.0\" fill=\"rgb(252,93,8)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1174.81\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2224:_merge_blocks (118 samples, 0.11%)</title><rect x=\"874.8\" y=\"276\" width=\"1.3\" height=\"15.0\" fill=\"rgb(236,211,54)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"877.77\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:434:adjoin (205 samples, 0.19%)</title><rect x=\"1117.0\" y=\"212\" width=\"2.3\" height=\"15.0\" fill=\"rgb(251,145,0)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1120.04\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'join' of 'str' objects&gt; (2,642 samples, 2.50%)</title><rect x=\"1048.8\" y=\"148\" width=\"29.6\" height=\"15.0\" fill=\"rgb(223,77,40)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1051.84\" y=\"158.5\" >~:..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2207:_consolidate (236 samples, 0.22%)</title><rect x=\"842.4\" y=\"276\" width=\"2.6\" height=\"15.0\" fill=\"rgb(208,48,11)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"845.39\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:1681:_getitem_axis (357 samples, 0.34%)</title><rect x=\"1131.4\" y=\"308\" width=\"4.0\" height=\"15.0\" fill=\"rgb(205,107,50)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1134.45\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/astype.py:192:astype_array_safe (1,434 samples, 1.36%)</title><rect x=\"349.0\" y=\"260\" width=\"16.1\" height=\"15.0\" fill=\"rgb(247,72,36)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"352.05\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:891:_list_of_dict_to_arrays (8,762 samples, 8.30%)</title><rect x=\"433.6\" y=\"228\" width=\"98.0\" height=\"15.0\" fill=\"rgb(248,173,26)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"436.61\" y=\"238.5\" >/home/mariu..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:922:&lt;listcomp&gt; (930 samples, 0.88%)</title><rect x=\"436.3\" y=\"244\" width=\"10.4\" height=\"15.0\" fill=\"rgb(248,83,21)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"439.29\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/reshape/concat.py:157:concat (347 samples, 0.33%)</title><rect x=\"175.4\" y=\"132\" width=\"3.9\" height=\"15.0\" fill=\"rgb(225,53,12)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"178.41\" y=\"142.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method numpy.core._multiarray_umath.implement_array_function&gt; (108 samples, 0.10%)</title><rect x=\"539.3\" y=\"340\" width=\"1.2\" height=\"15.0\" fill=\"rgb(215,168,18)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"542.28\" y=\"350.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:825:_truncate_vertically (1,285 samples, 1.22%)</title><rect x=\"1174.4\" y=\"180\" width=\"14.3\" height=\"15.0\" fill=\"rgb(232,1,8)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1177.37\" y=\"190.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/ipykernel/iostream.py:610:write (126 samples, 0.12%)</title><rect x=\"1111.6\" y=\"116\" width=\"1.5\" height=\"15.0\" fill=\"rgb(227,5,10)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1114.64\" y=\"126.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:1077:to_string (5,270 samples, 4.99%)</title><rect x=\"1114.3\" y=\"148\" width=\"59.0\" height=\"15.0\" fill=\"rgb(212,48,49)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1117.35\" y=\"158.5\" >/home/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/base.py:1135:_memory_usage (11,150 samples, 10.56%)</title><rect x=\"50.6\" y=\"148\" width=\"124.6\" height=\"15.0\" fill=\"rgb(235,182,36)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"53.58\" y=\"158.5\" >/home/marius/an..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1204:_try_convert_data (2,029 samples, 1.92%)</title><rect x=\"345.7\" y=\"180\" width=\"22.7\" height=\"15.0\" fill=\"rgb(243,164,17)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"348.74\" y=\"190.5\" >/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1429:&lt;lambda&gt; (8,308 samples, 7.87%)</title><rect x=\"877.8\" y=\"196\" width=\"92.9\" height=\"15.0\" fill=\"rgb(248,202,44)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"880.82\" y=\"206.5\" >/home/mariu..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:3776:_ixs (196 samples, 0.19%)</title><rect x=\"1133.2\" y=\"324\" width=\"2.2\" height=\"15.0\" fill=\"rgb(213,103,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1136.25\" y=\"334.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:96:arrays_to_mgr (2,506 samples, 2.37%)</title><rect x=\"404.5\" y=\"212\" width=\"28.0\" height=\"15.0\" fill=\"rgb(235,120,13)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"407.54\" y=\"222.5\" >/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:308:apply (282 samples, 0.27%)</title><rect x=\"974.0\" y=\"276\" width=\"3.2\" height=\"15.0\" fill=\"rgb(230,127,35)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"977.04\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1360:_parse (40,685 samples, 38.54%)</title><rect x=\"368.4\" y=\"164\" width=\"454.8\" height=\"15.0\" fill=\"rgb(224,215,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"371.42\" y=\"174.5\" >/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/base.py:510:find (249 samples, 0.24%)</title><rect x=\"881.1\" y=\"260\" width=\"2.7\" height=\"15.0\" fill=\"rgb(246,197,28)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"884.06\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/common.py:1587:pandas_dtype (197 samples, 0.19%)</title><rect x=\"954.7\" y=\"244\" width=\"2.2\" height=\"15.0\" fill=\"rgb(227,123,12)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"957.67\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1105:__exit__ (142 samples, 0.13%)</title><rect x=\"202.5\" y=\"148\" width=\"1.6\" height=\"15.0\" fill=\"rgb(207,225,18)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"205.51\" y=\"158.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:915:_get_formatted_column_labels (490 samples, 0.46%)</title><rect x=\"1162.0\" y=\"244\" width=\"5.5\" height=\"15.0\" fill=\"rgb(218,164,17)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1165.02\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:405:astype (1,506 samples, 1.43%)</title><rect x=\"348.2\" y=\"212\" width=\"16.9\" height=\"15.0\" fill=\"rgb(205,147,20)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"351.24\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/nanops.py:455:newfunc (121 samples, 0.11%)</title><rect x=\"188.5\" y=\"196\" width=\"1.3\" height=\"15.0\" fill=\"rgb(225,181,35)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"191.49\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/printing.py:162:pprint_thing (354 samples, 0.34%)</title><rect x=\"1150.7\" y=\"324\" width=\"4.0\" height=\"15.0\" fill=\"rgb(249,213,40)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1153.71\" y=\"334.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>&lt;__array_function__ internals&gt;:177:concatenate (209 samples, 0.20%)</title><rect x=\"417.2\" y=\"340\" width=\"2.4\" height=\"15.0\" fill=\"rgb(207,86,2)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"420.23\" y=\"350.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:912:_get_data_from_filepath (1,088 samples, 1.03%)</title><rect x=\"331.6\" y=\"132\" width=\"12.2\" height=\"15.0\" fill=\"rgb(216,122,12)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"334.60\" y=\"142.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:665:__init__ (154 samples, 0.15%)</title><rect x=\"971.2\" y=\"212\" width=\"1.8\" height=\"15.0\" fill=\"rgb(223,132,28)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"974.24\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2233:&lt;listcomp&gt; (138 samples, 0.13%)</title><rect x=\"414.8\" y=\"292\" width=\"1.6\" height=\"15.0\" fill=\"rgb(227,106,4)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"417.81\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:3471:memory_usage (13,034 samples, 12.35%)</title><rect x=\"42.1\" y=\"100\" width=\"145.7\" height=\"15.0\" fill=\"rgb(242,30,24)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"45.13\" y=\"110.5\" >/home/marius/anaco..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:665:__init__ (3,382 samples, 3.20%)</title><rect x=\"840.0\" y=\"196\" width=\"37.8\" height=\"15.0\" fill=\"rgb(238,67,21)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"843.02\" y=\"206.5\" >/ho..</text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'strip' of 'str' objects&gt; (1,140 samples, 1.08%)</title><rect x=\"1036.1\" y=\"180\" width=\"12.7\" height=\"15.0\" fill=\"rgb(252,117,52)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1039.10\" y=\"190.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:308:apply (1,499 samples, 1.42%)</title><rect x=\"348.3\" y=\"228\" width=\"16.8\" height=\"15.0\" fill=\"rgb(217,152,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"351.32\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:96:arrays_to_mgr (645 samples, 0.61%)</title><rect x=\"841.2\" y=\"228\" width=\"7.2\" height=\"15.0\" fill=\"rgb(248,129,27)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"844.16\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:478:__new__ (176 samples, 0.17%)</title><rect x=\"434.3\" y=\"260\" width=\"2.0\" height=\"15.0\" fill=\"rgb(225,89,19)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"437.33\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/astype.py:56:_astype_nansafe (1,326 samples, 1.26%)</title><rect x=\"350.3\" y=\"292\" width=\"14.8\" height=\"15.0\" fill=\"rgb(248,160,22)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"353.26\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:478:__new__ (128 samples, 0.12%)</title><rect x=\"403.1\" y=\"212\" width=\"1.4\" height=\"15.0\" fill=\"rgb(230,49,24)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"406.11\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:3776:_ixs (471 samples, 0.45%)</title><rect x=\"45.1\" y=\"164\" width=\"5.3\" height=\"15.0\" fill=\"rgb(215,17,11)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"48.14\" y=\"174.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:506:nested_data_to_arrays (106 samples, 0.10%)</title><rect x=\"971.8\" y=\"228\" width=\"1.2\" height=\"15.0\" fill=\"rgb(224,19,19)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"974.77\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/string.py:34:_get_strcols (4,824 samples, 4.57%)</title><rect x=\"1119.3\" y=\"196\" width=\"54.0\" height=\"15.0\" fill=\"rgb(242,36,46)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1122.33\" y=\"206.5\" >/home..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/series.py:371:__init__ (451 samples, 0.43%)</title><rect x=\"962.6\" y=\"276\" width=\"5.1\" height=\"15.0\" fill=\"rgb(237,7,47)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"965.64\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/missing.py:101:isna (121 samples, 0.11%)</title><rect x=\"1146.7\" y=\"324\" width=\"1.4\" height=\"15.0\" fill=\"rgb(239,86,16)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1149.72\" y=\"334.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:1396:format (130 samples, 0.12%)</title><rect x=\"1171.8\" y=\"244\" width=\"1.5\" height=\"15.0\" fill=\"rgb(247,191,42)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1174.80\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method pandas._libs.lib.ensure_string_array&gt; (1,094 samples, 1.04%)</title><rect x=\"350.7\" y=\"308\" width=\"12.3\" height=\"15.0\" fill=\"rgb(254,8,40)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"353.73\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/string.py:119:_join_multiline (363 samples, 0.34%)</title><rect x=\"1115.3\" y=\"196\" width=\"4.0\" height=\"15.0\" fill=\"rgb(248,206,19)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1118.28\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/series.py:791:array (175 samples, 0.17%)</title><rect x=\"55.2\" y=\"164\" width=\"1.9\" height=\"15.0\" fill=\"rgb(235,76,44)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"58.18\" y=\"174.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:1332:_format_strings (1,229 samples, 1.16%)</title><rect x=\"1142.5\" y=\"292\" width=\"13.8\" height=\"15.0\" fill=\"rgb(238,87,34)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1145.53\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/range.py:902:_concat (141 samples, 0.13%)</title><rect x=\"1187.2\" y=\"308\" width=\"1.5\" height=\"15.0\" fill=\"rgb(239,98,30)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1190.16\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2068:create_block_manager_from_column_arrays (1,111 samples, 1.05%)</title><rect x=\"534.8\" y=\"212\" width=\"12.4\" height=\"15.0\" fill=\"rgb(215,215,39)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"537.82\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:915:&lt;genexpr&gt; (3,098 samples, 2.93%)</title><rect x=\"496.9\" y=\"260\" width=\"34.7\" height=\"15.0\" fill=\"rgb(248,55,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"499.92\" y=\"270.5\" >/h..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/blocks.py:588:astype (1,476 samples, 1.40%)</title><rect x=\"348.6\" y=\"244\" width=\"16.5\" height=\"15.0\" fill=\"rgb(247,206,13)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"351.58\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2224:_merge_blocks (458 samples, 0.43%)</title><rect x=\"535.4\" y=\"260\" width=\"5.1\" height=\"15.0\" fill=\"rgb(205,142,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"538.36\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:506:nested_data_to_arrays (2,329 samples, 2.21%)</title><rect x=\"848.4\" y=\"212\" width=\"26.0\" height=\"15.0\" fill=\"rgb(207,83,20)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"851.37\" y=\"222.5\" >/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/blocks.py:588:astype (6,092 samples, 5.77%)</title><rect x=\"885.2\" y=\"276\" width=\"68.1\" height=\"15.0\" fill=\"rgb(229,38,47)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"888.24\" y=\"286.5\" >/home/m..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1049:close (137 samples, 0.13%)</title><rect x=\"202.6\" y=\"164\" width=\"1.5\" height=\"15.0\" fill=\"rgb(228,0,46)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"205.56\" y=\"174.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/construction.py:519:sanitize_array (181 samples, 0.17%)</title><rect x=\"185.8\" y=\"132\" width=\"2.0\" height=\"15.0\" fill=\"rgb(252,48,33)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"188.80\" y=\"142.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:978:_getitem_tuple_same_dim (145 samples, 0.14%)</title><rect x=\"1137.5\" y=\"292\" width=\"1.7\" height=\"15.0\" fill=\"rgb(241,72,1)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1140.54\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method pandas._libs.lib.ensure_string_array&gt; (206 samples, 0.20%)</title><rect x=\"974.9\" y=\"356\" width=\"2.3\" height=\"15.0\" fill=\"rgb(254,22,6)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"977.89\" y=\"366.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:1392:items (557 samples, 0.53%)</title><rect x=\"833.8\" y=\"196\" width=\"6.2\" height=\"15.0\" fill=\"rgb(214,56,27)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"836.79\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>&lt;__array_function__ internals&gt;:177:vstack (150 samples, 0.14%)</title><rect x=\"538.8\" y=\"276\" width=\"1.7\" height=\"15.0\" fill=\"rgb(230,74,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"541.81\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;pandas._libs.lib.map_infer&gt; (143 samples, 0.14%)</title><rect x=\"1154.7\" y=\"308\" width=\"1.6\" height=\"15.0\" fill=\"rgb(233,112,6)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1157.67\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/printing.py:193:as_escaped_string (150 samples, 0.14%)</title><rect x=\"1153.0\" y=\"340\" width=\"1.7\" height=\"15.0\" fill=\"rgb(208,121,53)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1155.99\" y=\"350.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:1744:_consolidate_inplace (966 samples, 0.92%)</title><rect x=\"408.8\" y=\"244\" width=\"10.8\" height=\"15.0\" fill=\"rgb(254,4,42)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"411.77\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method io.open&gt; (864 samples, 0.82%)</title><rect x=\"334.1\" y=\"164\" width=\"9.7\" height=\"15.0\" fill=\"rgb(240,54,51)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"337.10\" y=\"174.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:1229:to_string (6,733 samples, 6.38%)</title><rect x=\"1113.5\" y=\"132\" width=\"75.2\" height=\"15.0\" fill=\"rgb(205,178,15)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1116.48\" y=\"142.5\" >/home/ma..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/astype.py:158:astype_array (5,516 samples, 5.23%)</title><rect x=\"887.6\" y=\"308\" width=\"61.7\" height=\"15.0\" fill=\"rgb(208,215,23)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"890.60\" y=\"318.5\" >/home/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/series.py:6094:_reduce (158 samples, 0.15%)</title><rect x=\"188.1\" y=\"148\" width=\"1.7\" height=\"15.0\" fill=\"rgb(218,119,4)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"191.08\" y=\"158.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:4384:_box_col_values (195 samples, 0.18%)</title><rect x=\"836.7\" y=\"244\" width=\"2.1\" height=\"15.0\" fill=\"rgb(254,59,37)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"839.65\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:1909:_make_fixed_width (246 samples, 0.23%)</title><rect x=\"1121.8\" y=\"244\" width=\"2.7\" height=\"15.0\" fill=\"rgb(253,225,40)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1124.77\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:1006:_getitem_lowerdim (493 samples, 0.47%)</title><rect x=\"1129.9\" y=\"292\" width=\"5.5\" height=\"15.0\" fill=\"rgb(207,139,0)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1132.93\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method builtins.print&gt; (7,026 samples, 6.66%)</title><rect x=\"1111.5\" y=\"100\" width=\"78.5\" height=\"15.0\" fill=\"rgb(232,194,18)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1114.46\" y=\"110.5\" >~:0:&lt;buil..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/common.py:1268:is_extension_array_dtype (271 samples, 0.26%)</title><rect x=\"880.8\" y=\"244\" width=\"3.0\" height=\"15.0\" fill=\"rgb(248,57,32)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"883.82\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'astype' of 'numpy.ndarray' objects&gt; (190 samples, 0.18%)</title><rect x=\"363.0\" y=\"308\" width=\"2.1\" height=\"15.0\" fill=\"rgb(247,134,47)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"365.95\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;pandas._libs.lib.memory_usage_of_objects&gt; (10,563 samples, 10.01%)</title><rect x=\"57.1\" y=\"164\" width=\"118.1\" height=\"15.0\" fill=\"rgb(250,56,42)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"60.14\" y=\"174.5\" >~:0:&lt;pandas._l..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:1909:_make_fixed_width (515 samples, 0.49%)</title><rect x=\"1156.3\" y=\"292\" width=\"5.7\" height=\"15.0\" fill=\"rgb(213,105,0)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1159.26\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/series.py:371:__init__ (150 samples, 0.14%)</title><rect x=\"1164.1\" y=\"276\" width=\"1.7\" height=\"15.0\" fill=\"rgb(214,65,41)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1167.09\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;method 'astype' of 'numpy.ndarray' objects&gt; (784 samples, 0.74%)</title><rect x=\"940.5\" y=\"340\" width=\"8.8\" height=\"15.0\" fill=\"rgb(247,26,47)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"943.50\" y=\"350.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2194:_stack_arrays (548 samples, 0.52%)</title><rect x=\"541.1\" y=\"244\" width=\"6.1\" height=\"15.0\" fill=\"rgb(234,134,21)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"544.11\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2137:_form_blocks (604 samples, 0.57%)</title><rect x=\"540.5\" y=\"228\" width=\"6.7\" height=\"15.0\" fill=\"rgb(214,52,14)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"543.48\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:793:to_arrays (2,323 samples, 2.20%)</title><rect x=\"848.4\" y=\"228\" width=\"26.0\" height=\"15.0\" fill=\"rgb(233,208,36)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"851.44\" y=\"238.5\" >/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:1938:&lt;listcomp&gt; (122 samples, 0.12%)</title><rect x=\"1159.4\" y=\"308\" width=\"1.4\" height=\"15.0\" fill=\"rgb(225,154,46)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1162.41\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/blocks.py:588:astype (278 samples, 0.26%)</title><rect x=\"974.1\" y=\"292\" width=\"3.1\" height=\"15.0\" fill=\"rgb(216,120,8)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"977.09\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/reshape/concat.py:773:_concat_indexes (265 samples, 0.25%)</title><rect x=\"1185.8\" y=\"276\" width=\"2.9\" height=\"15.0\" fill=\"rgb(226,173,37)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1188.77\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:991:iget (128 samples, 0.12%)</title><rect x=\"49.0\" y=\"180\" width=\"1.4\" height=\"15.0\" fill=\"rgb(228,164,34)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"51.98\" y=\"190.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/arrays/numpy_.py:98:__init__ (114 samples, 0.11%)</title><rect x=\"55.9\" y=\"212\" width=\"1.2\" height=\"15.0\" fill=\"rgb(219,167,53)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"58.86\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/tools/datetimes.py:721:to_datetime (199 samples, 0.19%)</title><rect x=\"366.2\" y=\"212\" width=\"2.2\" height=\"15.0\" fill=\"rgb(210,110,36)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"369.20\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method numpy.core._multiarray_umath.implement_array_function&gt; (280 samples, 0.27%)</title><rect x=\"416.4\" y=\"308\" width=\"3.2\" height=\"15.0\" fill=\"rgb(227,99,36)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"419.44\" y=\"318.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:308:apply (6,187 samples, 5.86%)</title><rect x=\"884.2\" y=\"260\" width=\"69.1\" height=\"15.0\" fill=\"rgb(252,48,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"887.18\" y=\"270.5\" >/home/m..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:1396:format (151 samples, 0.14%)</title><rect x=\"1168.5\" y=\"244\" width=\"1.7\" height=\"15.0\" fill=\"rgb(245,97,41)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1171.55\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:1006:_getitem_lowerdim (173 samples, 0.16%)</title><rect x=\"1176.8\" y=\"228\" width=\"2.0\" height=\"15.0\" fill=\"rgb(248,82,22)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1179.82\" y=\"238.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/generic.py:12031:_min_count_stat_function (173 samples, 0.16%)</title><rect x=\"187.9\" y=\"132\" width=\"1.9\" height=\"15.0\" fill=\"rgb(208,93,48)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"190.91\" y=\"142.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/numpy/core/shape_base.py:223:vstack (216 samples, 0.20%)</title><rect x=\"417.2\" y=\"324\" width=\"2.4\" height=\"15.0\" fill=\"rgb(222,6,50)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"420.16\" y=\"334.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>&lt;__array_function__ internals&gt;:177:vstack (288 samples, 0.27%)</title><rect x=\"416.4\" y=\"292\" width=\"3.2\" height=\"15.0\" fill=\"rgb(252,162,42)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"419.35\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:1123:__repr__ (6,884 samples, 6.52%)</title><rect x=\"1113.1\" y=\"116\" width=\"76.9\" height=\"15.0\" fill=\"rgb(243,137,37)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1116.05\" y=\"126.5\" >/home/ma..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/frame.py:4384:_box_col_values (235 samples, 0.22%)</title><rect x=\"46.4\" y=\"180\" width=\"2.6\" height=\"15.0\" fill=\"rgb(248,122,39)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"49.35\" y=\"190.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexes/base.py:1396:format (155 samples, 0.15%)</title><rect x=\"1165.8\" y=\"260\" width=\"1.7\" height=\"15.0\" fill=\"rgb(208,92,0)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1168.77\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:1744:_consolidate_inplace (129 samples, 0.12%)</title><rect x=\"874.6\" y=\"244\" width=\"1.5\" height=\"15.0\" fill=\"rgb(206,66,25)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"877.65\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:1068:&lt;listcomp&gt; (161 samples, 0.15%)</title><rect x=\"532.1\" y=\"260\" width=\"1.8\" height=\"15.0\" fill=\"rgb(247,176,8)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"535.10\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:980:read (68,680 samples, 65.06%)</title><rect x=\"343.8\" y=\"116\" width=\"767.7\" height=\"15.0\" fill=\"rgb(233,42,25)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"346.76\" y=\"126.5\" >/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:980:read</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:423:dict_to_mgr (2,742 samples, 2.60%)</title><rect x=\"401.9\" y=\"196\" width=\"30.6\" height=\"15.0\" fill=\"rgb(217,141,43)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"404.90\" y=\"206.5\" >/h..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/string.py:67:_insert_dot_separators (270 samples, 0.26%)</title><rect x=\"1170.2\" y=\"212\" width=\"3.1\" height=\"15.0\" fill=\"rgb(217,34,9)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1173.24\" y=\"222.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/formats/format.py:1328:get_result (1,829 samples, 1.73%)</title><rect x=\"1141.6\" y=\"276\" width=\"20.4\" height=\"15.0\" fill=\"rgb(214,103,2)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1144.58\" y=\"286.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/common.py:652:get_handle (988 samples, 0.94%)</title><rect x=\"332.7\" y=\"148\" width=\"11.1\" height=\"15.0\" fill=\"rgb(217,95,39)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"335.72\" y=\"158.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:896:_preprocess_data (11,571 samples, 10.96%)</title><rect x=\"202.3\" y=\"132\" width=\"129.3\" height=\"15.0\" fill=\"rgb(220,182,39)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"205.26\" y=\"142.5\" >/home/marius/ana..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/reshape/concat.py:713:_get_concat_axis (275 samples, 0.26%)</title><rect x=\"1185.7\" y=\"260\" width=\"3.0\" height=\"15.0\" fill=\"rgb(230,0,1)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1188.66\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/tools/datetimes.py:369:_convert_listlike_datetimes (269 samples, 0.25%)</title><rect x=\"967.7\" y=\"260\" width=\"3.0\" height=\"15.0\" fill=\"rgb(210,79,52)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"970.68\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/astype.py:56:_astype_nansafe (5,471 samples, 5.18%)</title><rect x=\"888.1\" y=\"324\" width=\"61.2\" height=\"15.0\" fill=\"rgb(253,161,9)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"891.11\" y=\"334.5\" >/home/..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2068:create_block_manager_from_column_arrays (550 samples, 0.52%)</title><rect x=\"842.2\" y=\"244\" width=\"6.2\" height=\"15.0\" fill=\"rgb(211,74,13)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"845.22\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/reshape/concat.py:698:&lt;listcomp&gt; (121 samples, 0.11%)</title><rect x=\"177.9\" y=\"180\" width=\"1.4\" height=\"15.0\" fill=\"rgb(254,42,48)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"180.94\" y=\"190.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/base.py:510:find (107 samples, 0.10%)</title><rect x=\"955.7\" y=\"260\" width=\"1.2\" height=\"15.0\" fill=\"rgb(211,51,9)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"958.68\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:2224:_merge_blocks (226 samples, 0.21%)</title><rect x=\"842.5\" y=\"292\" width=\"2.5\" height=\"15.0\" fill=\"rgb(213,23,37)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"845.50\" y=\"302.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1422:_try_convert_types (13,777 samples, 13.05%)</title><rect x=\"823.2\" y=\"164\" width=\"154.0\" height=\"15.0\" fill=\"rgb(238,49,52)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"826.20\" y=\"174.5\" >/home/marius/anacon..</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/managers.py:1744:_consolidate_inplace (248 samples, 0.23%)</title><rect x=\"842.3\" y=\"260\" width=\"2.7\" height=\"15.0\" fill=\"rgb(207,35,15)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"845.25\" y=\"270.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/dtypes/astype.py:158:astype_array (252 samples, 0.24%)</title><rect x=\"974.4\" y=\"324\" width=\"2.8\" height=\"15.0\" fill=\"rgb(253,86,8)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"977.38\" y=\"334.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>&lt;string&gt;:1:&lt;module&gt; (105,529 samples, 99.97%)</title><rect x=\"10.4\" y=\"68\" width=\"1179.6\" height=\"15.0\" fill=\"rgb(212,147,28)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"13.40\" y=\"78.5\" >&lt;string&gt;:1:&lt;module&gt;</text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/indexing.py:1139:__getitem__ (368 samples, 0.35%)</title><rect x=\"1174.6\" y=\"196\" width=\"4.2\" height=\"15.0\" fill=\"rgb(213,157,42)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"1177.64\" y=\"206.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/io/json/_json.py:1432:_try_convert_dates (582 samples, 0.55%)</title><rect x=\"970.7\" y=\"180\" width=\"6.5\" height=\"15.0\" fill=\"rgb(246,189,1)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"973.69\" y=\"190.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>/home/marius/anaconda3/lib/python3.11/site-packages/pandas/core/internals/construction.py:793:to_arrays (106 samples, 0.10%)</title><rect x=\"971.8\" y=\"244\" width=\"1.2\" height=\"15.0\" fill=\"rgb(231,115,34)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"974.77\" y=\"254.5\" ></text>\n",
"</g>\n",
"<g >\n",
"<title>~:0:&lt;built-in method numpy.core._multiarray_umath.implement_array_function&gt; (207 samples, 0.20%)</title><rect x=\"417.3\" y=\"356\" width=\"2.3\" height=\"15.0\" fill=\"rgb(251,181,31)\" rx=\"2\" ry=\"2\" />\n",
"<text x=\"420.26\" y=\"366.5\" ></text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%flame -q --inverted\n",
"test_pandas()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "4d47d7ec-d3f1-4fac-9933-ec330651a6f4",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" @timestamp host.hostname host.ip \\\n",
"0 2024-05-15T15:57:18.471Z win10 fe80::24b4:3691:44a6:38a1 \n",
"1 2024-05-15T15:57:18.471Z win10 fe80::24b4:3691:44a6:38a1 \n",
"2 2024-05-15T15:57:18.471Z win10 fe80::24b4:3691:44a6:38a1 \n",
"3 2024-05-15T15:57:18.471Z win10 fe80::24b4:3691:44a6:38a1 \n",
"4 2024-05-15T15:57:18.471Z win10 fe80::24b4:3691:44a6:38a1 \n",
"... ... ... ... \n",
"7995 2024-05-15T16:10:07.128Z win10 fe80::24b4:3691:44a6:38a1 \n",
"7996 2024-05-15T16:10:07.136Z win10 fe80::24b4:3691:44a6:38a1 \n",
"7997 2024-05-15T16:10:07.136Z win10 fe80::24b4:3691:44a6:38a1 \n",
"7998 2024-05-15T16:10:07.149Z win10 fe80::24b4:3691:44a6:38a1 \n",
"7999 2024-05-15T16:10:07.149Z win10 fe80::24b4:3691:44a6:38a1 \n",
"\n",
" log.level winlog.event_id winlog.task \\\n",
"0 information 13 Registry value set (rule: RegistryEvent) \n",
"1 information 13 Registry value set (rule: RegistryEvent) \n",
"2 information 13 Registry value set (rule: RegistryEvent) \n",
"3 information 13 Registry value set (rule: RegistryEvent) \n",
"4 information 13 Registry value set (rule: RegistryEvent) \n",
"... ... ... ... \n",
"7995 information 4663 Removable Storage \n",
"7996 information 4663 Removable Storage \n",
"7997 information 4663 Removable Storage \n",
"7998 information 4663 Removable Storage \n",
"7999 information 4663 Removable Storage \n",
"\n",
" message \n",
"0 Registry value set:\\nRuleName: InvDB-Ver\\nEven... \n",
"1 Registry value set:\\nRuleName: InvDB-Path\\nEve... \n",
"2 Registry value set:\\nRuleName: InvDB-Pub\\nEven... \n",
"3 Registry value set:\\nRuleName: InvDB-CompileTi... \n",
"4 Registry value set:\\nRuleName: InvDB-Ver\\nEven... \n",
"... ... \n",
"7995 An attempt was made to access an object.\\n\\nSu... \n",
"7996 An attempt was made to access an object.\\n\\nSu... \n",
"7997 An attempt was made to access an object.\\n\\nSu... \n",
"7998 An attempt was made to access an object.\\n\\nSu... \n",
"7999 An attempt was made to access an object.\\n\\nSu... \n",
"\n",
"[8000 rows x 7 columns]\n",
"Pandas DataFarme number of rows: 8000\n",
"Pandas DataFrame memory usage: 7.56 MB\n",
" "
]
},
{
"data": {
"text/plain": [
" 46681 function calls (46472 primitive calls) in 0.113 seconds\n",
"\n",
" Ordered by: internal time\n",
"\n",
" ncalls tottime percall cumtime percall filename:lineno(function)\n",
" 1 0.029 0.029 0.029 0.029 {built-in method pandas._libs.json.ujson_loads}\n",
" 6 0.010 0.002 0.010 0.002 {pandas._libs.lib.memory_usage_of_objects}\n",
" 1 0.009 0.009 0.012 0.012 {method 'read' of '_io.TextIOWrapper' objects}\n",
" 8001 0.005 0.000 0.005 0.000 construction.py:915(<genexpr>)\n",
" 1 0.005 0.005 0.005 0.005 {pandas._libs.lib.dicts_to_array}\n",
" 94 0.004 0.000 0.004 0.000 {method 'split' of 'str' objects}\n",
" 1 0.003 0.003 0.009 0.009 {pandas._libs.lib.fast_unique_multiple_list_gen}\n",
" 1 0.003 0.003 0.010 0.010 _json.py:960(_combine_lines)\n",
" 1 0.003 0.003 0.003 0.003 {built-in method _codecs.utf_8_decode}\n",
" 64/8 0.003 0.000 0.003 0.000 {method 'join' of 'str' objects}\n",
" 1 0.003 0.003 0.113 0.113 <string>:1(<module>)\n",
" 1 0.002 0.002 0.049 0.049 _json.py:1360(_parse)\n",
" 6 0.002 0.000 0.002 0.000 {built-in method pandas._libs.lib.ensure_string_array}\n",
" 4 0.002 0.000 0.002 0.001 managers.py:2194(_stack_arrays)\n",
" 8002 0.002 0.000 0.003 0.000 _json.py:965(<genexpr>)\n",
" 1 0.002 0.002 0.002 0.002 construction.py:922(<listcomp>)\n",
" 1 0.001 0.001 0.004 0.004 _json.py:965(<listcomp>)\n",
" 1 0.001 0.001 0.091 0.091 _json.py:500(read_json)\n",
" 8001 0.001 0.000 0.001 0.000 {method 'strip' of 'str' objects}\n",
" 1 0.001 0.001 0.001 0.001 {built-in method io.open}\n",
" 9 0.001 0.000 0.001 0.000 {method 'astype' of 'numpy.ndarray' objects}\n",
" 2 0.001 0.001 0.002 0.001 managers.py:2224(_merge_blocks)\n",
" 53/51 0.001 0.000 0.001 0.000 {built-in method numpy.core._multiarray_umath.implement_array_function}\n",
" 1 0.001 0.001 0.010 0.010 _json.py:1422(_try_convert_types)\n",
"2422/2396 0.001 0.000 0.001 0.000 {built-in method builtins.isinstance}\n",
" 8001 0.001 0.000 0.001 0.000 {method 'keys' of 'dict' objects}\n",
" 32 0.001 0.000 0.001 0.000 generic.py:6147(__finalize__)\n",
" 1 0.001 0.001 0.001 0.001 {built-in method posix.stat}\n",
" 2 0.000 0.000 0.002 0.001 _json.py:1282(_try_convert_to_date)\n",
" 2 0.000 0.000 0.005 0.003 construction.py:96(arrays_to_mgr)\n",
" 98 0.000 0.000 0.000 0.000 generic.py:6206(__setattr__)\n",
" 24 0.000 0.000 0.001 0.000 base.py:510(find)\n",
"1415/1290 0.000 0.000 0.000 0.000 {built-in method builtins.len}\n",
" 29 0.000 0.000 0.001 0.000 {pandas._libs.lib.maybe_convert_objects}\n",
" 1 0.000 0.000 0.016 0.016 construction.py:793(to_arrays)\n",
" 21 0.000 0.000 0.000 0.000 managers.py:991(iget)\n",
" 661 0.000 0.000 0.000 0.000 format.py:428(len)\n",
" 1 0.000 0.000 0.000 0.000 socket.py:543(send)\n",
" 21 0.000 0.000 0.001 0.000 common.py:1587(pandas_dtype)\n",
" 47 0.000 0.000 0.000 0.000 {built-in method numpy.empty}\n",
" 93 0.000 0.000 0.000 0.000 config.py:127(_get_single_key)\n",
" 6 0.000 0.000 0.001 0.000 format.py:1332(_format_strings)\n",
" 198 0.000 0.000 0.000 0.000 base.py:236(construct_from_string)\n",
" 41 0.000 0.000 0.000 0.000 generic.py:274(__init__)\n",
" 5 0.000 0.000 0.001 0.000 base.py:478(__new__)\n",
" 19 0.000 0.000 0.001 0.000 construction.py:519(sanitize_array)\n",
" 7 0.000 0.000 0.001 0.000 series.py:371(__init__)\n",
" 18 0.000 0.000 0.000 0.000 {method 'reduce' of 'numpy.ufunc' objects}\n",
" 67 0.000 0.000 0.000 0.000 printing.py:162(pprint_thing)\n",
" 60 0.000 0.000 0.001 0.000 format.py:1355(_format)\n",
" 4 0.000 0.000 0.000 0.000 {pandas._libs.tslib.array_with_unit_to_datetime}\n",
" 63 0.000 0.000 0.000 0.000 base.py:5350(__getitem__)\n",
" 89 0.000 0.000 0.001 0.000 config.py:145(_get_option)\n",
" 91 0.000 0.000 0.000 0.000 config.py:633(_get_root)\n",
" 67 0.000 0.000 0.000 0.000 printing.py:193(as_escaped_string)\n",
" 182 0.000 0.000 0.000 0.000 config.py:647(_get_deprecated_option)\n",
" 212 0.000 0.000 0.000 0.000 generic.py:42(_instancecheck)\n",
" 6 0.000 0.000 0.000 0.000 {pandas._libs.lib.map_infer}\n",
" 212 0.000 0.000 0.000 0.000 generic.py:37(_check)\n",
" 21 0.000 0.000 0.001 0.000 frame.py:4402(_get_item_cache)\n",
" 1 0.000 0.000 0.004 0.004 format.py:843(_get_strcols_without_index)\n",
" 21 0.000 0.000 0.001 0.000 frame.py:3776(_ixs)\n",
" 35 0.000 0.000 0.000 0.000 numeric.py:290(full)\n",
" 18 0.000 0.000 0.001 0.000 format.py:1909(_make_fixed_width)\n",
" 2 0.000 0.000 0.002 0.001 managers.py:2137(_form_blocks)\n",
" 9 0.000 0.000 0.002 0.000 format.py:1217(format_array)\n",
" 10 0.000 0.000 0.003 0.000 astype.py:56(_astype_nansafe)\n",
" 61 0.000 0.000 0.000 0.000 {built-in method builtins.max}\n",
" 180 0.000 0.000 0.000 0.000 format.py:1932(just)\n",
" 14 0.000 0.000 0.000 0.000 base.py:5300(__contains__)\n",
" 15 0.000 0.000 0.000 0.000 {built-in method numpy.array}\n",
" 67 0.000 0.000 0.000 0.000 inference.py:373(is_sequence)\n",
" 9 0.000 0.000 0.001 0.000 indexing.py:1006(_getitem_lowerdim)\n",
" 2 0.000 0.000 0.021 0.011 frame.py:665(__init__)\n",
" 198 0.000 0.000 0.000 0.000 format.py:1923(<genexpr>)\n",
" 21 0.000 0.000 0.001 0.000 frame.py:4384(_box_col_values)\n",
" 73 0.000 0.000 0.000 0.000 missing.py:184(_isna)\n",
" 24 0.000 0.000 0.000 0.000 warnings.py:466(__enter__)\n",
" 24 0.000 0.000 0.001 0.000 frame.py:1392(items)\n",
" 88 0.000 0.000 0.001 0.000 config.py:271(__call__)\n",
" 7 0.000 0.000 0.003 0.000 format.py:890(format_col)\n",
" 301 0.000 0.000 0.000 0.000 {built-in method builtins.getattr}\n",
" 24 0.000 0.000 0.000 0.000 warnings.py:181(_add_filter)\n",
" 2 0.000 0.000 0.000 0.000 {pandas._libs.lib.array_equivalent_object}\n",
" 17 0.000 0.000 0.000 0.000 cast.py:1147(maybe_infer_to_datetimelike)\n",
" 9 0.000 0.000 0.007 0.001 _json.py:1204(_try_convert_data)\n",
" 7 0.000 0.000 0.004 0.001 managers.py:308(apply)\n",
" 5 0.000 0.000 0.000 0.000 printing.py:28(adjoin)\n",
" 18 0.000 0.000 0.000 0.000 format.py:1938(<listcomp>)\n",
" 56 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_list_like}\n",
" 48 0.000 0.000 0.000 0.000 {built-in method numpy.asarray}\n",
" 62 0.000 0.000 0.000 0.000 {built-in method builtins.all}\n",
" 9 0.000 0.000 0.001 0.000 indexing.py:1139(__getitem__)\n",
" 2 0.000 0.000 0.010 0.005 _json.py:1396(_process_converter)\n",
" 89 0.000 0.000 0.000 0.000 config.py:686(_warn_if_deprecated)\n",
" 35 0.000 0.000 0.000 0.000 <__array_function__ internals>:177(copyto)\n",
" 15 0.000 0.000 0.000 0.000 blocks.py:2388(new_block)\n",
" 15 0.000 0.000 0.000 0.000 inference.py:273(is_dict_like)\n",
" 6 0.000 0.000 0.000 0.000 base.py:836(__iter__)\n",
" 7 0.000 0.000 0.010 0.001 base.py:1135(_memory_usage)\n",
" 24 0.000 0.000 0.000 0.000 {method 'remove' of 'list' objects}\n",
" 20 0.000 0.000 0.000 0.000 printing.py:65(<listcomp>)\n",
" 7 0.000 0.000 0.000 0.000 blocks.py:247(make_block)\n",
" 60 0.000 0.000 0.000 0.000 {built-in method _abc._abc_instancecheck}\n",
" 8 0.000 0.000 0.000 0.000 managers.py:1825(from_array)\n",
" 201 0.000 0.000 0.000 0.000 {method 'replace' of 'str' objects}\n",
" 28 0.000 0.000 0.000 0.000 printing.py:69(<listcomp>)\n",
" 2 0.000 0.000 0.001 0.000 concat.py:618(get_result)\n",
" 41 0.000 0.000 0.000 0.000 flags.py:53(__init__)\n",
" 1 0.000 0.000 0.000 0.000 construction.py:928(_finalize_columns_and_data)\n",
" 1 0.000 0.000 0.110 0.110 1231667944.py:1(test_pandas)\n",
" 9 0.000 0.000 0.001 0.000 indexing.py:1651(_getitem_tuple)\n",
" 40 0.000 0.000 0.000 0.000 {built-in method builtins.any}\n",
" 31 0.000 0.000 0.000 0.000 generic.py:562(_get_axis)\n",
" 93 0.000 0.000 0.000 0.000 config.py:674(_translate_key)\n",
" 16 0.000 0.000 0.000 0.000 format.py:903(_get_formatter)\n",
" 14 0.000 0.000 0.000 0.000 numpy_.py:98(__init__)\n",
" 93 0.000 0.000 0.000 0.000 config.py:615(_select_options)\n",
" 32 0.000 0.000 0.000 0.000 managers.py:1960(internal_values)\n",
" 3 0.000 0.000 0.000 0.000 {method '_rebuild_blknos_and_blklocs' of 'pandas._libs.internals.BlockManager' objects}\n",
" 10 0.000 0.000 0.003 0.000 astype.py:158(astype_array)\n",
" 32 0.000 0.000 0.000 0.000 generic.py:335(_from_mgr)\n",
" 16 0.000 0.000 0.000 0.000 blocks.py:2317(maybe_coerce_values)\n",
" 60 0.000 0.000 0.000 0.000 __init__.py:33(using_copy_on_write)\n",
" 14 0.000 0.000 0.000 0.000 {method 'get_loc' of 'pandas._libs.index.IndexEngine' objects}\n",
" 6 0.000 0.000 0.000 0.000 {built-in method pandas._libs.missing.isnaobj}\n",
" 7 0.000 0.000 0.005 0.001 generic.py:6368(astype)\n",
" 72 0.000 0.000 0.000 0.000 base.py:909(__len__)\n",
" 2 0.000 0.000 0.000 0.000 construction.py:596(_homogenize)\n",
" 48 0.000 0.000 0.000 0.000 printing.py:60(justify)\n",
" 1 0.000 0.000 0.000 0.000 {method 'close' of '_io.TextIOWrapper' objects}\n",
" 7 0.000 0.000 0.004 0.001 blocks.py:588(astype)\n",
" 1 0.000 0.000 0.000 0.000 concat.py:94(concatenate_managers)\n",
" 9 0.000 0.000 0.001 0.000 indexing.py:1681(_getitem_axis)\n",
" 21 0.000 0.000 0.000 0.000 frame.py:654(_constructor_sliced_from_mgr)\n",
" 48 0.000 0.000 0.000 0.000 format.py:431(justify)\n",
" 73 0.000 0.000 0.000 0.000 missing.py:101(isna)\n",
" 140 0.000 0.000 0.000 0.000 {built-in method builtins.hasattr}\n",
" 4 0.000 0.000 0.001 0.000 datetimes.py:721(to_datetime)\n",
" 6 0.000 0.000 0.000 0.000 iostream.py:610(write)\n",
" 19 0.000 0.000 0.001 0.000 base.py:7521(ensure_index)\n",
" 20 0.000 0.000 0.000 0.000 blocks.py:2346(get_block_type)\n",
" 63 0.000 0.000 0.000 0.000 common.py:149(cast_scalar_indexer)\n",
" 142 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_scalar}\n",
" 14 0.000 0.000 0.000 0.000 managers.py:1949(dtype)\n",
" 2 0.000 0.000 0.000 0.000 {method 'get_slice' of 'pandas._libs.internals.BlockManager' objects}\n",
" 136 0.000 0.000 0.000 0.000 {built-in method builtins.issubclass}\n",
" 1 0.000 0.000 0.015 0.015 construction.py:891(_list_of_dict_to_arrays)\n",
" 24 0.000 0.000 0.000 0.000 warnings.py:487(__exit__)\n",
" 9 0.000 0.000 0.000 0.000 indexing.py:931(_validate_tuple_indexer)\n",
" 21 0.000 0.000 0.000 0.000 series.py:1372(_set_as_cached)\n",
" 7 0.000 0.000 0.000 0.000 _dtype.py:344(_name_get)\n",
" 7 0.000 0.000 0.000 0.000 missing.py:261(_isna_array)\n",
" 18 0.000 0.000 0.000 0.000 dtypes.py:1266(construct_from_string)\n",
" 7 0.000 0.000 0.000 0.000 warnings.py:130(filterwarnings)\n",
" 14 0.000 0.000 0.000 0.000 base.py:3763(get_loc)\n",
" 6 0.000 0.000 0.000 0.000 missing.py:380(notna)\n",
" 30 0.000 0.000 0.000 0.000 format.py:1617(<lambda>)\n",
" 27 0.000 0.000 0.000 0.000 construction.py:485(ensure_wrapped_if_datetimelike)\n",
" 3 0.000 0.000 0.000 0.000 base.py:1418(_format_with_header)\n",
" 23 0.000 0.000 0.000 0.000 {method 'match' of 're.Pattern' objects}\n",
" 18 0.000 0.000 0.000 0.000 dtypes.py:814(construct_from_string)\n",
" 9 0.000 0.000 0.000 0.000 indexing.py:1614(_is_scalar_access)\n",
" 18 0.000 0.000 0.000 0.000 dtypes.py:332(construct_from_string)\n",
" 66 0.000 0.000 0.000 0.000 {built-in method pandas._libs.missing.checknull}\n",
" 10 0.000 0.000 0.000 0.000 format.py:479(get_adjustment)\n",
" 7 0.000 0.000 0.000 0.000 base.py:649(_simple_new)\n",
" 217 0.000 0.000 0.000 0.000 {method 'ljust' of 'str' objects}\n",
" 1 0.000 0.000 0.075 0.075 _json.py:980(read)\n",
" 16 0.000 0.000 0.000 0.000 common.py:137(is_object_dtype)\n",
" 32 0.000 0.000 0.000 0.000 flags.py:89(allows_duplicate_labels)\n",
" 24 0.000 0.000 0.000 0.000 warnings.py:440(__init__)\n",
" 1 0.000 0.000 0.113 0.113 {built-in method builtins.exec}\n",
" 18 0.000 0.000 0.000 0.000 dtypes.py:1021(construct_from_string)\n",
" 9 0.000 0.000 0.002 0.000 format.py:1328(get_result)\n",
" 1 0.000 0.000 0.000 0.000 string.py:119(_join_multiline)\n",
" 3 0.000 0.000 0.000 0.000 _strptime.py:309(_strptime)\n",
" 30 0.000 0.000 0.000 0.000 construction.py:420(extract_array)\n",
" 21 0.000 0.000 0.000 0.000 blocks.py:1007(iget)\n",
" 1 0.000 0.000 0.012 0.012 frame.py:3471(memory_usage)\n",
" 76 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_np_dtype}\n",
" 77 0.000 0.000 0.000 0.000 format.py:884(<genexpr>)\n",
" 10 0.000 0.000 0.000 0.000 generic.py:760(_set_axis)\n",
" 18 0.000 0.000 0.000 0.000 indexing.py:1536(_validate_key)\n",
" 17 0.000 0.000 0.000 0.000 warnings.py:165(simplefilter)\n",
" 4 0.000 0.000 0.000 0.000 _asarray.py:31(require)\n",
" 25 0.000 0.000 0.000 0.000 common.py:1425(_is_dtype_type)\n",
" 6 0.000 0.000 0.000 0.000 concat.py:322(_get_block_for_concat_plan)\n",
" 60 0.000 0.000 0.000 0.000 <frozen abc>:117(__instancecheck__)\n",
" 7 0.000 0.000 0.004 0.001 astype.py:192(astype_array_safe)\n",
" 25 0.000 0.000 0.000 0.000 common.py:96(is_bool_indexer)\n",
" 1 0.000 0.000 0.001 0.001 common.py:652(get_handle)\n",
" 7 0.000 0.000 0.000 0.000 construction.py:1028(convert)\n",
" 157 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects}\n",
" 2 0.000 0.000 0.000 0.000 concat.py:403(__init__)\n",
" 9 0.000 0.000 0.000 0.000 indexing.py:2678(check_dict_or_set_indexers)\n",
" 2 0.000 0.000 0.000 0.000 base.py:1683(_validate_names)\n",
" 3 0.000 0.000 0.000 0.000 cast.py:119(maybe_convert_platform)\n",
" 3 0.000 0.000 0.000 0.000 {built-in method numpy.arange}\n",
" 14 0.000 0.000 0.000 0.000 managers.py:1964(array_values)\n",
" 103 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_integer}\n",
" 4 0.000 0.000 0.001 0.000 base.py:1038(astype)\n",
" 7 0.000 0.000 0.000 0.000 string.py:129(<listcomp>)\n",
" 1 0.000 0.000 0.062 0.062 _json.py:1022(_get_object_parser)\n",
" 1 0.000 0.000 0.000 0.000 concat.py:296(_get_combined_plan)\n",
" 47 0.000 0.000 0.000 0.000 range.py:963(__len__)\n",
" 2 0.000 0.000 0.000 0.000 parse.py:374(urlparse)\n",
" 6 0.000 0.000 0.000 0.000 concat.py:389(is_na)\n",
" 39 0.000 0.000 0.000 0.000 inference.py:334(is_hashable)\n",
" 6 0.000 0.000 0.000 0.000 fromnumeric.py:69(_wrapreduction)\n",
" 7 0.000 0.000 0.004 0.001 managers.py:405(astype)\n",
" 2 0.000 0.000 0.000 0.000 format.py:956(_get_formatted_index)\n",
" 3 0.000 0.000 0.000 0.000 cast.py:1544(construct_1d_object_array_from_listlike)\n",
" 8 0.000 0.000 0.000 0.000 range.py:198(_simple_new)\n",
" 9 0.000 0.000 0.000 0.000 common.py:1066(is_numeric_dtype)\n",
" 5 0.000 0.000 0.000 0.000 format.py:434(adjoin)\n",
" 4 0.000 0.000 0.001 0.000 datetimes.py:216(_maybe_cache)\n",
" 49 0.000 0.000 0.000 0.000 {built-in method __new__ of type object at 0x860f60}\n",
" 36 0.000 0.000 0.000 0.000 managers.py:1799(__init__)\n",
" 1 0.000 0.000 0.000 0.000 format.py:915(_get_formatted_column_labels)\n",
" 2 0.000 0.000 0.000 0.000 generic.py:4296(_slice)\n",
" 9 0.000 0.000 0.000 0.000 series.py:653(name)\n",
" 18 0.000 0.000 0.000 0.000 string_.py:135(construct_from_string)\n",
" 8 0.000 0.000 0.000 0.000 series.py:581(_constructor_from_mgr)\n",
" 6 0.000 0.000 0.000 0.000 __init__.py:272(_compile)\n",
" 61 0.000 0.000 0.000 0.000 printing.py:57(<genexpr>)\n",
" 4 0.000 0.000 0.000 0.000 datetimes.py:526(_to_datetime_with_unit)\n",
" 2 0.000 0.000 0.004 0.002 managers.py:2068(create_block_manager_from_column_arrays)\n",
" 27 0.000 0.000 0.000 0.000 indexing.py:1144(<genexpr>)\n",
" 2 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_all_arraylike}\n",
" 10 0.000 0.000 0.000 0.000 base.py:73(_validate_set_axis)\n",
" 32 0.000 0.000 0.000 0.000 series.py:750(_values)\n",
" 154 0.000 0.000 0.000 0.000 {method 'rjust' of 'str' objects}\n",
" 18 0.000 0.000 0.000 0.000 dtypes.py:2180(construct_from_string)\n",
" 14 0.000 0.000 0.000 0.000 indexing.py:1629(_validate_integer)\n",
" 6 0.000 0.000 0.000 0.000 {method 'reshape' of 'numpy.ndarray' objects}\n",
" 1 0.000 0.000 0.011 0.011 frame.py:3561(<listcomp>)\n",
" 5 0.000 0.000 0.000 0.000 base.py:574(_ensure_array)\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:666(_parse)\n",
" 1 0.000 0.000 0.007 0.007 frame.py:1229(to_string)\n",
" 72 0.000 0.000 0.000 0.000 {built-in method _warnings._filters_mutated}\n",
" 71 0.000 0.000 0.000 0.000 {method 'get' of 'dict' objects}\n",
" 21 0.000 0.000 0.000 0.000 frame.py:651(_sliced_from_mgr)\n",
" 1 0.000 0.000 0.000 0.000 {built-in method _operator.gt}\n",
" 1 0.000 0.000 0.000 0.000 string.py:89(_insert_dot_separator_vertical)\n",
" 4 0.000 0.000 0.000 0.000 _asarray.py:112(<setcomp>)\n",
" 1 0.000 0.000 0.003 0.003 <frozen codecs>:319(decode)\n",
" 3 0.000 0.000 0.000 0.000 format.py:1619(<listcomp>)\n",
" 40 0.000 0.000 0.000 0.000 inference.py:300(<genexpr>)\n",
" 7 0.000 0.000 0.000 0.000 common.py:1268(is_extension_array_dtype)\n",
" 5 0.000 0.000 0.000 0.000 cast.py:1483(construct_1d_arraylike_from_scalar)\n",
" 14 0.000 0.000 0.000 0.000 blocks.py:2241(array_values)\n",
" 3 0.000 0.000 0.000 0.000 _parser.py:77(get_token)\n",
" 13 0.000 0.000 0.000 0.000 common.py:296(maybe_iterable_to_list)\n",
" 7 0.000 0.000 0.000 0.000 managers.py:1812(from_blocks)\n",
" 18 0.000 0.000 0.000 0.000 dtypes.py:1789(construct_from_string)\n",
" 1 0.000 0.000 0.000 0.000 array_ops.py:290(comparison_op)\n",
" 38 0.000 0.000 0.000 0.000 generic.py:548(_get_axis_number)\n",
" 5 0.000 0.000 0.000 0.000 base.py:69(shape)\n",
" 48 0.000 0.000 0.000 0.000 {method 'startswith' of 'str' objects}\n",
" 14 0.000 0.000 0.000 0.000 dtypes.py:1407(__init__)\n",
" 9 0.000 0.000 0.000 0.000 numerictypes.py:356(issubdtype)\n",
" 12 0.000 0.000 0.000 0.000 base.py:7616(maybe_extract_name)\n",
" 1 0.000 0.000 0.000 0.000 expressions.py:95(_evaluate_numexpr)\n",
" 1 0.000 0.000 0.000 0.000 iostream.py:243(schedule)\n",
" 1 0.000 0.000 0.000 0.000 range.py:902(_concat)\n",
" 14 0.000 0.000 0.000 0.000 construction.py:695(_sanitize_ndim)\n",
" 7 0.000 0.000 0.000 0.000 _json.py:1442(is_ok)\n",
" 1 0.000 0.000 0.000 0.000 numeric.py:2407(array_equal)\n",
" 7 0.000 0.000 0.000 0.000 series.py:703(name)\n",
" 10 0.000 0.000 0.000 0.000 common.py:1322(is_ea_or_datetimelike_dtype)\n",
" 2 0.000 0.000 0.000 0.000 config.py:153(_set_option)\n",
" 1 0.000 0.000 0.014 0.014 _json.py:816(__init__)\n",
" 4 0.000 0.000 0.000 0.000 blocks.py:297(slice_block_columns)\n",
" 1 0.000 0.000 0.000 0.000 blocks.py:2375(new_block_2d)\n",
" 8 0.000 0.000 0.001 0.000 <__array_function__ internals>:177(concatenate)\n",
" 1 0.000 0.000 0.007 0.007 frame.py:1123(__repr__)\n",
" 10 0.000 0.000 0.000 0.000 common.py:1562(validate_all_hashable)\n",
" 1 0.000 0.000 0.002 0.002 managers.py:2207(_consolidate)\n",
" 9 0.000 0.000 0.000 0.000 indexing.py:948(_is_nested_tuple_indexer)\n",
" 1 0.000 0.000 0.001 0.001 format.py:564(__init__)\n",
" 10 0.000 0.000 0.000 0.000 managers.py:225(set_axis)\n",
" 2 0.000 0.000 0.000 0.000 common.py:1155(_is_binary_mode)\n",
" 42 0.000 0.000 0.000 0.000 base.py:5127(_values)\n",
" 3 0.000 0.000 0.000 0.000 range.py:234(_data)\n",
" 18 0.000 0.000 0.000 0.000 common.py:367(apply_if_callable)\n",
" 1 0.000 0.000 0.000 0.000 common.py:228(asarray_tuplesafe)\n",
" 2 0.000 0.000 0.000 0.000 indexing.py:978(_getitem_tuple_same_dim)\n",
" 1 0.000 0.000 0.000 0.000 {pandas._libs.internals.get_concat_blkno_indexers}\n",
" 4 0.000 0.000 0.000 0.000 datetimes.py:369(_convert_listlike_datetimes)\n",
" 35 0.000 0.000 0.000 0.000 {method 'format' of 'str' objects}\n",
" 9 0.000 0.000 0.000 0.000 blocks.py:2467(extend_blocks)\n",
" 17 0.000 0.000 0.000 0.000 __init__.py:43(using_pyarrow_string_dtype)\n",
" 1 0.000 0.000 0.012 0.012 _json.py:896(_preprocess_data)\n",
" 1 0.000 0.000 0.000 0.000 cast.py:1569(maybe_cast_to_integer_array)\n",
" 1 0.000 0.000 0.000 0.000 cast.py:774(infer_dtype_from_scalar)\n",
" 2 0.000 0.000 0.000 0.000 base.py:5519(equals)\n",
" 3 0.000 0.000 0.007 0.002 {built-in method builtins.print}\n",
" 6 0.000 0.000 0.000 0.000 missing.py:305(_isna_string_dtype)\n",
" 5 0.000 0.000 0.000 0.000 api.py:379(default_index)\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:62(__init__)\n",
" 1 0.000 0.000 0.004 0.004 construction.py:423(dict_to_mgr)\n",
" 1 0.000 0.000 0.002 0.002 _json.py:1185(_convert_axes)\n",
" 6 0.000 0.000 0.000 0.000 fromnumeric.py:2432(all)\n",
" 1 0.000 0.000 0.000 0.000 common.py:289(_get_filepath_or_buffer)\n",
" 2 0.000 0.000 0.001 0.001 concat.py:157(concat)\n",
" 53 0.000 0.000 0.000 0.000 {built-in method builtins.hash}\n",
" 1 0.000 0.000 0.000 0.000 base.py:2293(is_unique)\n",
" 2 0.000 0.000 0.000 0.000 base.py:5422(append)\n",
" 2 0.000 0.000 0.000 0.000 _json.py:1049(close)\n",
" 36 0.000 0.000 0.000 0.000 {method 'insert' of 'list' objects}\n",
" 1 0.000 0.000 0.000 0.000 common.py:538(infer_compression)\n",
" 7 0.000 0.000 0.010 0.001 series.py:5223(memory_usage)\n",
" 3 0.000 0.000 0.000 0.000 concat.py:572(_is_uniform_join_units)\n",
" 6 0.000 0.000 0.000 0.000 managers.py:2212(<lambda>)\n",
" 7 0.000 0.000 0.000 0.000 generic.py:6189(__getattr__)\n",
" 18 0.000 0.000 0.000 0.000 indexing.py:2651(is_label_like)\n",
" 13 0.000 0.000 0.000 0.000 blocks.py:187(is_extension)\n",
" 1 0.000 0.000 0.000 0.000 base.py:1427(<listcomp>)\n",
" 5 0.000 0.000 0.000 0.000 common.py:173(_expand_user)\n",
" 1 0.000 0.000 0.002 0.002 _json.py:912(_get_data_from_filepath)\n",
" 9 0.000 0.000 0.000 0.000 common.py:131(<lambda>)\n",
" 2 0.000 0.000 0.000 0.000 common.py:121(close)\n",
" 1 0.000 0.000 0.000 0.000 construction.py:487(<listcomp>)\n",
" 7 0.000 0.000 0.000 0.000 {method 'add_index_reference' of 'pandas._libs.internals.BlockValuesRefs' objects}\n",
" 9 0.000 0.000 0.000 0.000 format.py:1300(__init__)\n",
" 2 0.000 0.000 0.000 0.000 concat.py:492(_clean_keys_and_objs)\n",
" 3 0.000 0.000 0.000 0.000 blocks.py:198(_consolidate_key)\n",
" 1 0.000 0.000 0.000 0.000 string.py:128(<listcomp>)\n",
" 1 0.000 0.000 0.005 0.005 format.py:1077(to_string)\n",
" 1 0.000 0.000 0.000 0.000 range.py:489(copy)\n",
" 18 0.000 0.000 0.000 0.000 numerictypes.py:282(issubclass_)\n",
" 24 0.000 0.000 0.000 0.000 managers.py:169(blknos)\n",
" 14 0.000 0.000 0.000 0.000 construction.py:734(_sanitize_str_dtypes)\n",
" 7 0.000 0.000 0.000 0.000 frame.py:1539(__len__)\n",
" 9 0.000 0.000 0.000 0.000 concat.py:597(<genexpr>)\n",
" 66 0.000 0.000 0.000 0.000 generic.py:393(flags)\n",
" 9 0.000 0.000 0.000 0.000 common.py:514(is_string_or_object_np_dtype)\n",
" 63 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_float}\n",
" 34 0.000 0.000 0.000 0.000 {method 'endswith' of 'str' objects}\n",
" 2 0.000 0.000 0.000 0.000 concat.py:478(_get_ndims)\n",
" 68 0.000 0.000 0.000 0.000 {built-in method builtins.iter}\n",
" 1 0.000 0.000 0.062 0.062 _json.py:1172(parse)\n",
" 1 0.000 0.000 0.000 0.000 base.py:842(_engine)\n",
" 20 0.000 0.000 0.000 0.000 common.py:1581(<genexpr>)\n",
" 1 0.000 0.000 0.000 0.000 {pandas._libs.missing.is_float_nan}\n",
" 6 0.000 0.000 0.000 0.000 <__array_function__ internals>:177(all)\n",
" 1 0.000 0.000 0.000 0.000 base.py:7092(_cmp_method)\n",
" 1 0.000 0.000 0.001 0.001 format.py:825(_truncate_vertically)\n",
" 18 0.000 0.000 0.000 0.000 indexing.py:966(_validate_key_length)\n",
" 9 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:1207(_handle_fromlist)\n",
" 27 0.000 0.000 0.000 0.000 indexing.py:955(<genexpr>)\n",
" 2 0.000 0.000 0.000 0.000 concat.py:52(concat_compat)\n",
" 27 0.000 0.000 0.000 0.000 indexing.py:2685(<genexpr>)\n",
" 27 0.000 0.000 0.000 0.000 indexing.py:1143(<genexpr>)\n",
" 5 0.000 0.000 0.000 0.000 <frozen posixpath>:229(expanduser)\n",
" 6 0.000 0.000 0.000 0.000 generic.py:487(_validate_dtype)\n",
" 1 0.000 0.000 0.000 0.000 managers.py:1740(<listcomp>)\n",
" 1 0.000 0.000 0.000 0.000 series.py:3159(_append)\n",
" 25 0.000 0.000 0.000 0.000 managers.py:185(blklocs)\n",
" 34 0.000 0.000 0.000 0.000 flags.py:57(allows_duplicate_labels)\n",
" 1 0.000 0.000 0.000 0.000 {method 'take' of 'numpy.ndarray' objects}\n",
" 14 0.000 0.000 0.000 0.000 managers.py:2124(_grouping_func)\n",
" 34 0.000 0.000 0.000 0.000 generic.py:358(attrs)\n",
" 14 0.000 0.000 0.000 0.000 series.py:626(dtype)\n",
" 6 0.000 0.000 0.000 0.000 {built-in method posix.getpid}\n",
" 1 0.000 0.000 0.000 0.000 format.py:487(get_dataframe_repr_params)\n",
" 42 0.000 0.000 0.000 0.000 {method 'lower' of 'str' objects}\n",
" 11 0.000 0.000 0.000 0.000 common.py:306(is_null_slice)\n",
" 1 0.000 0.000 0.000 0.000 console.py:9(get_console_size)\n",
" 1 0.000 0.000 0.000 0.000 {method 'argsort' of 'numpy.ndarray' objects}\n",
" 29 0.000 0.000 0.000 0.000 managers.py:1902(_block)\n",
" 13 0.000 0.000 0.000 0.000 frame.py:949(axes)\n",
" 1 0.000 0.000 0.016 0.016 construction.py:506(nested_data_to_arrays)\n",
" 11 0.000 0.000 0.000 0.000 indexing.py:150(iloc)\n",
" 10 0.000 0.000 0.000 0.000 format.py:425(__init__)\n",
" 15 0.000 0.000 0.000 0.000 base.py:831(_reset_identity)\n",
" 4 0.000 0.000 0.000 0.000 common.py:233(stringify_path)\n",
" 5 0.000 0.000 0.000 0.000 base.py:592(_dtype_to_subclass)\n",
" 27 0.000 0.000 0.000 0.000 indexing.py:2694(<genexpr>)\n",
" 2 0.000 0.000 0.000 0.000 base.py:7592(trim_front)\n",
" 7 0.000 0.000 0.000 0.000 _dtype.py:330(_name_includes_bit_suffix)\n",
" 2 0.000 0.000 0.000 0.000 construction.py:765(_try_cast)\n",
" 1 0.000 0.000 0.000 0.000 format.py:1163(save_to_buffer)\n",
" 2 0.000 0.000 0.000 0.000 managers.py:1734(_consolidate_check)\n",
" 7 0.000 0.000 0.005 0.001 _json.py:1429(<lambda>)\n",
" 14 0.000 0.000 0.000 0.000 series.py:791(array)\n",
" 2 0.000 0.000 0.002 0.001 managers.py:1744(_consolidate_inplace)\n",
" 9 0.000 0.000 0.000 0.000 concat.py:587(<genexpr>)\n",
" 2 0.000 0.000 0.000 0.000 frozen.py:73(__getitem__)\n",
" 1 0.000 0.000 0.000 0.000 nanops.py:76(_f)\n",
" 1 0.000 0.000 0.000 0.000 array_ops.py:191(_na_arithmetic_op)\n",
" 35 0.000 0.000 0.000 0.000 multiarray.py:1079(copyto)\n",
" 2 0.000 0.000 0.000 0.000 concat.py:713(_get_concat_axis)\n",
" 9 0.000 0.000 0.000 0.000 common.py:556(require_length_match)\n",
" 16 0.000 0.000 0.000 0.000 common.py:123(<lambda>)\n",
" 1 0.000 0.000 0.000 0.000 string.py:189(_binify)\n",
" 1 0.000 0.000 0.000 0.000 format.py:683(_initialize_justify)\n",
" 21 0.000 0.000 0.000 0.000 common.py:1255(is_1d_only_ea_dtype)\n",
" 6 0.000 0.000 0.000 0.000 iostream.py:505(_is_master_process)\n",
" 2 0.000 0.000 0.000 0.000 indexing.py:1718(_get_slice_axis)\n",
" 1 0.000 0.000 0.001 0.001 format.py:789(truncate)\n",
" 1 0.000 0.000 0.005 0.005 string.py:40(_get_string_representation)\n",
" 24 0.000 0.000 0.000 0.000 blocks.py:583(dtype)\n",
" 18 0.000 0.000 0.000 0.000 indexing.py:1627(<genexpr>)\n",
" 12 0.000 0.000 0.000 0.000 format.py:633(is_truncated_horizontally)\n",
" 1 0.000 0.000 0.000 0.000 nanops.py:604(nansum)\n",
" 7 0.000 0.000 0.000 0.000 _json.py:1462(<lambda>)\n",
" 8 0.000 0.000 0.000 0.000 common.py:1366(_is_dtype)\n",
" 1 0.000 0.000 0.005 0.005 string.py:28(to_string)\n",
" 3 0.000 0.000 0.000 0.000 frame.py:641(_constructor_from_mgr)\n",
" 3 0.000 0.000 0.000 0.000 locale.py:396(normalize)\n",
" 14 0.000 0.000 0.000 0.000 {built-in method builtins.setattr}\n",
" 28 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_iterator}\n",
" 1 0.000 0.000 0.000 0.000 format.py:1023(__init__)\n",
" 1 0.000 0.000 0.000 0.000 generic.py:12031(_min_count_stat_function)\n",
" 27 0.000 0.000 0.000 0.000 indexing.py:915(<genexpr>)\n",
" 14 0.000 0.000 0.000 0.000 construction.py:754(_maybe_repeat)\n",
" 2 0.000 0.000 0.000 0.000 {method 'all' of 'numpy.ndarray' objects}\n",
" 1 0.000 0.000 0.000 0.000 format.py:949(<listcomp>)\n",
" 17 0.000 0.000 0.000 0.000 blocks.py:1003(shape)\n",
" 15 0.000 0.000 0.000 0.000 generic.py:659(ndim)\n",
" 16 0.000 0.000 0.000 0.000 common.py:121(classes)\n",
" 2 0.000 0.000 0.000 0.000 _methods.py:61(_all)\n",
" 14 0.000 0.000 0.000 0.000 utils.py:62(is_list_like_indexer)\n",
" 2 0.000 0.000 0.000 0.000 concat.py:695(new_axes)\n",
" 9 0.000 0.000 0.000 0.000 indexing.py:909(_expand_ellipsis)\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:199(split)\n",
" 5 0.000 0.000 0.000 0.000 printing.py:48(<listcomp>)\n",
" 6 0.000 0.000 0.000 0.000 fromnumeric.py:70(<dictcomp>)\n",
" 1 0.000 0.000 0.000 0.000 fromnumeric.py:51(_wrapfunc)\n",
" 1 0.000 0.000 0.000 0.000 range.py:341(nbytes)\n",
" 2 0.000 0.000 0.000 0.000 common.py:557(condition)\n",
" 1 0.000 0.000 0.000 0.000 managers.py:918(_verify_integrity)\n",
" 1 0.000 0.000 0.000 0.000 console.py:79(in_ipython_frontend)\n",
" 8 0.000 0.000 0.000 0.000 {method 'max' of 'numpy.ndarray' objects}\n",
" 2 0.000 0.000 0.000 0.000 missing.py:466(array_equivalent)\n",
" 1 0.000 0.000 0.000 0.000 generic.py:6337(dtypes)\n",
" 2 0.000 0.000 0.000 0.000 concat.py:698(<listcomp>)\n",
" 6 0.000 0.000 0.000 0.000 enum.py:193(__get__)\n",
" 1 0.000 0.000 0.000 0.000 string.py:67(_insert_dot_separators)\n",
" 1 0.000 0.000 0.000 0.000 base.py:674(_with_infer)\n",
" 15 0.000 0.000 0.000 0.000 base.py:71(<genexpr>)\n",
" 2 0.000 0.000 0.000 0.000 common.py:277(is_fsspec_url)\n",
" 3 0.000 0.000 0.000 0.000 format.py:1613(_format_strings)\n",
" 3 0.000 0.000 0.000 0.000 base.py:1396(format)\n",
" 2 0.000 0.000 0.000 0.000 common.py:145(is_url)\n",
" 2 0.000 0.000 0.000 0.000 missing.py:564(_array_equivalent_object)\n",
" 2 0.000 0.000 0.000 0.000 concat.py:565(<listcomp>)\n",
" 2 0.000 0.000 0.000 0.000 <string>:1(<lambda>)\n",
" 3 0.000 0.000 0.000 0.000 frame.py:4399(_clear_item_cache)\n",
" 1 0.000 0.000 0.001 0.001 _json.py:1432(_try_convert_dates)\n",
" 1 0.000 0.000 0.000 0.000 construction.py:1068(<listcomp>)\n",
" 18 0.000 0.000 0.000 0.000 {method 'search' of 're.Pattern' objects}\n",
" 14 0.000 0.000 0.000 0.000 format.py:877(<genexpr>)\n",
" 4 0.000 0.000 0.000 0.000 missing.py:642(na_value_for_dtype)\n",
" 1 0.000 0.000 0.000 0.000 managers.py:278(get_dtypes)\n",
" 2 0.000 0.000 0.000 0.000 range.py:996(_getitem_slice)\n",
" 5 0.000 0.000 0.000 0.000 format.py:2024(_has_names)\n",
" 4 0.000 0.000 0.000 0.000 base.py:1751(_get_names)\n",
" 1 0.000 0.000 0.000 0.000 common.py:62(new_method)\n",
" 26 0.000 0.000 0.000 0.000 base.py:7606(<genexpr>)\n",
" 1 0.000 0.000 0.005 0.005 string.py:34(_get_strcols)\n",
" 1 0.000 0.000 0.000 0.000 series.py:6094(_reduce)\n",
" 44 0.000 0.000 0.000 0.000 typing.py:2256(cast)\n",
" 3 0.000 0.000 0.000 0.000 blocks.py:265(make_block_same_class)\n",
" 3 0.000 0.000 0.000 0.000 locale.py:593(getlocale)\n",
" 2 0.000 0.000 0.000 0.000 parse.py:119(_coerce_args)\n",
" 6 0.000 0.000 0.000 0.000 {built-in method builtins.sum}\n",
" 25 0.000 0.000 0.000 0.000 {built-in method builtins.callable}\n",
" 1 0.000 0.000 0.005 0.005 format.py:611(get_strcols)\n",
" 2 0.000 0.000 0.000 0.000 format.py:974(<listcomp>)\n",
" 2 0.000 0.000 0.000 0.000 concat.py:543(_get_sample_object)\n",
" 7 0.000 0.000 0.000 0.000 series.py:784(_references)\n",
" 19 0.000 0.000 0.000 0.000 base.py:1657(name)\n",
" 6 0.000 0.000 0.000 0.000 blocks.py:203(_can_hold_na)\n",
" 6 0.000 0.000 0.000 0.000 __init__.py:225(compile)\n",
" 4 0.000 0.000 0.000 0.000 base.py:448(size)\n",
" 1 0.000 0.000 0.000 0.000 construction.py:1006(convert_object_array)\n",
" 1 0.000 0.000 0.000 0.000 api.py:106(_get_distinct_objs)\n",
" 1 0.000 0.000 0.000 0.000 inference.py:404(is_dataclass)\n",
" 10 0.000 0.000 0.000 0.000 _parser.py:203(isword)\n",
" 7 0.000 0.000 0.000 0.000 inspect.py:292(isclass)\n",
" 1 0.000 0.000 0.000 0.000 base.py:1795(set_names)\n",
" 1 0.000 0.000 0.000 0.000 managers.py:279(<listcomp>)\n",
" 1 0.000 0.000 0.000 0.000 threading.py:1185(is_alive)\n",
" 3 0.000 0.000 0.000 0.000 {built-in method _locale.setlocale}\n",
" 6 0.000 0.000 0.000 0.000 generic.py:6182(<genexpr>)\n",
" 3 0.000 0.000 0.000 0.000 format.py:645(has_index_names)\n",
" 1 0.000 0.000 0.001 0.001 shape_base.py:223(vstack)\n",
" 1 0.000 0.000 0.000 0.000 construction.py:481(<listcomp>)\n",
" 3 0.000 0.000 0.000 0.000 inference.py:105(is_file_like)\n",
" 2 0.000 0.000 0.000 0.000 concat.py:773(_concat_indexes)\n",
" 6 0.000 0.000 0.000 0.000 base.py:6625(_validate_indexer)\n",
" 3 0.000 0.000 0.000 0.000 frame.py:966(shape)\n",
" 3 0.000 0.000 0.000 0.000 format.py:653(show_row_idx_names)\n",
" 2 0.000 0.000 0.000 0.000 managers.py:1726(is_consolidated)\n",
" 1 0.000 0.000 0.000 0.000 arraylike.py:54(__gt__)\n",
" 1 0.000 0.000 0.000 0.000 _json.py:1126(__init__)\n",
" 1 0.000 0.000 0.000 0.000 config.py:469(__init__)\n",
" 1 0.000 0.000 0.000 0.000 nanops.py:389(new_func)\n",
" 1 0.000 0.000 0.000 0.000 contextlib.py:104(__init__)\n",
" 7 0.000 0.000 0.000 0.000 _dtype.py:24(_kind_name)\n",
" 2 0.000 0.000 0.000 0.000 base.py:773(_view)\n",
" 6 0.000 0.000 0.000 0.000 iostream.py:532(_schedule_flush)\n",
" 3 0.000 0.000 0.000 0.000 _strptime.py:26(_getlang)\n",
" 1 0.000 0.000 0.000 0.000 construction.py:950(_validate_or_indexify_columns)\n",
" 1 0.000 0.000 0.000 0.000 base.py:1243(copy)\n",
" 1 0.000 0.000 0.000 0.000 base.py:5458(_concat)\n",
" 9 0.000 0.000 0.000 0.000 common.py:126(_classes_and_not_datetimelike)\n",
" 4 0.000 0.000 0.000 0.000 nanops.py:79(<genexpr>)\n",
" 1 0.000 0.000 0.000 0.000 shape_base.py:81(atleast_2d)\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:221(__init__)\n",
" 1 0.000 0.000 0.000 0.000 {built-in method builtins.sorted}\n",
" 4 0.000 0.000 0.000 0.000 {pandas._libs.lib.maybe_indices_to_slice}\n",
" 1 0.000 0.000 0.001 0.001 <frozen genericpath>:16(exists)\n",
" 1 0.000 0.000 0.000 0.000 api.py:120(_get_combined_index)\n",
" 4 0.000 0.000 0.000 0.000 base.py:675(empty)\n",
" 1 0.000 0.000 0.000 0.000 config.py:477(__enter__)\n",
" 2 0.000 0.000 0.000 0.000 _json.py:1105(__exit__)\n",
" 4 0.000 0.000 0.000 0.000 generic.py:568(_get_block_manager_axis)\n",
" 2 0.000 0.000 0.000 0.000 base.py:4190(_validate_positional_slice)\n",
" 1 0.000 0.000 0.000 0.000 range.py:352(memory_usage)\n",
" 1 0.000 0.000 0.000 0.000 function.py:411(validate_func)\n",
" 8 0.000 0.000 0.000 0.000 common.py:1390(_get_dtype)\n",
" 15 0.000 0.000 0.000 0.000 blocks.py:239(mgr_locs)\n",
" 9 0.000 0.000 0.000 0.000 contextlib.py:428(__init__)\n",
" 1 0.000 0.000 0.000 0.000 string.py:126(<listcomp>)\n",
" 8 0.000 0.000 0.000 0.000 _methods.py:39(_amax)\n",
" 1 0.000 0.000 0.000 0.000 range.py:1030(_cmp_method)\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:395(__init__)\n",
" 9 0.000 0.000 0.000 0.000 series.py:577(_constructor)\n",
" 2 0.000 0.000 0.000 0.000 config.py:215(get_default_val)\n",
" 1 0.000 0.000 0.000 0.000 api.py:72(get_objs_combined_axis)\n",
" 13 0.000 0.000 0.000 0.000 {method 'pop' of 'dict' objects}\n",
" 1 0.000 0.000 0.000 0.000 concat.py:202(_maybe_reindex_columns_na_proxy)\n",
" 3 0.000 0.000 0.000 0.000 locale.py:479(_parse_localename)\n",
" 2 0.000 0.000 0.000 0.000 base.py:5453(<setcomp>)\n",
" 2 0.000 0.000 0.000 0.000 construction.py:196(mgr_to_mgr)\n",
" 9 0.000 0.000 0.000 0.000 contextlib.py:434(__exit__)\n",
" 4 0.000 0.000 0.000 0.000 construction.py:687(_sanitize_non_ordered)\n",
" 3 0.000 0.000 0.000 0.000 _parser.py:189(__next__)\n",
" 9 0.000 0.000 0.000 0.000 concat.py:584(<genexpr>)\n",
" 1 0.000 0.000 0.000 0.000 construction.py:532(treat_as_nested)\n",
" 2 0.000 0.000 0.000 0.000 format.py:657(show_col_idx_names)\n",
" 3 0.000 0.000 0.000 0.000 base.py:791(is_)\n",
" 1 0.000 0.000 0.000 0.000 format.py:751(_adjust_max_rows)\n",
" 1 0.000 0.000 0.000 0.000 generic.py:12070(sum)\n",
" 3 0.000 0.000 0.000 0.000 _strptime.py:565(_strptime_datetime)\n",
" 4 0.000 0.000 0.000 0.000 {built-in method sys.getsizeof}\n",
" 2 0.000 0.000 0.000 0.000 format.py:629(is_truncated)\n",
" 1 0.000 0.000 0.000 0.000 base.py:1754(_set_names)\n",
" 1 0.000 0.000 0.000 0.000 <__array_function__ internals>:177(array_equal)\n",
" 4 0.000 0.000 0.000 0.000 format.py:637(is_truncated_vertically)\n",
" 4 0.000 0.000 0.000 0.000 range.py:347(<genexpr>)\n",
" 4 0.000 0.000 0.000 0.000 managers.py:920(<genexpr>)\n",
" 2 0.000 0.000 0.000 0.000 common.py:521(is_string_dtype)\n",
" 1 0.000 0.000 0.001 0.001 common.py:1141(file_exists)\n",
" 2 0.000 0.000 0.000 0.000 base.py:7607(<listcomp>)\n",
" 2 0.000 0.000 0.000 0.000 generic.py:4314(_set_is_copy)\n",
" 1 0.000 0.000 0.000 0.000 base.py:5153(_get_engine_target)\n",
" 5 0.000 0.000 0.000 0.000 managers.py:896(__init__)\n",
" 1 0.000 0.000 0.000 0.000 concat.py:703(_get_comb_axis)\n",
" 11 0.000 0.000 0.000 0.000 {method 'items' of 'dict' objects}\n",
" 1 0.000 0.000 0.000 0.000 fromnumeric.py:1038(argsort)\n",
" 4 0.000 0.000 0.000 0.000 blocks.py:1016(_slice)\n",
" 1 0.000 0.000 0.000 0.000 contextlib.py:132(__enter__)\n",
" 2 0.000 0.000 0.000 0.000 format.py:649(has_column_names)\n",
" 1 0.000 0.000 0.000 0.000 expressions.py:226(evaluate)\n",
" 1 0.000 0.000 0.000 0.000 common.py:977(is_numeric_v_string_like)\n",
" 1 0.000 0.000 0.000 0.000 config.py:483(__exit__)\n",
" 3 0.000 0.000 0.000 0.000 generic.py:2073(<genexpr>)\n",
" 2 0.000 0.000 0.000 0.000 base.py:782(_rename)\n",
" 1 0.000 0.000 0.000 0.000 threading.py:1118(_wait_for_tstate_lock)\n",
" 3 0.000 0.000 0.000 0.000 nanops.py:72(check)\n",
" 1 0.000 0.000 0.000 0.000 missing.py:131(dispatch_fill_zeros)\n",
" 6 0.000 0.000 0.000 0.000 enum.py:1249(value)\n",
" 4 0.000 0.000 0.000 0.000 datetimes.py:156(should_cache)\n",
" 1 0.000 0.000 0.000 0.000 expressions.py:67(_evaluate_standard)\n",
" 2 0.000 0.000 0.000 0.000 format.py:1179(get_buffer)\n",
" 3 0.000 0.000 0.000 0.000 blocks.py:192(_can_consolidate)\n",
" 1 0.000 0.000 0.000 0.000 iostream.py:127(_event_pipe)\n",
" 1 0.000 0.000 0.000 0.000 range.py:484(_view)\n",
" 4 0.000 0.000 0.000 0.000 generic.py:6177(<genexpr>)\n",
" 1 0.000 0.000 0.000 0.000 <frozen codecs>:309(__init__)\n",
" 1 0.000 0.000 0.000 0.000 {method 'sum' of 'numpy.ndarray' objects}\n",
" 1 0.000 0.000 0.000 0.000 managers.py:2233(<listcomp>)\n",
" 14 0.000 0.000 0.000 0.000 base.py:6612(_maybe_cast_indexer)\n",
" 9 0.000 0.000 0.000 0.000 range.py:377(dtype)\n",
" 1 0.000 0.000 0.000 0.000 common.py:85(consensus_name_attr)\n",
" 1 0.000 0.000 0.000 0.000 _validators.py:450(check_dtype_backend)\n",
" 1 0.000 0.000 0.000 0.000 base.py:459(_engine_type)\n",
" 1 0.000 0.000 0.000 0.000 nanops.py:455(newfunc)\n",
" 1 0.000 0.000 0.001 0.001 <__array_function__ internals>:177(vstack)\n",
" 6 0.000 0.000 0.000 0.000 common.py:1107(<lambda>)\n",
" 1 0.000 0.000 0.000 0.000 {built-in method _codecs.lookup}\n",
" 1 0.000 0.000 0.000 0.000 console.py:54(in_interactive_session)\n",
" 1 0.000 0.000 0.000 0.000 contextlib.py:287(helper)\n",
" 1 0.000 0.000 0.000 0.000 common.py:80(ensure_str)\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:322(weekday)\n",
" 1 0.000 0.000 0.000 0.000 {method 'any' of 'numpy.ndarray' objects}\n",
" 2 0.000 0.000 0.000 0.000 concat.py:689(_get_result_dim)\n",
" 9 0.000 0.000 0.000 0.000 {pandas._libs.lib.item_from_zerodim}\n",
" 7 0.000 0.000 0.000 0.000 managers.py:335(<dictcomp>)\n",
" 4 0.000 0.000 0.000 0.000 config.py:663(_get_registered_option)\n",
" 6 0.000 0.000 0.000 0.000 concat.py:351(__init__)\n",
" 4 0.000 0.000 0.000 0.000 {method 'upper' of 'str' objects}\n",
" 12 0.000 0.000 0.000 0.000 base.py:363(ndim)\n",
" 1 0.000 0.000 0.000 0.000 string.py:22(__init__)\n",
" 11 0.000 0.000 0.000 0.000 {method 'read' of '_io.StringIO' objects}\n",
" 7 0.000 0.000 0.000 0.000 {method 'write' of '_io.StringIO' objects}\n",
" 3 0.000 0.000 0.000 0.000 concat.py:167(<listcomp>)\n",
" 1 0.000 0.000 0.000 0.000 <string>:2(__init__)\n",
" 1 0.000 0.000 0.000 0.000 series.py:6195(sum)\n",
" 1 0.000 0.000 0.000 0.000 <__array_function__ internals>:177(argsort)\n",
" 2 0.000 0.000 0.000 0.000 {built-in method builtins.next}\n",
" 1 0.000 0.000 0.000 0.000 nanops.py:253(_get_values)\n",
" 1 0.000 0.000 0.000 0.000 base.py:1900(rename)\n",
" 3 0.000 0.000 0.000 0.000 range.py:281(start)\n",
" 2 0.000 0.000 0.000 0.000 base.py:346(shape)\n",
" 1 0.000 0.000 0.000 0.000 nanops.py:324(_get_dtype_max)\n",
" 1 0.000 0.000 0.000 0.000 {method 'fill' of 'numpy.ndarray' objects}\n",
" 1 0.000 0.000 0.000 0.000 concat.py:303(<listcomp>)\n",
" 2 0.000 0.000 0.000 0.000 generic.py:638(_info_axis)\n",
" 1 0.000 0.000 0.000 0.000 contextlib.py:141(__exit__)\n",
" 1 0.000 0.000 0.000 0.000 format.py:641(dimensions_info)\n",
" 1 0.000 0.000 0.000 0.000 generic.py:2015(empty)\n",
" 1 0.000 0.000 0.000 0.000 base.py:5462(<listcomp>)\n",
" 1 0.000 0.000 0.000 0.000 concat.py:747(<listcomp>)\n",
" 1 0.000 0.000 0.000 0.000 dataclasses.py:1256(is_dataclass)\n",
" 4 0.000 0.000 0.000 0.000 {pandas._libs.algos.ensure_object}\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:208(isnum)\n",
" 1 0.000 0.000 0.000 0.000 common.py:1107(_maybe_memory_map)\n",
" 1 0.000 0.000 0.000 0.000 api.py:102(<listcomp>)\n",
" 6 0.000 0.000 0.000 0.000 fromnumeric.py:2427(_all_dispatcher)\n",
" 8 0.000 0.000 0.000 0.000 multiarray.py:152(concatenate)\n",
" 10 0.000 0.000 0.000 0.000 {method 'isalpha' of 'str' objects}\n",
" 2 0.000 0.000 0.000 0.000 construction.py:916(<genexpr>)\n",
" 1 0.000 0.000 0.000 0.000 frame.py:1114(_info_repr)\n",
" 1 0.000 0.000 0.000 0.000 {method 'acquire' of '_thread.lock' objects}\n",
" 2 0.000 0.000 0.000 0.000 config.py:897(is_nonnegative_int)\n",
" 1 0.000 0.000 0.000 0.000 format.py:732(_calc_max_rows_fitted)\n",
" 6 0.000 0.000 0.000 0.000 common.py:175(<genexpr>)\n",
" 2 0.000 0.000 0.000 0.000 common.py:171(not_none)\n",
" 1 0.000 0.000 0.000 0.000 shape_base.py:218(_vhstack_dispatcher)\n",
" 1 0.000 0.000 0.000 0.000 generic.py:1948(__iter__)\n",
" 1 0.000 0.000 0.000 0.000 <__array_function__ internals>:177(atleast_2d)\n",
" 1 0.000 0.000 0.000 0.000 range.py:946(<listcomp>)\n",
" 6 0.000 0.000 0.000 0.000 {method '__exit__' of '_thread.RLock' objects}\n",
" 3 0.000 0.000 0.000 0.000 {method 'clear' of 'dict' objects}\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:342(ampm)\n",
" 2 0.000 0.000 0.000 0.000 series.py:3169(<genexpr>)\n",
" 1 0.000 0.000 0.000 0.000 expressions.py:76(_can_use_numexpr)\n",
" 1 0.000 0.000 0.000 0.000 common.py:1025(needs_i8_conversion)\n",
" 1 0.000 0.000 0.000 0.000 format.py:721(_calc_max_cols_fitted)\n",
" 9 0.000 0.000 0.000 0.000 contextlib.py:431(__enter__)\n",
" 3 0.000 0.000 0.000 0.000 range.py:316(step)\n",
" 1 0.000 0.000 0.000 0.000 _methods.py:55(_any)\n",
" 6 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_int_or_none}\n",
" 7 0.000 0.000 0.000 0.000 _json.py:1401(<lambda>)\n",
" 1 0.000 0.000 0.000 0.000 config.py:478(<listcomp>)\n",
" 1 0.000 0.000 0.000 0.000 concat.py:631(<listcomp>)\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:329(month)\n",
" 3 0.000 0.000 0.000 0.000 range.py:911(<genexpr>)\n",
" 1 0.000 0.000 0.000 0.000 format.py:623(should_show_dimensions)\n",
" 2 0.000 0.000 0.000 0.000 base.py:539(<genexpr>)\n",
" 7 0.000 0.000 0.000 0.000 series.py:1381(_clear_item_cache)\n",
" 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n",
" 2 0.000 0.000 0.000 0.000 format.py:765(_is_in_terminal)\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:319(jump)\n",
" 5 0.000 0.000 0.000 0.000 {method 'add' of 'set' objects}\n",
" 3 0.000 0.000 0.000 0.000 frame.py:637(_constructor)\n",
" 2 0.000 0.000 0.000 0.000 concat.py:73(<listcomp>)\n",
" 3 0.000 0.000 0.000 0.000 {method '__exit__' of '_thread.lock' objects}\n",
" 1 0.000 0.000 0.000 0.000 concat.py:720(<listcomp>)\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:213(isspace)\n",
" 4 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_bool}\n",
" 1 0.000 0.000 0.000 0.000 format.py:689(_initialize_columns)\n",
" 1 0.000 0.000 0.000 0.000 {built-in method pandas._libs.lib.is_interval}\n",
" 5 0.000 0.000 0.000 0.000 {built-in method posix.fspath}\n",
" 2 0.000 0.000 0.000 0.000 {pandas._libs.lib.dtypes_all_equal}\n",
" 1 0.000 0.000 0.000 0.000 common.py:503(get_compression_method)\n",
" 1 0.000 0.000 0.000 0.000 {built-in method builtins.min}\n",
" 1 0.000 0.000 0.000 0.000 _methods.py:47(_sum)\n",
" 1 0.000 0.000 0.000 0.000 dispatch.py:17(should_extension_dispatch)\n",
" 1 0.000 0.000 0.000 0.000 {method 'getvalue' of '_io.StringIO' objects}\n",
" 1 0.000 0.000 0.000 0.000 format.py:665(_initialize_sparsify)\n",
" 1 0.000 0.000 0.000 0.000 range.py:922(<listcomp>)\n",
" 1 0.000 0.000 0.000 0.000 threading.py:568(is_set)\n",
" 1 0.000 0.000 0.000 0.000 managers.py:536(nblocks)\n",
" 1 0.000 0.000 0.000 0.000 shape_base.py:207(_arrays_for_stack_dispatcher)\n",
" 1 0.000 0.000 0.000 0.000 inference.py:306(is_named_tuple)\n",
" 1 0.000 0.000 0.000 0.000 string.py:63(_need_to_wrap_around)\n",
" 1 0.000 0.000 0.000 0.000 _validators.py:226(validate_bool_kwarg)\n",
" 2 0.000 0.000 0.000 0.000 base.py:974(dtype)\n",
" 3 0.000 0.000 0.000 0.000 range.py:299(stop)\n",
" 2 0.000 0.000 0.000 0.000 managers.py:235(items)\n",
" 1 0.000 0.000 0.000 0.000 {built-in method _codecs.lookup_error}\n",
" 2 0.000 0.000 0.000 0.000 indexing.py:2665(need_slice)\n",
" 3 0.000 0.000 0.000 0.000 {built-in method builtins.id}\n",
" 2 0.000 0.000 0.000 0.000 format.py:959(<dictcomp>)\n",
" 1 0.000 0.000 0.000 0.000 managers.py:2242(<listcomp>)\n",
" 2 0.000 0.000 0.000 0.000 concat.py:766(_maybe_check_integrity)\n",
" 1 0.000 0.000 0.000 0.000 <frozen codecs>:260(__init__)\n",
" 1 0.000 0.000 0.000 0.000 nanops.py:209(_maybe_get_mask)\n",
" 1 0.000 0.000 0.000 0.000 {method 'pop' of 'list' objects}\n",
" 1 0.000 0.000 0.000 0.000 base.py:2756(_is_multi)\n",
" 1 0.000 0.000 0.000 0.000 function.py:64(__call__)\n",
" 1 0.000 0.000 0.000 0.000 format.py:697(_initialize_colspace)\n",
" 1 0.000 0.000 0.000 0.000 {method 'append' of 'collections.deque' objects}\n",
" 1 0.000 0.000 0.000 0.000 {method 'isdigit' of 'str' objects}\n",
" 2 0.000 0.000 0.000 0.000 {built-in method numpy.asanyarray}\n",
" 1 0.000 0.000 0.000 0.000 {method 'isspace' of 'str' objects}\n",
" 1 0.000 0.000 0.000 0.000 nanops.py:1491(_maybe_null_out)\n",
" 1 0.000 0.000 0.000 0.000 fromnumeric.py:1034(_argsort_dispatcher)\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:1056(_could_be_tzname)\n",
" 1 0.000 0.000 0.000 0.000 numeric.py:2403(_array_equal_dispatcher)\n",
" 1 0.000 0.000 0.000 0.000 {method 'values' of 'dict' objects}\n",
" 2 0.000 0.000 0.000 0.000 {function FrozenList.__getitem__ at 0x7f0665c34860}\n",
" 1 0.000 0.000 0.000 0.000 _parser.py:186(__iter__)\n",
" 2 0.000 0.000 0.000 0.000 parse.py:108(_noop)\n",
" 1 0.000 0.000 0.000 0.000 {method 'reverse' of 'list' objects}\n",
" 2 0.000 0.000 0.000 0.000 _json.py:1102(__enter__)\n",
" 2 0.000 0.000 0.000 0.000 base.py:1954(nlevels)\n",
" 1 0.000 0.000 0.000 0.000 interactiveshell.py:637(get_ipython)\n",
" 1 0.000 0.000 0.000 0.000 range.py:228(_constructor)\n",
" 1 0.000 0.000 0.000 0.000 format.py:670(_initialize_formatters)\n",
" 1 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_period}\n",
" 1 0.000 0.000 0.000 0.000 shape_base.py:77(_atleast_2d_dispatcher)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%prun\n",
"test_pandas()"
]
},
{
"cell_type": "markdown",
"id": "18519e3f-6d5e-477a-a3e5-1fd0e0b30fcc",
"metadata": {},
"source": [
"# Results\n",
"\n",
"Polars and Pandas both processed the same data (8000 rows, categorical data represented as strings).\n",
"\n",
"\n",
"## Versions\n",
"\n",
"\n",
"* Pandas: 2.1.4\n",
"* Polars: 0.20.26\n",
"\n",
"## Memory usage comparison\n",
"\n",
"File on disk: 6,0 MB (du -sh), 8000 rows, 7 columns. \n",
"\n",
"* Polars: 4,76 MB\n",
"* Pandas: 7,56 MB\n",
"\n",
"-> Polars was more memory efficient: ~ 1,6 times less memory\n",
"\n",
"\n",
"## Profile comparison\n",
"\n",
"* Polars: 256 function calls (253 primitive calls) in 0.020 seconds\n",
"* Pandas: 46681 function calls (46472 primitive calls) in 0.113 seconds\n",
"\n",
"-> Polars was ~ 5,6 times faster and needed ~ 180x less function and primitive calls. \n",
"\n",
"\n",
"## Conclusion\n",
"\n",
"Polars should be used whenever possible."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bdbf106d-4117-491b-9773-85dcd9d5914c",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}