549 lines
56 KiB
Plaintext
549 lines
56 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 72,
|
||
"id": "initial_id",
|
||
"metadata": {
|
||
"collapsed": true,
|
||
"ExecuteTime": {
|
||
"end_time": "2023-12-27T10:01:41.059498Z",
|
||
"start_time": "2023-12-27T10:01:40.954874Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": " id item_id name \\\n0 234878 LPASU00715 ASUS TUF F15 Gaming Laptop 15.6\" FHD Intel i9-... \n1 239821 LPACE00967 Acer Nitro 5 Gaming Laptop 15.6\" FHD Intel i9-... \n2 241721 LPLEN03469 Lenovo Legion Pro 5i Gaming Laptop 16\" QHD+ In... \n3 245321 LPHEW02100 HP 15-fd0030ca Consumer Laptop 15.6\" FHD Intel... \n4 245308 LPGIG00162 GIGABYTE G5 KF Gaming Laptop 15.6\" FHD 144Hz I... \n5 230569 LPHEW01946 HP ProBook 450 G9 15.6\" Business Notebook Inte... \n6 241145 LPMSI00572 MSI Thin GF63 Gaming Laptop 15.6\" FHD Intel i5... \n7 243411 LPLEN03502 LENOVO IdeaPad Slim 3 Consumer Laptop 15.6\" AM... \n8 243633 LPACE00980 ACER Nitro 5 Gaming Laptop 15.6\" 144Hz AMD Ryz... \n9 240323 LPHEW02049 HP EliteBook 840 G2 Business Notebook 14\" Touc... \n\n brand categories price \\\n0 ASUS ['Laptops, Tablet', None, None, None] 1499.0 \n1 ACER ['Laptops, Tablet', None, None, None] 1299.0 \n2 LENOVO ['Laptops, Tablet', None, None, None] 1499.0 \n3 HP ['Laptops, Tablet', None, None, None] 699.0 \n4 GIGABYTE ['Laptops, Tablet', None, None, None] 1099.0 \n5 HP ['Laptops, Tablet', None, None, None] 899.0 \n6 MSI ['Laptops, Tablet', None, None, None] 699.0 \n7 LENOVO ['Laptops, Tablet', None, None, None] 699.0 \n8 ACER ['Laptops, Tablet', None, None, None] 999.0 \n9 HP ['Laptops, Tablet', None, None, None] 269.0 \n\n specs \\\n0 {'Refresh Rate': '144Hz', 'GPU': 'GeForce RTX ... \n1 {'GPU': 'GeForce RTX 4060', 'Maximum Resolutio... \n2 {'GPU': 'GeForce RTX 4060', 'Maximum Resolutio... \n3 {'GPU': 'Intel Iris Xe', 'Maximum Resolution':... \n4 {'GPU': 'GeForce RTX 4060', 'Maximum Resolutio... \n5 {'General Information<HDRBR>Manufacturer': 'HP... \n6 {'GPU': 'GeForce RTX 2050', 'Maximum Resolutio... \n7 {'GPU': 'AMD Radeon 610M', 'Maximum Resolution... \n8 {'GPU': 'GeForce RTX 3060', 'Maximum Resolutio... \n9 {'Memory': '16GB', 'Storage Type': 'SSD', 'CPU... \n\n gpt_specs GPU \\\n0 {'Brand': 'ASUS', 'Model': 'TUF F15', 'Model C... GeForce RTX 4060 \n1 {'Brand': 'Acer', 'Model': 'Nitro 5', 'Model C... GeForce RTX 4060 \n2 {'Brand': 'Lenovo', 'Model': 'Legion Pro 5i', ... GeForce RTX 4060 \n3 {'Brand': 'HP', 'Model': '15-fd0030ca', 'Model... None \n4 {'Brand': 'GIGABYTE', 'Model': 'G5 KF', 'Model... GeForce RTX 4060 \n5 {'Brand': 'HP', 'Model': 'ProBook 450 G9', 'CP... None \n6 {'Brand': 'MSI', 'Model': 'Thin GF63', 'CPU': ... GeForce RTX 2050 \n7 {'Brand': 'LENOVO', 'Model': 'IdeaPad Slim 3',... None \n8 {'Brand': 'ACER', 'Model': 'Nitro 5', 'CPU': '... GeForce RTX 3060 \n9 {'Brand': 'HP', 'Model': 'EliteBook 840 G2', '... None \n\n CPU \n0 Intel i9-13900H \n1 Intel i9-12900H \n2 Intel i7-13700HX \n3 Intel i5-1340P \n4 Intel i7-12650H \n5 Intel i5-1235U \n6 Intel i5-12450H \n7 AMD Ryzen 5 7520U \n8 AMD Ryzen 7 5800H \n9 Core i5-5300U ",
|
||
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>id</th>\n <th>item_id</th>\n <th>name</th>\n <th>brand</th>\n <th>categories</th>\n <th>price</th>\n <th>specs</th>\n <th>gpt_specs</th>\n <th>GPU</th>\n <th>CPU</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>234878</td>\n <td>LPASU00715</td>\n <td>ASUS TUF F15 Gaming Laptop 15.6\" FHD Intel i9-...</td>\n <td>ASUS</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1499.0</td>\n <td>{'Refresh Rate': '144Hz', 'GPU': 'GeForce RTX ...</td>\n <td>{'Brand': 'ASUS', 'Model': 'TUF F15', 'Model C...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i9-13900H</td>\n </tr>\n <tr>\n <th>1</th>\n <td>239821</td>\n <td>LPACE00967</td>\n <td>Acer Nitro 5 Gaming Laptop 15.6\" FHD Intel i9-...</td>\n <td>ACER</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1299.0</td>\n <td>{'GPU': 'GeForce RTX 4060', 'Maximum Resolutio...</td>\n <td>{'Brand': 'Acer', 'Model': 'Nitro 5', 'Model C...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i9-12900H</td>\n </tr>\n <tr>\n <th>2</th>\n <td>241721</td>\n <td>LPLEN03469</td>\n <td>Lenovo Legion Pro 5i Gaming Laptop 16\" QHD+ In...</td>\n <td>LENOVO</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1499.0</td>\n <td>{'GPU': 'GeForce RTX 4060', 'Maximum Resolutio...</td>\n <td>{'Brand': 'Lenovo', 'Model': 'Legion Pro 5i', ...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i7-13700HX</td>\n </tr>\n <tr>\n <th>3</th>\n <td>245321</td>\n <td>LPHEW02100</td>\n <td>HP 15-fd0030ca Consumer Laptop 15.6\" FHD Intel...</td>\n <td>HP</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>699.0</td>\n <td>{'GPU': 'Intel Iris Xe', 'Maximum Resolution':...</td>\n <td>{'Brand': 'HP', 'Model': '15-fd0030ca', 'Model...</td>\n <td>None</td>\n <td>Intel i5-1340P</td>\n </tr>\n <tr>\n <th>4</th>\n <td>245308</td>\n <td>LPGIG00162</td>\n <td>GIGABYTE G5 KF Gaming Laptop 15.6\" FHD 144Hz I...</td>\n <td>GIGABYTE</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1099.0</td>\n <td>{'GPU': 'GeForce RTX 4060', 'Maximum Resolutio...</td>\n <td>{'Brand': 'GIGABYTE', 'Model': 'G5 KF', 'Model...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i7-12650H</td>\n </tr>\n <tr>\n <th>5</th>\n <td>230569</td>\n <td>LPHEW01946</td>\n <td>HP ProBook 450 G9 15.6\" Business Notebook Inte...</td>\n <td>HP</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>899.0</td>\n <td>{'General Information<HDRBR>Manufacturer': 'HP...</td>\n <td>{'Brand': 'HP', 'Model': 'ProBook 450 G9', 'CP...</td>\n <td>None</td>\n <td>Intel i5-1235U</td>\n </tr>\n <tr>\n <th>6</th>\n <td>241145</td>\n <td>LPMSI00572</td>\n <td>MSI Thin GF63 Gaming Laptop 15.6\" FHD Intel i5...</td>\n <td>MSI</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>699.0</td>\n <td>{'GPU': 'GeForce RTX 2050', 'Maximum Resolutio...</td>\n <td>{'Brand': 'MSI', 'Model': 'Thin GF63', 'CPU': ...</td>\n <td>GeForce RTX 2050</td>\n <td>Intel i5-12450H</td>\n </tr>\n <tr>\n <th>7</th>\n <td>243411</td>\n <td>LPLEN03502</td>\n <td>LENOVO IdeaPad Slim 3 Consumer Laptop 15.6\" AM...</td>\n <td>LENOVO</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>699.0</td>\n <td>{'GPU': 'AMD Radeon 610M', 'Maximum Resolution...</td>\n <td>{'Brand': 'LENOVO', 'Model': 'IdeaPad Slim 3',...</td>\n <td>None</td>\n <td>AMD Ryzen 5 7520U</td>\n </tr>\n <tr>\n <th>8</th>\n <td>243633</td>\n <td>LPACE00980</td>\n <td>ACER Nitro 5 Gaming Laptop 15.6\" 144Hz AMD Ryz...</td>\n <td>ACER</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>999.0</td>\n <td>{'GPU': 'GeForce RTX 3060', 'Maximum Resolutio...</td>\n <td>{'Brand': 'ACER', 'Model': 'Nitro 5', 'CPU': '...</td>\n <td>GeForce RTX 3060</td>\n <td>AMD Ryzen 7 5800H</td>\n </tr>\n <tr>\n <th>9</th>\n <td>240323</td>\n <td>LPHEW02049</td>\n <td>HP EliteBook 840 G2 Business Notebook 14\" Touc...</td>\n <td>HP</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>269.0</td>\n <td>{'Memory': '16GB', 'Storage Type': 'SSD', 'CPU...</td>\n <td>{'Brand': 'HP', 'Model': 'EliteBook 840 G2', '...</td>\n <td>None</td>\n <td>Core i5-5300U</td>\n </tr>\n </tbody>\n</table>\n</div>"
|
||
},
|
||
"execution_count": 72,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import json\n",
|
||
"import re\n",
|
||
"from typing import NamedTuple\n",
|
||
"\n",
|
||
"import pandas as pd\n",
|
||
"\n",
|
||
"laptops = pd.read_csv('data/canada_computers_laptops_gpt.csv')\n",
|
||
"\n",
|
||
"# Assign \"gpu\" column based on specs['GPU']\n",
|
||
"laptops['specs'] = laptops['specs'].apply(lambda x: eval(x))\n",
|
||
"laptops['gpt_specs'] = laptops['gpt_specs'].apply(lambda x: eval(x))\n",
|
||
"laptops['GPU'] = laptops['gpt_specs'].apply(lambda x: x['GPU'] if 'GPU' in x else None)\n",
|
||
"laptops['CPU'] = laptops['gpt_specs'].apply(lambda x: x['CPU'] if 'CPU' in x else None)\n",
|
||
"laptops.head(10)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 73,
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": "12012"
|
||
},
|
||
"execution_count": 73,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import csv\n",
|
||
"\n",
|
||
"# cpu_records = list(csv.DictReader(open('data/notebookcheck/mobile-cpu.csv', 'r', encoding='utf-8')))\n",
|
||
"# cpu_bench = {k['Model']: k['Perf. Rating'].replace(\"~\", \"\") for k in cpu_records}\n",
|
||
"\n",
|
||
"cpu_bench = pd.read_csv('data/passmark/cpu.csv')\n",
|
||
"cpu_bench = {k['name']: k['passmark'] for k in cpu_bench.to_dict('records')}\n",
|
||
"\n",
|
||
"def norm_name_cpu(name: str) -> str:\n",
|
||
" return (name.lower().strip().replace(\"_\", \"-\").replace(\"-\", \" \")\n",
|
||
" .replace(\"intel core\", \"intel\")\n",
|
||
" .replace(\"amd ryzen\", \"ryzen\")\n",
|
||
" )\n",
|
||
"\n",
|
||
"cpu_bench = {norm_name_cpu(k.split(\"@\", 1)[0]): v for k, v in cpu_bench.items()}\n",
|
||
"cpu_bench['intel i7 10750h']"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2023-12-27T10:01:41.080539Z",
|
||
"start_time": "2023-12-27T10:01:41.053141Z"
|
||
}
|
||
},
|
||
"id": "5a1179b36ed2adbb"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 74,
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"CPU not found\n",
|
||
"CPU intel pentium silver not found\n",
|
||
"CPU ryzen 3 3720u not found\n",
|
||
"CPU intel i7 1335u not found\n",
|
||
"CPU intel i5 13th gen not found\n",
|
||
"CPU mediatek kompanio 520 not found\n",
|
||
"CPU intel ci3 1115g4 not found\n",
|
||
"CPU core not found\n",
|
||
"CPU intel pentium silver not found\n",
|
||
"CPU intel i7 12th gen not found\n",
|
||
"CPU intel i7 11th gen not found\n",
|
||
"CPU intel i5 10th gen, not found\n",
|
||
"CPU intel pentium gold 4425y not found\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": " id item_id name \\\n0 234878 LPASU00715 ASUS TUF F15 Gaming Laptop 15.6\" FHD Intel i9-... \n1 239821 LPACE00967 Acer Nitro 5 Gaming Laptop 15.6\" FHD Intel i9-... \n2 241721 LPLEN03469 Lenovo Legion Pro 5i Gaming Laptop 16\" QHD+ In... \n3 245321 LPHEW02100 HP 15-fd0030ca Consumer Laptop 15.6\" FHD Intel... \n4 245308 LPGIG00162 GIGABYTE G5 KF Gaming Laptop 15.6\" FHD 144Hz I... \n\n brand categories price \\\n0 ASUS ['Laptops, Tablet', None, None, None] 1499.0 \n1 ACER ['Laptops, Tablet', None, None, None] 1299.0 \n2 LENOVO ['Laptops, Tablet', None, None, None] 1499.0 \n3 HP ['Laptops, Tablet', None, None, None] 699.0 \n4 GIGABYTE ['Laptops, Tablet', None, None, None] 1099.0 \n\n specs \\\n0 {'Refresh Rate': '144Hz', 'GPU': 'GeForce RTX ... \n1 {'GPU': 'GeForce RTX 4060', 'Maximum Resolutio... \n2 {'GPU': 'GeForce RTX 4060', 'Maximum Resolutio... \n3 {'GPU': 'Intel Iris Xe', 'Maximum Resolution':... \n4 {'GPU': 'GeForce RTX 4060', 'Maximum Resolutio... \n\n gpt_specs GPU \\\n0 {'Brand': 'ASUS', 'Model': 'TUF F15', 'Model C... GeForce RTX 4060 \n1 {'Brand': 'Acer', 'Model': 'Nitro 5', 'Model C... GeForce RTX 4060 \n2 {'Brand': 'Lenovo', 'Model': 'Legion Pro 5i', ... GeForce RTX 4060 \n3 {'Brand': 'HP', 'Model': '15-fd0030ca', 'Model... None \n4 {'Brand': 'GIGABYTE', 'Model': 'G5 KF', 'Model... GeForce RTX 4060 \n\n CPU cpu_bench \n0 Intel i9-13900H 29687.0 \n1 Intel i9-12900H 28524.0 \n2 Intel i7-13700HX 34110.0 \n3 Intel i5-1340P 20204.0 \n4 Intel i7-12650H 23281.0 ",
|
||
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>id</th>\n <th>item_id</th>\n <th>name</th>\n <th>brand</th>\n <th>categories</th>\n <th>price</th>\n <th>specs</th>\n <th>gpt_specs</th>\n <th>GPU</th>\n <th>CPU</th>\n <th>cpu_bench</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>234878</td>\n <td>LPASU00715</td>\n <td>ASUS TUF F15 Gaming Laptop 15.6\" FHD Intel i9-...</td>\n <td>ASUS</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1499.0</td>\n <td>{'Refresh Rate': '144Hz', 'GPU': 'GeForce RTX ...</td>\n <td>{'Brand': 'ASUS', 'Model': 'TUF F15', 'Model C...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i9-13900H</td>\n <td>29687.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>239821</td>\n <td>LPACE00967</td>\n <td>Acer Nitro 5 Gaming Laptop 15.6\" FHD Intel i9-...</td>\n <td>ACER</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1299.0</td>\n <td>{'GPU': 'GeForce RTX 4060', 'Maximum Resolutio...</td>\n <td>{'Brand': 'Acer', 'Model': 'Nitro 5', 'Model C...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i9-12900H</td>\n <td>28524.0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>241721</td>\n <td>LPLEN03469</td>\n <td>Lenovo Legion Pro 5i Gaming Laptop 16\" QHD+ In...</td>\n <td>LENOVO</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1499.0</td>\n <td>{'GPU': 'GeForce RTX 4060', 'Maximum Resolutio...</td>\n <td>{'Brand': 'Lenovo', 'Model': 'Legion Pro 5i', ...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i7-13700HX</td>\n <td>34110.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td>245321</td>\n <td>LPHEW02100</td>\n <td>HP 15-fd0030ca Consumer Laptop 15.6\" FHD Intel...</td>\n <td>HP</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>699.0</td>\n <td>{'GPU': 'Intel Iris Xe', 'Maximum Resolution':...</td>\n <td>{'Brand': 'HP', 'Model': '15-fd0030ca', 'Model...</td>\n <td>None</td>\n <td>Intel i5-1340P</td>\n <td>20204.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>245308</td>\n <td>LPGIG00162</td>\n <td>GIGABYTE G5 KF Gaming Laptop 15.6\" FHD 144Hz I...</td>\n <td>GIGABYTE</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1099.0</td>\n <td>{'GPU': 'GeForce RTX 4060', 'Maximum Resolutio...</td>\n <td>{'Brand': 'GIGABYTE', 'Model': 'G5 KF', 'Model...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i7-12650H</td>\n <td>23281.0</td>\n </tr>\n </tbody>\n</table>\n</div>"
|
||
},
|
||
"execution_count": 74,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Match laptop cpu with cpu benchmark entries\n",
|
||
"def match_cpu(cpu: str, cpu_bench=cpu_bench):\n",
|
||
" if cpu is None:\n",
|
||
" return None\n",
|
||
" cpu = norm_name_cpu(cpu.split(\"@\", 1)[0])\n",
|
||
" cpu = (cpu\n",
|
||
" .replace(\"core i\", \"intel i\")\n",
|
||
" .replace(\"amd 7\", \"ryzen 3 \")\n",
|
||
" .replace(\"processor\", \"\")\n",
|
||
" .replace(\"evo\", \"\")\n",
|
||
" .replace(\"ryzen r\", \"ryzen \")\n",
|
||
" )\n",
|
||
" while \" \" in cpu:\n",
|
||
" cpu = cpu.replace(\" \", \" \")\n",
|
||
" if any(x in cpu for x in [\"i3\", \"i5\", \"i7\", \"i9\"]) and \"intel\" not in cpu:\n",
|
||
" cpu = \"intel \" + cpu\n",
|
||
" if cpu.startswith('mt'):\n",
|
||
" cpu = \"mediatek \" + cpu\n",
|
||
" # Strip ()\n",
|
||
" cpu = re.sub(r'\\([^)]*\\)', '', cpu).strip()\n",
|
||
" while \" \" in cpu:\n",
|
||
" cpu = cpu.replace(\" \", \" \")\n",
|
||
" # Remove duplicate words\n",
|
||
" for dup in ['i3', 'i5', 'i7', 'i9']:\n",
|
||
" if f\"{dup} {dup}\" in cpu:\n",
|
||
" cpu = cpu.replace(f\"{dup} {dup}\", dup)\n",
|
||
" # Max 4 words\n",
|
||
" cpu = \" \".join(cpu.split(\" \")[:4])\n",
|
||
" for remove in ['octa', 'hexa', 'quad', 'arm', 'cortex']:\n",
|
||
" cpu = cpu.replace(remove, \"\")\n",
|
||
" cpu = cpu.strip()\n",
|
||
" \n",
|
||
" if cpu in cpu_bench:\n",
|
||
" return cpu_bench[cpu]\n",
|
||
" elif cpu + \"u\" in cpu_bench:\n",
|
||
" return cpu_bench[cpu + 'u']\n",
|
||
" else:\n",
|
||
" print(f\"CPU {cpu} not found\")\n",
|
||
" return None\n",
|
||
" \n",
|
||
"laptops['cpu_bench'] = laptops['CPU'].apply(match_cpu)\n",
|
||
"laptops.head()"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2023-12-27T10:01:41.178865Z",
|
||
"start_time": "2023-12-27T10:01:41.095428Z"
|
||
}
|
||
},
|
||
"id": "80eb0743d22520e6"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 75,
|
||
"outputs": [],
|
||
"source": [
|
||
"# from pathlib import Path\n",
|
||
"# import json\n",
|
||
"# \n",
|
||
"# gpu_dicts = pd.read_csv('data/gpu.csv').to_dict('records')\n",
|
||
"# print(gpu_dicts[0])\n",
|
||
"# \n",
|
||
"# # Exclude non-mobile GPUs from meta\n",
|
||
"# gpu_info = json.loads(Path('data/gpu_info.json').read_text())\n",
|
||
"# gpu_info = {id: v[1] for id, v in gpu_info.items()}\n",
|
||
"# gpu_cat = {id: v.get(\"Videocard Category\") for id, v in gpu_info.items()}\n",
|
||
"# print(set(gpu_cat.values()))\n",
|
||
"# gpu_dicts = [k for k in gpu_dicts if gpu_cat[k['id']] not in {\"Workstation\", \"Desktop\"}]\n",
|
||
"# \n",
|
||
"# # Parse gpu_bench\n",
|
||
"# gpu_bench = {k['name']: k['passmark'] for k in gpu_dicts}\n",
|
||
"# \n",
|
||
"# # Exclude dual\n",
|
||
"# gpu_bench = {k: v for k, v in gpu_bench.items() if \"dual\" not in k.lower()}\n",
|
||
"# \n",
|
||
"# def norm_name_gpu(name: str) -> str:\n",
|
||
"# return (name.lower().strip().replace(\"_\", \"-\").replace(\"-\", \" \")\n",
|
||
"# .replace(\"geforce\", \"nvidia\")\n",
|
||
"# .replace(\"nvidia nvidia\", \"nvidia\")\n",
|
||
"# .replace(\"rtx\", \"nvidia rtx\")\n",
|
||
"# .replace(\"gtx\", \"nvidia gtx\")\n",
|
||
"# .replace(\"nvidia nvidia\", \"nvidia\")\n",
|
||
"# .replace(\" laptop gpu\", \" (mobile)\")\n",
|
||
"# .replace(\" \", \" \")\n",
|
||
"# .replace(\" graphics\", \"\")\n",
|
||
"# )\n",
|
||
"# \n",
|
||
"# gpu_bench = {norm_name_gpu(k): v for k, v in gpu_bench.items()}\n",
|
||
"# # Exclude non-mobile GPUs for Nvidia\n",
|
||
"# gpu_bench = {k: v for k, v in gpu_bench.items() if not k.startswith('nvidia') or 'm' in k or 'laptop' in k or '2050' in k}\n",
|
||
"# gpu_bench\n"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2023-12-27T10:01:41.179185Z",
|
||
"start_time": "2023-12-27T10:01:41.107014Z"
|
||
}
|
||
},
|
||
"id": "6a6a1826c823c7df"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 76,
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": "{'amd firepro m2000': 4.3,\n 'amd firepro m3900': 4.3,\n 'amd firepro m4000': 6.6,\n 'amd firepro m4100': 4.0,\n 'amd firepro m5100': 8.3,\n 'amd firepro m5950': 6.3,\n 'amd firepro m6000': 10.2,\n 'amd firepro m6100': 12.0,\n 'amd firepro m8900': 24.6,\n 'amd firepro w4170m': 6.7,\n 'amd firepro w4190m': 5.7,\n 'amd firepro w5130m': 7.0,\n 'amd firepro w5170m': 8.1,\n 'amd firepro w7170m': 16.5,\n 'amd 520': 3.8,\n 'amd 530': 4.6,\n 'amd 540x': 6.6,\n 'amd 610m': 4.6,\n 'amd 620': 3.3,\n 'amd 660m': 13.6,\n 'amd 680m': 18.8,\n 'amd 760m': 17.2,\n 'amd 780m': 20.1,\n 'amd hd 6250': 1.5,\n 'amd hd 6290': 0.8,\n 'amd hd 6310': 3.0,\n 'amd hd 6320': 1.4,\n 'amd hd 6370m': 9.5,\n 'amd hd 6380g': 3.1,\n 'amd hd 6450m': 2.5,\n 'amd hd 6470m': 9.0,\n 'amd hd 6480g': 1.8,\n 'amd hd 6490m': 10.9,\n 'amd hd 6520g': 2.1,\n 'amd hd 6530m': 6.7,\n 'amd hd 6550m': 11.0,\n 'amd hd 6570m': 4.8,\n 'amd hd 6620g': 5.6,\n 'amd hd 6630m': 4.2,\n 'amd hd 6650m': 13.6,\n 'amd hd 6730m': 5.0,\n 'amd hd 6750m': 15.2,\n 'amd hd 6770m': 16.5,\n 'amd hd 6850m': 14.3,\n 'amd hd 6870m': 21.2,\n 'amd hd 6950m': 9.4,\n 'amd hd 6970m': 10.3,\n 'amd hd 6990m': 24.7,\n 'amd hd 7290': 0.8,\n 'amd hd 7310': 1.6,\n 'amd hd 7340': 2.1,\n 'amd hd 7400g': 1.5,\n 'amd hd 7420g': 1.5,\n 'amd hd 7450m': 2.6,\n 'amd hd 7470m': 1.8,\n 'amd hd 7500g': 2.0,\n 'amd hd 7520g': 2.3,\n 'amd hd 7550m': 4.6,\n 'amd hd 7570m': 3.1,\n 'amd hd 7600g': 2.3,\n 'amd hd 7610m': 3.5,\n 'amd hd 7620g': 2.7,\n 'amd hd 7640g': 6.7,\n 'amd hd 7650m': 4.6,\n 'amd hd 7660g': 5.6,\n 'amd hd 7670m': 5.4,\n 'amd hd 7690m': 5.8,\n 'amd hd 7690m xt': 6.2,\n 'amd hd 7730m': 5.9,\n 'amd hd 7750m': 3.8,\n 'amd hd 7770m': 5.6,\n 'amd hd 7850m': 10.1,\n 'amd hd 7870m': 7.1,\n 'amd hd 7970m': 14.2,\n 'amd hd 8180': 0.7,\n 'amd hd 8210': 1.0,\n 'amd hd 8240': 1.1,\n 'amd hd 8250': 1.1,\n 'amd hd 8280': 1.0,\n 'amd hd 8330': 1.3,\n 'amd hd 8350g': 2.3,\n 'amd hd 8400': 1.8,\n 'amd hd 8450g': 2.1,\n 'amd hd 8510g': 2.2,\n 'amd hd 8550g': 3.3,\n 'amd hd 8550m': 3.6,\n 'amd hd 8570m': 3.0,\n 'amd hd 8610g': 1.8,\n 'amd hd 8650g': 3.5,\n 'amd hd 8650m': 3.2,\n 'amd hd 8670m': 3.2,\n 'amd hd 8690m': 4.7,\n 'amd hd 8730m': 4.8,\n 'amd hd 8750m': 4.4,\n 'amd hd 8770m': 7.6,\n 'amd hd 8790m': 7.2,\n 'amd hd 8850m': 5.8,\n 'amd hd 8870m': 8.2,\n 'amd hd 8970m': 13.5,\n 'amd pro 450': 10.9,\n 'amd pro 455': 11.0,\n 'amd pro 460': 11.4,\n 'amd pro 5500m': 27.0,\n 'amd pro 555': 11.7,\n 'amd pro 560': 10.4,\n 'amd pro 560x': 13.4,\n 'amd pro vega 16': 17.4,\n 'amd pro vega 20': 17.8,\n 'amd pro wx 3100': 8.7,\n 'amd pro wx 3200': 8.2,\n 'amd pro wx vega m gl': 12.2,\n 'amd r2': 1.7,\n 'amd r3': 1.6,\n 'amd r4': 1.9,\n 'amd r5': 2.4,\n 'amd r5 m230': 3.0,\n 'amd r5 m240': 3.1,\n 'amd r5 m255': 3.6,\n 'amd r5 m315': 2.2,\n 'amd r5 m320': 3.7,\n 'amd r5 m330': 3.3,\n 'amd r5 m335': 3.4,\n 'amd r5 m430': 3.1,\n 'amd r6': 1.6,\n 'amd r7': 3.6,\n 'amd r7 m260': 3.8,\n 'amd r7 m260x': 5.1,\n 'amd r7 m265': 4.6,\n 'amd r7 m270': 4.0,\n 'amd r7 m340': 3.9,\n 'amd r7 m360': 4.0,\n 'amd r7 m370': 5.9,\n 'amd r7 m440': 4.0,\n 'amd r7 m445': 6.0,\n 'amd r7 m460': 4.5,\n 'amd r7 m465': 4.8,\n 'amd r9 m265x': 6.8,\n 'amd r9 m275': 7.6,\n 'amd r9 m280x': 7.0,\n 'amd r9 m290x': 15.2,\n 'amd r9 m295x': 17.2,\n 'amd r9 m370x': 8.4,\n 'amd r9 m375': 5.3,\n 'amd r9 m385x': 8.5,\n 'amd r9 m390': 12.9,\n 'amd r9 m390x': 15.5,\n 'amd r9 m395': 15.4,\n 'amd r9 m395x': 15.6,\n 'amd r9 m470': 10.0,\n 'amd 460': 9.7,\n 'amd 470': 20.5,\n 'amd 480': 11.9,\n 'amd 5300m': 23.7,\n 'amd 540': 8.6,\n 'amd 550': 11.5,\n 'amd 5500m': 21.8,\n 'amd 550x': 9.0,\n 'amd 560': 12.3,\n 'amd 5600m': 26.9,\n 'amd 560x': 12.1,\n 'amd 580': 21.0,\n 'amd 640': 7.7,\n 'amd 6500m': 31.7,\n 'amd 6550m': 22.4,\n 'amd 6600m': 42.1,\n 'amd 6650m': 40.8,\n 'amd 6700m': 44.7,\n 'amd 6700s': 44.0,\n 'amd 6800m': 54.6,\n 'amd 6800s': 49.2,\n 'amd 6850m xt': 57.6,\n 'amd 7600m xt': 49.0,\n 'amd 7600s': 48.9,\n 'amd 7900m': 68.0,\n 'amd vega 10': 6.3,\n 'amd vega 11': 10.3,\n 'amd vega 3': 3.7,\n 'amd vega 5': 6.9,\n 'amd vega 6': 7.6,\n 'amd vega 7': 11.6,\n 'amd vega 8': 13.2,\n 'amd vega 9': 7.3,\n 'amd vega m gh': 22.2,\n 'amd vega m gl / 870': 13.6,\n 'ati firepro m5800': 7.0,\n 'ati firepro m7740': 19.7,\n 'ati firepro m7820': 18.4,\n 'amd 128 m3': 0.6,\n 'amd firegl 9000': 12.1,\n 'amd firegl t2': 12.8,\n 'amd firegl v3200': 17.0,\n 'amd firegl v5000': 23.8,\n 'amd firegl v5200': 1.8,\n 'amd firegl v5250': 2.5,\n 'amd firegl v5700': 11.5,\n 'amd amd 7000 igp': 2.3,\n 'amd amd 7500': 5.5,\n 'amd amd 9000': 8.0,\n 'amd amd 9000 igp': 10.7,\n 'amd amd 9100 igp': 3.9,\n 'amd amd 9200': 11.1,\n 'amd amd 9600': 12.2,\n 'amd amd 9700': 7.5,\n 'amd amd 9800': 13.5,\n 'amd amd hd 2300': 7.1,\n 'amd amd hd 2400': 6.0,\n 'amd amd hd 2400 xt': 6.2,\n 'amd amd hd 2600': 9.5,\n 'amd amd hd 2600 xt': 11.2,\n 'amd amd hd 2700': 18.7,\n 'amd amd hd 3410': 2.1,\n 'amd amd hd 3430': 7.2,\n 'amd amd hd 3450': 5.9,\n 'amd amd hd 3470': 7.4,\n 'amd amd hd 3470 hybrid x2': 6.8,\n 'amd amd hd 3650': 10.3,\n 'amd amd hd 3670': 11.5,\n 'amd amd hd 3850': 4.2,\n 'amd amd hd 3870': 12.3,\n 'amd amd hd 4330': 6.8,\n 'amd amd hd 4350': 9.6,\n 'amd amd hd 4530': 2.4,\n 'amd amd hd 4550': 8.8,\n 'amd amd hd 4570': 8.4,\n 'amd amd hd 4650': 13.4,\n 'amd amd hd 4670': 13.0,\n 'amd amd hd 4830': 5.7,\n 'amd amd hd 4850': 20.9,\n 'amd amd hd 4870': 8.4,\n 'amd amd hd 5145': 9.0,\n 'amd amd hd 5165': 11.3,\n 'amd amd hd 530v': 4.3,\n 'amd amd hd 540v': 9.0,\n 'amd amd hd 5430': 2.7,\n 'amd amd hd 5450': 5.6,\n 'amd amd hd 545v': 9.3,\n 'amd amd hd 5470': 9.8,\n 'amd amd hd 550v': 4.4,\n 'amd amd hd 560v': 5.7,\n 'amd amd hd 5650': 6.5,\n 'amd amd hd 5730': 13.0,\n 'amd amd hd 5830': 8.0,\n 'amd amd hd 5850': 18.5,\n 'amd amd hd 5870': 21.0,\n 'amd amd m6': 3.7,\n 'amd amd m7': 5.0,\n 'amd amd x1300': 7.0,\n 'amd amd x1350': 9.6,\n 'amd amd x1400': 11.2,\n 'amd amd x1450': 7.9,\n 'amd amd x1600': 13.2,\n 'amd amd x1700': 15.9,\n 'amd amd x1800': 15.7,\n 'amd amd x1900': 21.2,\n 'amd amd x2300': 4.9,\n 'amd amd x2500': 11.6,\n 'amd amd x300': 6.4,\n 'amd amd x600': 7.5,\n 'amd amd x700': 11.8,\n 'amd amd x800': 14.7,\n 'ati amd hd 3100': 1.7,\n 'ati amd hd 3200': 2.8,\n 'ati amd hd 4200': 3.6,\n 'ati amd hd 4225': 3.1,\n 'ati amd hd 4250': 4.1,\n 'ati amd hd 4270': 1.3,\n 'ati amd igp 320m': 2.2,\n 'ati amd igp 340m': 1.8,\n 'ati amd xpress 1100': 3.0,\n 'ati amd xpress 1150': 3.6,\n 'ati amd xpress 1250': 2.6,\n 'ati amd xpress 200m': 2.3,\n 'ati amd xpress x1200': 3.0,\n 'ati amd xpress x1250': 3.7,\n 'ati amd xpress x1270': 2.8,\n 'apple m1 7 core gpu': 9.3,\n 'apple m1 8 core gpu': 14.7,\n 'apple m1 max 24 core gpu': 25.9,\n 'apple m1 max 32 core gpu': 28.7,\n 'apple m1 pro 14 core gpu': 18.8,\n 'apple m1 pro 16 core gpu': 20.0,\n 'apple m2 10 core gpu': 13.4,\n 'apple m2 8 core gpu': 12.3,\n 'apple m2 max 30 core gpu': 8.5,\n 'apple m2 max 38 core gpu': 40.3,\n 'apple m2 pro 16 core gpu': 24.0,\n 'apple m2 pro 19 core gpu': 26.5,\n 'apple m3 10 core gpu': 13.9,\n 'apple m3 max 40 core gpu': 37.1,\n 'apple m3 pro 14 core gpu': 19.4,\n 'apple m3 pro 18 core gpu': 26.9,\n 'intel arc 8 cores igpu': 18.2,\n 'intel arc a350m': 16.4,\n 'intel arc a370m': 18.5,\n 'intel arc a550m': 27.7,\n 'intel arc a730m': 38.5,\n 'intel arc a770m': 47.9,\n 'intel extreme 2': 3.5,\n 'intel media accelerator 3150': 1.3,\n 'intel media accelerator 3600': 2.0,\n 'intel media accelerator 3650': 1.9,\n 'intel media accelerator 4500m': 2.3,\n 'intel media accelerator 4500mhd': 1.5,\n 'intel media accelerator 500': 0.5,\n 'intel media accelerator 600': 0.8,\n 'intel media accelerator 900': 2.0,\n 'intel media accelerator 950': 1.6,\n 'intel media accelerator hd': 3.9,\n 'intel media accelerator x3100': 2.3,\n 'intel hd': 4.2,\n 'intel hd 2000': 6.9,\n 'intel hd 2500': 4.1,\n 'intel hd 3000': 5.1,\n 'intel hd 400': 1.1,\n 'intel hd 4000': 3.4,\n 'intel hd 405': 1.3,\n 'intel hd 4200': 2.0,\n 'intel hd 4400': 4.1,\n 'intel hd 4600': 6.6,\n 'intel hd 500': 1.4,\n 'intel hd 5000': 3.2,\n 'intel hd 505': 1.6,\n 'intel hd 510': 3.0,\n 'intel hd 515': 4.5,\n 'intel hd 520': 5.1,\n 'intel hd 530': 4.7,\n 'intel hd 5300': 2.4,\n 'intel hd 5500': 3.0,\n 'intel hd 5600': 3.6,\n 'intel hd 6000': 3.4,\n 'intel hd 610': 2.5,\n 'intel hd 615': 13.5,\n 'intel hd 620': 9.6,\n 'intel hd 630': 4.8,\n 'intel hd p630': 4.4,\n 'intel iris 5100': 3.6,\n 'intel iris 540': 5.8,\n 'intel iris 550': 6.5,\n 'intel iris 6100': 4.1,\n 'intel iris plus 640': 5.4,\n 'intel iris plus 645': 3.6,\n 'intel iris plus 650': 7.1,\n 'intel iris plus 655': 12.4,\n 'intel iris plus g4': 6.4,\n 'intel iris plus g7': 7.6,\n 'intel iris pro 5200': 9.6,\n 'intel iris pro 580': 7.8,\n 'intel iris pro 6200': 6.5,\n 'intel iris xe g7 80eus': 10.6,\n 'intel iris xe g7 96eus': 12.1,\n 'intel iris xe max': 14.2,\n 'intel uhd': 3.4,\n 'intel uhd 24eus': 4.0,\n 'intel uhd 600': 1.5,\n 'intel uhd 605': 1.7,\n 'intel uhd 610': 2.4,\n 'intel uhd 615': 3.0,\n 'intel uhd 617': 4.2,\n 'intel uhd 620': 6.4,\n 'intel uhd 630': 5.5,\n 'intel uhd 64eus': 9.9,\n 'intel uhd 770': 9.1,\n 'intel uhd g1': 5.1,\n 'intel uhd g7': 3.6,\n 'intel uhd xe 16eus': 4.4,\n 'intel uhd xe 32eus': 8.4,\n 'intel uhd xe 750 32eus': 6.7,\n 'intel uhd xe g4 48eus': 6.2,\n 'nvidia 2 go': 3.6,\n 'nvidia 305m': 4.6,\n 'nvidia 310m': 7.6,\n 'nvidia 315m': 7.4,\n 'nvidia 320m': 6.9,\n 'nvidia 4 420 go': 6.2,\n 'nvidia 4 440 go': 7.2,\n 'nvidia 4 460 go': 7.9,\n 'nvidia 4 488 go': 7.8,\n 'nvidia 410m': 6.9,\n 'nvidia 610m': 2.8,\n 'nvidia 7000m': 3.7,\n 'nvidia 710m': 5.4,\n 'nvidia 7150m': 3.5,\n 'nvidia 8200m g': 6.1,\n 'nvidia 820m': 3.4,\n 'nvidia 825m': 4.7,\n 'nvidia 830m': 4.6,\n 'nvidia 8400m g': 4.4,\n 'nvidia 8400m gs': 7.2,\n 'nvidia 8400m gt': 1.5,\n 'nvidia 840m': 5.6,\n 'nvidia 845m': 5.2,\n 'nvidia 8600m gs': 10.0,\n 'nvidia 8600m gt': 10.0,\n 'nvidia 8700m gt': 11.9,\n 'nvidia 8800m gts': 14.4,\n 'nvidia 8800m nvidia gtx': 17.6,\n 'nvidia 9100m g': 1.8,\n 'nvidia 910m': 3.0,\n 'nvidia 9200m gs': 6.3,\n 'nvidia 920m': 3.9,\n 'nvidia 920mx': 4.7,\n 'nvidia 9300m g': 8.2,\n 'nvidia 9300m gs': 5.9,\n 'nvidia 930m': 4.7,\n 'nvidia 930mx': 5.3,\n 'nvidia 9400m / ion': 3.3,\n 'nvidia 9400m nvidiaboost': 7.1,\n 'nvidia 940m': 5.5,\n 'nvidia 940mx': 7.6,\n 'nvidia 945m': 9.3,\n 'nvidia 9500m g': 8.9,\n 'nvidia 9500m gs': 9.6,\n 'nvidia 9600m gs': 11.0,\n 'nvidia 9600m gt': 12.5,\n 'nvidia 9650m gs': 10.0,\n 'nvidia 9650m gt': 11.1,\n 'nvidia 9700m gt': 15.6,\n 'nvidia 9700m gts': 14.6,\n 'nvidia 9800m gs': 14.8,\n 'nvidia 9800m gt': 17.8,\n 'nvidia 9800m gts': 23.6,\n 'nvidia 9800m nvidia gtx': 18.4,\n 'nvidia fx go 5200': 9.8,\n 'nvidia fx go 5600 / 5650': 13.1,\n 'nvidia fx go 5700': 15.9,\n 'nvidia g 102m': 6.5,\n 'nvidia g 103m': 6.1,\n 'nvidia g 105m': 6.3,\n 'nvidia g 110m': 3.6,\n 'nvidia g 205m': 2.3,\n 'nvidia g210m': 5.1,\n 'nvidia gt 120m': 14.3,\n 'nvidia gt 130m': 12.2,\n 'nvidia gt 220m': 9.1,\n 'nvidia gt 230m': 10.9,\n 'nvidia gt 240m': 11.5,\n 'nvidia gt 320m': 4.0,\n 'nvidia gt 325m': 4.2,\n 'nvidia gt 330m': 12.9,\n 'nvidia gt 335m': 10.5,\n 'nvidia gt 415m': 2.6,\n 'nvidia gt 420m': 7.3,\n 'nvidia gt 425m': 10.4,\n 'nvidia gt 435m': 11.9,\n 'nvidia gt 445m': 5.4,\n 'nvidia gt 520m': 7.4,\n 'nvidia gt 520mx': 3.1,\n 'nvidia gt 525m': 9.5,\n 'nvidia gt 540m': 11.7,\n 'nvidia gt 550m': 11.9,\n 'nvidia gt 555m': 8.3,\n 'nvidia gt 620m': 3.3,\n 'nvidia gt 625m': 1.7,\n 'nvidia gt 630m': 4.9,\n 'nvidia gt 635m': 5.0,\n 'nvidia gt 640m': 5.9,\n 'nvidia gt 640m le': 5.4,\n 'nvidia gt 645m': 5.6,\n 'nvidia gt 650m': 10.4,\n 'nvidia gt 650m sli': 10.7,\n 'nvidia gt 720m': 4.6,\n 'nvidia gt 730m': 4.8,\n 'nvidia gt 735m': 4.1,\n 'nvidia gt 740m': 4.2,\n 'nvidia gt 745m': 5.8,\n 'nvidia gt 750m': 6.8,\n 'nvidia gt 755m': 8.6,\n 'nvidia gts 160m': 15.7,\n 'nvidia gts 250m': 16.0,\n 'nvidia gts 350m': 12.2,\n 'nvidia gts 360m': 7.3,\n 'nvidia gtx 1050 max q': 14.0,\n 'nvidia gtx 1050 mobile': 14.9,\n 'nvidia gtx 1050 ti max q': 16.5,\n 'nvidia gtx 1050 ti mobile': 18.4,\n 'nvidia gtx 1060 max q': 22.8,\n 'nvidia gtx 1060 mobile': 23.4,\n 'nvidia gtx 1070 max q': 28.3,\n 'nvidia gtx 1070 mobile': 28.8,\n 'nvidia gtx 1080 max q': 34.1,\n 'nvidia gtx 1080 mobile': 38.5,\n 'nvidia gtx 1650 max q': 20.2,\n 'nvidia gtx 1650 mobile': 20.8,\n 'nvidia gtx 1650 ti max q': 25.3,\n 'nvidia gtx 1650 ti mobile': 27.5,\n 'nvidia gtx 1660 ti max q': 23.1,\n 'nvidia gtx 1660 ti mobile': 31.5,\n 'nvidia gtx 260m': 17.8,\n 'nvidia gtx 280m': 21.0,\n 'nvidia gtx 285m': 9.5,\n 'nvidia gtx 460m': 14.3,\n 'nvidia gtx 470m': 8.8,\n 'nvidia gtx 480m': 16.5,\n 'nvidia gtx 485m': 11.0,\n 'nvidia gtx 560m': 16.8,\n 'nvidia gtx 570m': 9.4,\n 'nvidia gtx 580m': 16.3,\n 'nvidia gtx 660m': 12.4,\n 'nvidia gtx 670m': 9.1,\n 'nvidia gtx 670mx': 10.9,\n 'nvidia gtx 675m': 10.3,\n 'nvidia gtx 675mx': 12.8,\n 'nvidia gtx 680m': 13.5,\n 'nvidia gtx 680mx': 15.1,\n 'nvidia gtx 760m': 8.9,\n 'nvidia gtx 765m': 8.5,\n 'nvidia gtx 770m': 11.5,\n 'nvidia gtx 775m': 10.2,\n 'nvidia gtx 780m': 15.2,\n 'nvidia gtx 850m': 9.5,\n 'nvidia gtx 860m': 12.3,\n 'nvidia gtx 870m': 15.4,\n 'nvidia gtx 880m': 16.8,\n 'nvidia gtx 950m': 9.4,\n 'nvidia gtx 960m': 12.4,\n 'nvidia gtx 965m': 13.8,\n 'nvidia gtx 970m': 19.6,\n 'nvidia gtx 980': 26.6,\n 'nvidia gtx 980m': 19.6,\n 'nvidia go 6100': 3.8,\n 'nvidia go 6150': 2.2,\n 'nvidia go 6200': 13.0,\n 'nvidia go 6400': 14.1,\n 'nvidia go 6600': 11.7,\n 'nvidia go 6800': 18.6,\n 'nvidia go 6800 ultra': 19.0,\n 'nvidia go 7200': 5.9,\n 'nvidia go 7300': 8.7,\n 'nvidia go 7400': 9.8,\n 'nvidia go 7600': 14.5,\n 'nvidia go 7600 gt': 17.1,\n 'nvidia go 7700': 18.0,\n 'nvidia go 7800': 15.7,\n 'nvidia go 7800 nvidia gtx': 20.8,\n 'nvidia go 7900 gs': 19.6,\n 'nvidia go 7900 nvidia gtx': 24.6,\n 'nvidia go 7950 nvidia gtx': 27.2,\n 'nvidia mx110': 5.5,\n 'nvidia mx130': 7.2,\n 'nvidia mx150': 10.8,\n 'nvidia mx230': 7.5,\n 'nvidia mx250': 10.3,\n 'nvidia mx330': 9.8,\n 'nvidia mx350': 12.7,\n 'nvidia mx450': 12.6,\n 'nvidia mx550': 19.2,\n 'nvidia mx570': 16.0,\n 'nvidia rtx 2050 mobile': 21.2,\n 'nvidia rtx 2060 max q': 27.7,\n 'nvidia rtx 2060 mobile': 33.4,\n 'nvidia rtx 2070 max q': 33.5,\n 'nvidia rtx 2070 mobile': 39.2,\n 'nvidia rtx 2070 super max q': 41.0,\n 'nvidia rtx 2070 super mobile': 45.5,\n 'nvidia rtx 2080 max q': 36.8,\n 'nvidia rtx 2080 mobile': 45.0,\n 'nvidia rtx 2080 super max q': 41.6,\n 'nvidia rtx 2080 super mobile': 48.6,\n 'nvidia rtx 3050 4gb (mobile)': 27.5,\n 'nvidia rtx 3050 6gb (mobile)': 20.5,\n 'nvidia rtx 3050 ti (mobile)': 28.2,\n 'nvidia rtx 3060 (mobile)': 42.0,\n 'nvidia rtx 3070 (mobile)': 48.0,\n 'nvidia rtx 3070 ti (mobile)': 52.2,\n 'nvidia rtx 3080 (mobile)': 47.4,\n 'nvidia rtx 3080 ti (mobile)': 53.7,\n 'nvidia rtx 4050 (mobile)': 41.9,\n 'nvidia rtx 4060 (mobile)': 46.3,\n 'nvidia rtx 4070 (mobile)': 51.7,\n 'nvidia rtx 4080 (mobile)': 64.9,\n 'nvidia rtx 4090 (mobile)': 72.6,\n 'nvidia4 4200 go': 13.7,\n 'nvidia ion 2': 3.1,\n 'nvidia maxwell gpu surface book': 7.1,\n 'nvidia nvs 2100m': 9.1,\n 'nvidia nvs 3100m': 10.5,\n 'nvidia nvs 4200m': 3.0,\n 'nvidia nvs 5200m': 3.3,\n 'nvidia nvs 5400m': 5.3,\n 'nvidia quadro 1000m': 13.9,\n 'nvidia quadro 2000m': 6.3,\n 'nvidia quadro 3000m': 7.6,\n 'nvidia quadro 4000m': 9.6,\n 'nvidia quadro 5000m': 13.0,\n 'nvidia quadro 5010m': 10.8,\n 'nvidia quadro fx 1500m': 21.9,\n 'nvidia quadro fx 1600m': 20.5,\n 'nvidia quadro fx 1700m': 21.7,\n 'nvidia quadro fx 1800m': 7.1,\n 'nvidia quadro fx 2500m': 23.4,\n 'nvidia quadro fx 2700m': 17.3,\n 'nvidia quadro fx 2800m': 24.0,\n 'nvidia quadro fx 3500m': 7.7,\n 'nvidia quadro fx 350m': 1.0,\n 'nvidia quadro fx 3600m': 25.4,\n 'nvidia quadro fx 360m': 8.7,\n 'nvidia quadro fx 3700m': 7.9,\n 'nvidia quadro fx 370m': 8.0,\n 'nvidia quadro fx 3800m': 19.7,\n 'nvidia quadro fx 380m': 5.4,\n 'nvidia quadro fx 570m': 15.9,\n 'nvidia quadro fx 770m': 20.8,\n 'nvidia quadro fx 880m': 15.8,\n 'nvidia quadro fx go 1400': 1.9,\n 'nvidia quadro k1000m': 5.1,\n 'nvidia quadro k1100m': 5.4,\n 'nvidia quadro k2000m': 5.4,\n 'nvidia quadro k2100m': 6.5,\n 'nvidia quadro k3000m': 9.8,\n 'nvidia quadro k3100m': 9.9,\n 'nvidia quadro k4000m': 9.7,\n 'nvidia quadro k4100m': 12.3,\n 'nvidia quadro k5000m': 12.2,\n 'nvidia quadro k5100m': 12.7,\n 'nvidia quadro k610m': 3.8,\n 'nvidia quadro k620m': 5.2,\n 'nvidia quadro m1000m': 10.7,\n 'nvidia quadro m1200': 12.6,\n 'nvidia quadro m2000m': 11.0,\n 'nvidia quadro m2200': 14.2,\n 'nvidia quadro m3000m': 16.8,\n 'nvidia quadro m4000m': 15.5,\n 'nvidia quadro m5000m': 22.6,\n 'nvidia quadro m500m': 5.5,\n 'nvidia quadro m520': 6.9,\n 'nvidia quadro m5500': 17.4,\n 'nvidia quadro m600m': 7.3,\n 'nvidia quadro m620': 8.4,\n 'nvidia quadro nvs 110m': 8.4,\n 'nvidia quadro nvs 120m': 1.0,\n 'nvidia quadro nvs 130m': 1.6,\n 'nvidia quadro nvs 135m': 8.0,\n 'nvidia quadro nvs 140m': 7.5,\n 'nvidia quadro nvs 150m': 8.2,\n 'nvidia quadro nvs 160m': 8.2,\n 'nvidia quadro nvs 320m': 24.8,\n 'nvidia quadro nvs 5100m': 12.5,\n 'nvidia quadro p1000': 11.9,\n 'nvidia quadro p2000': 19.0,\n 'nvidia quadro p2000 max q': 17.8,\n 'nvidia quadro p3000': 19.6,\n 'nvidia quadro p3200': 27.5,\n 'nvidia quadro p4000': 21.4,\n 'nvidia quadro p4000 max q': 24.8,\n 'nvidia quadro p4200': 28.9,\n 'nvidia quadro p500': 5.2,\n 'nvidia quadro p5000': 26.7,\n 'nvidia quadro p520': 9.2,\n 'nvidia quadro p5200': 36.3,\n 'nvidia quadro p600': 12.4,\n 'nvidia quadro p620': 16.1,\n 'nvidia quadro nvidia rtx 3000': 27.0,\n 'nvidia quadro nvidia rtx 3000 max q': 24.2,\n 'nvidia quadro nvidia rtx 4000': 32.8,\n 'nvidia quadro nvidia rtx 4000 max q': 28.3,\n 'nvidia quadro nvidia rtx 5000': 42.5,\n 'nvidia quadro nvidia rtx 5000 max q': 34.6,\n 'nvidia quadro nvidia rtx 6000': 50.3,\n 'nvidia quadro t1000': 20.6,\n 'nvidia quadro t2000': 18.9,\n 'nvidia quadro t2000 max q': 17.6,\n 'nvidia rtx 2000 ada generation (mobile)': 30.3,\n 'nvidia rtx 3000 ada generation (mobile)': 38.1,\n 'nvidia rtx 5000 ada generation (mobile)': 58.1,\n 'nvidia rtx a1000 (mobile)': 25.5,\n 'nvidia rtx a2000 (mobile)': 29.7,\n 'nvidia rtx a3000 (mobile)': 32.1,\n 'nvidia rtx a5000 (mobile)': 38.5,\n 'nvidia rtx a5500 (mobile)': 47.7,\n 'nvidia t1200 (mobile)': 24.0,\n 'nvidia t500 (mobile)': 12.4,\n 'nvidia t550 (mobile)': 14.0,\n 'nvidia t600 (mobile)': 21.5,\n 'qualcomm adreno 630': 3.1,\n 'qualcomm adreno 680': 2.3,\n 'qualcomm adreno 685': 2.4,\n 'qualcomm adreno 690': 5.0,\n 'sis mirage 2 m760': 2.2,\n 'sis mirage 3 671mx': 1.5,\n 'sis mirage 3+ 672mx': 1.1,\n 'sis mirage m661fx': 1.9,\n 'via chrome9 hc': 1.1,\n 'via chrome9hd': 3.1,\n 'via s3 prosavage8': 0.9,\n 'via s3g unichrome pro': 2.9,\n 'via s3g unichrome pro ii': 1.5,\n 'unknown': 1.6}"
|
||
},
|
||
"execution_count": 76,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import csv\n",
|
||
"\n",
|
||
"gpu_bench = list(csv.DictReader(open('data/notebookcheck/mobile-gpu.csv', 'r', encoding='utf-8')))\n",
|
||
"gpu_bench = {k['Model']: float(k['Perf. Rating'].replace(\"~\", \"\")) for k in gpu_bench if k['Perf. Rating']}\n",
|
||
"cpu_data = list(csv.DictReader(open('data/notebookcheck/mobile-cpu.csv', 'r', encoding='utf-8')))\n",
|
||
"cpu_data = {k['Model']: k for k in cpu_data}\n",
|
||
"\n",
|
||
"def norm_name_gpu(name: str) -> str:\n",
|
||
" # Remove parenthesis\n",
|
||
" name = re.sub(r'\\([^)]*\\)', '', name).strip()\n",
|
||
" return (name.lower().strip().replace(\"_\", \"-\").replace(\"-\", \" \")\n",
|
||
" .replace(\"geforce\", \"nvidia\")\n",
|
||
" .replace(\"nvidia nvidia\", \"nvidia\")\n",
|
||
" .replace(\"rtx\", \"nvidia rtx\")\n",
|
||
" .replace(\"gtx\", \"nvidia gtx\")\n",
|
||
" .replace(\"nvidia nvidia\", \"nvidia\")\n",
|
||
" .replace(\"radeon\", \"amd\")\n",
|
||
" .replace(\"amd rx\", \"amd\")\n",
|
||
" .replace(\"amd amd\", \"amd\")\n",
|
||
" .replace(\"ati mobility\", \"amd\")\n",
|
||
" .replace(\" laptop gpu\", \" (mobile)\")\n",
|
||
" .replace(\" \", \" \")\n",
|
||
" .replace(\" graphics\", \"\")\n",
|
||
" .strip()\n",
|
||
" )\n",
|
||
"\n",
|
||
"gpu_bench = {norm_name_gpu(k): v for k, v in sorted(gpu_bench.items(), key=lambda x: x[0])}\n",
|
||
"cpu_data = {norm_name_cpu(k): v for k, v in cpu_data.items()}\n",
|
||
"gpu_bench"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2023-12-27T10:01:41.215431Z",
|
||
"start_time": "2023-12-27T10:01:41.119654Z"
|
||
}
|
||
},
|
||
"id": "81a4b6a0959e037a"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 77,
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"CPU intel i5 5300u not found\n",
|
||
"GPU intel arc not found\n",
|
||
"GPU not found\n",
|
||
"CPU intel i5 6300u not found\n",
|
||
"CPU intel pentium silver not found\n",
|
||
"CPU ryzen 3 3720u not found\n",
|
||
"GPU amd 740m not found\n",
|
||
"GPU intel arc™ not found\n",
|
||
"CPU intel i5 6300u not found\n",
|
||
"CPU intel i7 1335u not found\n",
|
||
"CPU intel i5 13th gen not found\n",
|
||
"GPU arm mali g52 2ee mc2 not found\n",
|
||
"CPU intel ci3 1115g4 not found\n",
|
||
"CPU core not found\n",
|
||
"CPU intel pentium silver not found\n",
|
||
"CPU intel i5 7300 not found\n",
|
||
"CPU intel i5 6300u not found\n",
|
||
"CPU intel i5 6300u not found\n",
|
||
"CPU intel i7 12th gen not found\n",
|
||
"CPU intel i7 6500u not found\n",
|
||
"CPU intel i5 4300u not found\n",
|
||
"CPU intel i7 11th gen not found\n",
|
||
"CPU intel i5 10th gen, not found\n",
|
||
"GPU nvidia rtx a4000 not found\n",
|
||
"CPU mediatek mt8167b not found\n",
|
||
"GPU img powervr ge8300 not found\n",
|
||
"CPU mediatek mt8167b not found\n",
|
||
"GPU img powervr ge8300 not found\n",
|
||
"Found: 577 (94.90%)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"def match_gpu(cpu: str, gpu: str):\n",
|
||
" cpu = match_cpu(cpu, cpu_data)\n",
|
||
" if gpu is not None:\n",
|
||
" gpu = gpu.lower()\n",
|
||
" if gpu is None or any(x in gpu for x in [\"iris\", \"uhd\", \"integrated\", 'n/a']) or norm_name_gpu(gpu) == 'amd':\n",
|
||
" # Check mobile integrated GPU\n",
|
||
" if cpu is None:\n",
|
||
" return None\n",
|
||
" gpu = cpu['Graphics Card']\n",
|
||
" gpu = norm_name_gpu(gpu)\n",
|
||
" if gpu.startswith(\"rtx\"):\n",
|
||
" gpu = gpu.replace(\"rtx\", \"nvidia rtx\")\n",
|
||
" # If there are no space after rtx, add space\n",
|
||
" if 'rtx' in gpu and 'rtx ' not in gpu:\n",
|
||
" gpu = gpu.replace('rtx', 'rtx ')\n",
|
||
" # If there are no space before \"ti\", add space\n",
|
||
" if 'ti' in gpu and ' ti' not in gpu:\n",
|
||
" gpu = gpu.replace('ti', ' ti')\n",
|
||
" # Remove \"\\dgb\"\n",
|
||
" gpu = re.sub(r'\\dgb', '', gpu).strip()\n",
|
||
" if gpu.startswith(\"mx\"):\n",
|
||
" gpu = gpu.replace(\"mx\", \"nvidia mx\")\n",
|
||
" if gpu.startswith(\"iris\"):\n",
|
||
" gpu = gpu.replace(\"iris\", \"intel iris\")\n",
|
||
" if gpu.startswith(\"uhd\"):\n",
|
||
" gpu = gpu.replace(\"uhd\", \"intel uhd\")\n",
|
||
" if gpu.startswith(\"vega\"):\n",
|
||
" gpu = gpu.replace(\"vega\", \"amd vega\")\n",
|
||
" gpu = gpu.strip()\n",
|
||
" \n",
|
||
" if gpu.endswith(\"3050\"):\n",
|
||
" gpu = gpu.replace(\"3050\", \"3050 4gb\")\n",
|
||
" \n",
|
||
" for keyword in ['', ' m', ' (mobile)', ' mobile']:\n",
|
||
" if gpu + keyword in gpu_bench:\n",
|
||
" return gpu_bench[gpu + keyword]\n",
|
||
" \n",
|
||
" print(f\"GPU {gpu} not found\")\n",
|
||
" return None\n",
|
||
"\n",
|
||
"laptops['gpu_bench'] = laptops.apply(lambda x: match_gpu(x['CPU'], x['GPU']), axis=1)\n",
|
||
"print(f\"Found: {len(laptops['gpu_bench'].dropna())} ({len(laptops['gpu_bench'].dropna()) / len(laptops) * 100:.2f}%)\")"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2023-12-27T10:01:41.279696Z",
|
||
"start_time": "2023-12-27T10:01:41.164372Z"
|
||
}
|
||
},
|
||
"id": "bae042e4cf11d30a"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 78,
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Dropping 5.43%\n",
|
||
"Dropping 0.00%\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": " id item_id name \\\n0 234878 LPASU00715 ASUS TUF F15 Gaming Laptop 15.6\" FHD Intel i9-... \n1 239821 LPACE00967 Acer Nitro 5 Gaming Laptop 15.6\" FHD Intel i9-... \n2 241721 LPLEN03469 Lenovo Legion Pro 5i Gaming Laptop 16\" QHD+ In... \n3 245321 LPHEW02100 HP 15-fd0030ca Consumer Laptop 15.6\" FHD Intel... \n4 245308 LPGIG00162 GIGABYTE G5 KF Gaming Laptop 15.6\" FHD 144Hz I... \n\n brand categories price \\\n0 ASUS ['Laptops, Tablet', None, None, None] 1499.0 \n1 ACER ['Laptops, Tablet', None, None, None] 1299.0 \n2 LENOVO ['Laptops, Tablet', None, None, None] 1499.0 \n3 HP ['Laptops, Tablet', None, None, None] 699.0 \n4 GIGABYTE ['Laptops, Tablet', None, None, None] 1099.0 \n\n specs \\\n0 {'Refresh Rate': '144Hz', 'GPU': 'GeForce RTX ... \n1 {'GPU': 'GeForce RTX 4060', 'Maximum Resolutio... \n2 {'GPU': 'GeForce RTX 4060', 'Maximum Resolutio... \n3 {'GPU': 'Intel Iris Xe', 'Maximum Resolution':... \n4 {'GPU': 'GeForce RTX 4060', 'Maximum Resolutio... \n\n gpt_specs GPU \\\n0 {'Brand': 'ASUS', 'Model': 'TUF F15', 'Model C... GeForce RTX 4060 \n1 {'Brand': 'Acer', 'Model': 'Nitro 5', 'Model C... GeForce RTX 4060 \n2 {'Brand': 'Lenovo', 'Model': 'Legion Pro 5i', ... GeForce RTX 4060 \n3 {'Brand': 'HP', 'Model': '15-fd0030ca', 'Model... None \n4 {'Brand': 'GIGABYTE', 'Model': 'G5 KF', 'Model... GeForce RTX 4060 \n\n CPU cpu_bench gpu_bench gpu_bench_norm cpu_bench_norm \\\n0 Intel i9-13900H 29687.0 46.3 0.637741 0.534872 \n1 Intel i9-12900H 28524.0 46.3 0.637741 0.513918 \n2 Intel i7-13700HX 34110.0 46.3 0.637741 0.614561 \n3 Intel i5-1340P 20204.0 10.6 0.146006 0.364016 \n4 Intel i7-12650H 23281.0 46.3 0.637741 0.419455 \n\n bench value \n0 0.606880 404.856791 \n1 0.600594 462.351180 \n2 0.630787 420.805300 \n3 0.211409 302.444585 \n4 0.572255 520.705345 ",
|
||
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>id</th>\n <th>item_id</th>\n <th>name</th>\n <th>brand</th>\n <th>categories</th>\n <th>price</th>\n <th>specs</th>\n <th>gpt_specs</th>\n <th>GPU</th>\n <th>CPU</th>\n <th>cpu_bench</th>\n <th>gpu_bench</th>\n <th>gpu_bench_norm</th>\n <th>cpu_bench_norm</th>\n <th>bench</th>\n <th>value</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>234878</td>\n <td>LPASU00715</td>\n <td>ASUS TUF F15 Gaming Laptop 15.6\" FHD Intel i9-...</td>\n <td>ASUS</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1499.0</td>\n <td>{'Refresh Rate': '144Hz', 'GPU': 'GeForce RTX ...</td>\n <td>{'Brand': 'ASUS', 'Model': 'TUF F15', 'Model C...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i9-13900H</td>\n <td>29687.0</td>\n <td>46.3</td>\n <td>0.637741</td>\n <td>0.534872</td>\n <td>0.606880</td>\n <td>404.856791</td>\n </tr>\n <tr>\n <th>1</th>\n <td>239821</td>\n <td>LPACE00967</td>\n <td>Acer Nitro 5 Gaming Laptop 15.6\" FHD Intel i9-...</td>\n <td>ACER</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1299.0</td>\n <td>{'GPU': 'GeForce RTX 4060', 'Maximum Resolutio...</td>\n <td>{'Brand': 'Acer', 'Model': 'Nitro 5', 'Model C...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i9-12900H</td>\n <td>28524.0</td>\n <td>46.3</td>\n <td>0.637741</td>\n <td>0.513918</td>\n <td>0.600594</td>\n <td>462.351180</td>\n </tr>\n <tr>\n <th>2</th>\n <td>241721</td>\n <td>LPLEN03469</td>\n <td>Lenovo Legion Pro 5i Gaming Laptop 16\" QHD+ In...</td>\n <td>LENOVO</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1499.0</td>\n <td>{'GPU': 'GeForce RTX 4060', 'Maximum Resolutio...</td>\n <td>{'Brand': 'Lenovo', 'Model': 'Legion Pro 5i', ...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i7-13700HX</td>\n <td>34110.0</td>\n <td>46.3</td>\n <td>0.637741</td>\n <td>0.614561</td>\n <td>0.630787</td>\n <td>420.805300</td>\n </tr>\n <tr>\n <th>3</th>\n <td>245321</td>\n <td>LPHEW02100</td>\n <td>HP 15-fd0030ca Consumer Laptop 15.6\" FHD Intel...</td>\n <td>HP</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>699.0</td>\n <td>{'GPU': 'Intel Iris Xe', 'Maximum Resolution':...</td>\n <td>{'Brand': 'HP', 'Model': '15-fd0030ca', 'Model...</td>\n <td>None</td>\n <td>Intel i5-1340P</td>\n <td>20204.0</td>\n <td>10.6</td>\n <td>0.146006</td>\n <td>0.364016</td>\n <td>0.211409</td>\n <td>302.444585</td>\n </tr>\n <tr>\n <th>4</th>\n <td>245308</td>\n <td>LPGIG00162</td>\n <td>GIGABYTE G5 KF Gaming Laptop 15.6\" FHD 144Hz I...</td>\n <td>GIGABYTE</td>\n <td>['Laptops, Tablet', None, None, None]</td>\n <td>1099.0</td>\n <td>{'GPU': 'GeForce RTX 4060', 'Maximum Resolutio...</td>\n <td>{'Brand': 'GIGABYTE', 'Model': 'G5 KF', 'Model...</td>\n <td>GeForce RTX 4060</td>\n <td>Intel i7-12650H</td>\n <td>23281.0</td>\n <td>46.3</td>\n <td>0.637741</td>\n <td>0.419455</td>\n <td>0.572255</td>\n <td>520.705345</td>\n </tr>\n </tbody>\n</table>\n</div>"
|
||
},
|
||
"execution_count": 78,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"def calc_bench(cpu_weight: float) -> pd.DataFrame:\n",
|
||
" # Clone laptops\n",
|
||
" df = laptops.copy()\n",
|
||
" \n",
|
||
" # Normalize gpu_bench and cpu_bench to float between 0 and 1 (divide by max)\n",
|
||
" gpu_max = max(df['gpu_bench'].dropna())\n",
|
||
" cpu_max = max(df['cpu_bench'].dropna())\n",
|
||
" df['gpu_bench_norm'] = df['gpu_bench'].apply(lambda x: x / gpu_max if x is not None else None)\n",
|
||
" df['cpu_bench_norm'] = df['cpu_bench'].apply(lambda x: x / cpu_max if x is not None else None)\n",
|
||
" \n",
|
||
" # Drop rows with no gpu_bench or cpu_bench\n",
|
||
" print(f\"Dropping {len(df[df['gpu_bench'].isna() | df['cpu_bench'].isna()]) / len(df) * 100:.2f}%\")\n",
|
||
" df = df.dropna(subset=['gpu_bench', 'cpu_bench'])\n",
|
||
" \n",
|
||
" # Calculate weighted bench\n",
|
||
" df['bench'] = df['gpu_bench_norm'] * (1 - cpu_weight) + df['cpu_bench_norm'] * cpu_weight\n",
|
||
" \n",
|
||
" # Drop rows with no price\n",
|
||
" print(f\"Dropping {len(df[df['price'].isna()]) / len(df) * 100:.2f}%\")\n",
|
||
" df = df.dropna(subset=['price'])\n",
|
||
" \n",
|
||
" # Calculate value\n",
|
||
" df['value'] = df['bench'] / df['price'] * 1000_000\n",
|
||
" df.sort_values('value', ascending=False).head(10)\n",
|
||
" \n",
|
||
" return df\n",
|
||
"\n",
|
||
"calc_bench(0.3).head()"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2023-12-27T10:01:41.284497Z",
|
||
"start_time": "2023-12-27T10:01:41.187107Z"
|
||
}
|
||
},
|
||
"id": "52603d1bdfbc53ae"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 90,
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Dropping 5.43%\n",
|
||
"Dropping 0.00%\n",
|
||
"Dropping 5.43%\n",
|
||
"Dropping 0.00%\n",
|
||
"Dropping 5.43%\n",
|
||
"Dropping 0.00%\n",
|
||
"Dropping 5.43%\n",
|
||
"Dropping 0.00%\n",
|
||
"Dropping 5.43%\n",
|
||
"Dropping 0.00%\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from pathlib import Path\n",
|
||
"from hypy_utils import write\n",
|
||
"\n",
|
||
"\n",
|
||
"# Export\n",
|
||
"def export(cpu_weight: float):\n",
|
||
" laptops = calc_bench(cpu_weight)\n",
|
||
" laptops['Model'] = laptops['gpt_specs'].apply(lambda x: x['Model'] if 'Model' in x else None)\n",
|
||
" laptops['RAM'] = laptops['gpt_specs'].apply(lambda x: int(x['RAM'].split(\"GB\", 1)[0].strip()) if 'RAM' in x else None)\n",
|
||
" laptops['Storage'] = laptops['gpt_specs'].apply(lambda x: x['Storage'].replace(\"SSD\", \"\").replace(\"NVMe\", \"\").strip() if 'Storage' in x else None)\n",
|
||
" laptops['GPU'] = laptops['GPU'].apply(lambda x: x.replace(\"Graphics\", \"\") if x is not None else None)\n",
|
||
" df = laptops[['item_id', 'Model', 'CPU', 'GPU', 'RAM', 'Storage', 'price', 'bench', 'cpu_bench', 'gpu_bench', 'value']]\n",
|
||
" df = df.sort_values('value', ascending=False)\n",
|
||
" df['bench'] = df['bench'] * 100\n",
|
||
" Path(f'data/computed').mkdir(exist_ok=True, parents=True)\n",
|
||
" df.to_csv(f'data/computed/canada_computers_laptops_bench_{cpu_weight}.csv', index=False)\n",
|
||
"\n",
|
||
" html_template = '''<!DOCTYPE html>\n",
|
||
" <html>\n",
|
||
" <head>\n",
|
||
" <style>\n",
|
||
" tbody tr:nth-child(even) {background-color: lightblue;}\n",
|
||
" body {font-family: Arial, Helvetica, sans-serif;}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" {{table}}\n",
|
||
" </body>\n",
|
||
" </html>\n",
|
||
" '''\n",
|
||
" \n",
|
||
" # Color bars for price, bench, value, cpu_bench, gpu_bench\n",
|
||
" df = (df.style.bar(subset=['price'], color='#d65f5f', vmax=1500)\n",
|
||
" .bar(subset=['bench'], color='#5fba7d')\n",
|
||
" .bar(subset=['value'], color='#5fba7d')\n",
|
||
" .bar(subset=['cpu_bench'], color='#5fba7d')\n",
|
||
" .bar(subset=['gpu_bench'], color='#5fba7d')\n",
|
||
" .bar(subset=['RAM'], color='#5fba7d', vmax=32)\n",
|
||
" )\n",
|
||
" \n",
|
||
" \n",
|
||
" # Format price\n",
|
||
" df = df.format({'price': '$ {:,.0f}', 'bench': '{:.0f}%', 'cpu_bench': '{:,.0f}', 'gpu_bench': '{:.1f}', 'value': '{:,.0f}', \n",
|
||
" 'RAM': '{:,.0f}'})\n",
|
||
" \n",
|
||
" # Justify numbers to right, non-numbers to left\n",
|
||
" df = df.set_properties(**{'text-align': 'right'}, subset=pd.IndexSlice[:, ['price', 'bench', 'cpu_bench', 'gpu_bench', 'value']])\n",
|
||
" \n",
|
||
" # df = df.set_table_styles([{\"selector\":\"tbody tr:nth-child(even)\",\"props\":[(\"background-color\",\"lightgrey\")]}])\n",
|
||
" \n",
|
||
" write(f'data/computed/canada_computers_laptops_bench_{cpu_weight}.html', html_template.replace('{{table}}', df.to_html()))\n",
|
||
" \n",
|
||
"\n",
|
||
"for i in [0.1, 0.3, 0.5, 0.7, 0.9]:\n",
|
||
" export(i)"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2023-12-27T10:07:29.710145Z",
|
||
"start_time": "2023-12-27T10:07:28.387904Z"
|
||
}
|
||
},
|
||
"id": "43d85baf223a62cb"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 79,
|
||
"outputs": [],
|
||
"source": [],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2023-12-27T10:01:42.153071Z",
|
||
"start_time": "2023-12-27T10:01:42.144938Z"
|
||
}
|
||
},
|
||
"id": "cf1b6349b3b852b9"
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 2
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython2",
|
||
"version": "2.7.6"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|