{
"cells": [
{
"cell_type": "markdown",
"id": "6b79fd3a-ad11-4f23-97b1-c79a8b41e4c8",
"metadata": {},
"source": [
"# Инициализация и получение данных\n",
"\n",
"Ноутбук демонстрирует пример запроса и работы с данными [MyTracker](https://tracker.my.com).\n",
"\n",
"> **Внимание!** Чтобы всё заработало, в ячейку ниже вам необходио вписать UserId и SecretKey! Получить их можно в личном кабинете, если у вас есть права на экспорт сырых данных. Пожалуйста, проконсультируйтесь с [документацией](https://docs.tracker.my.com/api/export-api/access/), как сделать это.\n",
"\n",
"Таймстампы все в UTC исходно, мы их приводим в Europe/Moscow и специально даём суффикс полям `_MSK`!"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "35501613-b7b5-4e08-a966-37e8efd53ba0",
"metadata": {},
"outputs": [],
"source": [
"API_USER_ID = 49759\n",
"API_SECRET_KEY = 'qwert'"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "bdf4f71b-fadf-4991-a266-d4dcf499ce66",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: mytracker_export_api in /opt/conda/lib/python3.11/site-packages (1.0.5)\n",
"Requirement already satisfied: requests>=2.20.0 in /opt/conda/lib/python3.11/site-packages (from mytracker_export_api) (2.31.0)\n",
"Requirement already satisfied: pandas>=1.1.0 in /opt/conda/lib/python3.11/site-packages (from mytracker_export_api) (2.0.3)\n",
"Requirement already satisfied: urllib3<2,>=1.26.0 in /opt/conda/lib/python3.11/site-packages (from mytracker_export_api) (1.26.19)\n",
"Requirement already satisfied: python-dateutil>=2.8.2 in /opt/conda/lib/python3.11/site-packages (from pandas>=1.1.0->mytracker_export_api) (2.8.2)\n",
"Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.11/site-packages (from pandas>=1.1.0->mytracker_export_api) (2023.3)\n",
"Requirement already satisfied: tzdata>=2022.1 in /opt/conda/lib/python3.11/site-packages (from pandas>=1.1.0->mytracker_export_api) (2023.3)\n",
"Requirement already satisfied: numpy>=1.21.0 in /opt/conda/lib/python3.11/site-packages (from pandas>=1.1.0->mytracker_export_api) (1.24.4)\n",
"Requirement already satisfied: charset-normalizer<4,>=2 in /opt/conda/lib/python3.11/site-packages (from requests>=2.20.0->mytracker_export_api) (3.2.0)\n",
"Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.11/site-packages (from requests>=2.20.0->mytracker_export_api) (3.4)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.11/site-packages (from requests>=2.20.0->mytracker_export_api) (2023.5.7)\n",
"Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.11/site-packages (from python-dateutil>=2.8.2->pandas>=1.1.0->mytracker_export_api) (1.16.0)\n",
"\u001b[33mWARNING: There was an error checking the latest version of pip.\u001b[0m\u001b[33m\n",
"\u001b[0mNote: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"%pip install mytracker_export_api"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "1b5acf9f-fcf2-4063-8cf0-09ca77912e73",
"metadata": {},
"outputs": [],
"source": [
"from mytracker_export_api import MyTracker\n",
"params = {\n",
" 'dateFrom': '2024-06-24',\n",
" 'dateTo': '2024-06-25',\n",
" 'selectors': 'eventName,idAppVersionTitle,idOsTitle,tsEvent,tsInsert,idDevice,params.name,params.value,customUserId',\n",
" 'idApp': 61475,\n",
"# 'idApp': '61389,61390,61475,61476,80840,80842,80843,95584',\n",
" 'event': 'customEvents'\n",
"}\n",
"client = MyTracker(api_user_id=API_USER_ID, api_secret_key=API_SECRET_KEY)\n",
"df = client.get_raw_data(params)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "faebbf0a-68e9-45d8-8969-6fc288ca998e",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" eventName | \n",
" idAppVersionTitle | \n",
" idOsTitle | \n",
" tsEvent | \n",
" tsInsert | \n",
" idDevice | \n",
" params.name | \n",
" params.value | \n",
" customUserId | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" mt_login | \n",
" 2.19.2-d1a60611 | \n",
" Android | \n",
" 1719296521 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" [] | \n",
" [] | \n",
" [f2fa6186-1c44-4f82-b62b-34ac023d17b1,a5086f93... | \n",
"
\n",
" \n",
" | 1 | \n",
" mt_login | \n",
" 2.19.2-d1a60611 | \n",
" Android | \n",
" 1719296530 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" [] | \n",
" [] | \n",
" [f2fa6186-1c44-4f82-b62b-34ac023d17b1,a5086f93... | \n",
"
\n",
" \n",
" | 2 | \n",
" mt_login | \n",
" 2.19.1-08f155b8 | \n",
" Android | \n",
" 1719296778 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" [] | \n",
" [] | \n",
" [432b4ca1-82f3-4cf7-a714-f08adfdb4343,27d6f62a... | \n",
"
\n",
" \n",
" | 3 | \n",
" mt_login | \n",
" 2.19.1-08f155b8 | \n",
" Android | \n",
" 1719296906 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" [] | \n",
" [] | \n",
" [432b4ca1-82f3-4cf7-a714-f08adfdb4343,27d6f62a... | \n",
"
\n",
" \n",
" | 4 | \n",
" mt_login | \n",
" 2.20.0-02c55807 | \n",
" Android | \n",
" 1719306146 | \n",
" 1719312270 | \n",
" 86868404654 | \n",
" [] | \n",
" [] | \n",
" [04203afa-27b3-4844-95da-8238bf69df4a,2fed9ec3... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" eventName idAppVersionTitle idOsTitle tsEvent tsInsert idDevice \\\n",
"0 mt_login 2.19.2-d1a60611 Android 1719296521 1719301344 52344631831 \n",
"1 mt_login 2.19.2-d1a60611 Android 1719296530 1719301344 52344631831 \n",
"2 mt_login 2.19.1-08f155b8 Android 1719296778 1719301344 52344631831 \n",
"3 mt_login 2.19.1-08f155b8 Android 1719296906 1719301344 52344631831 \n",
"4 mt_login 2.20.0-02c55807 Android 1719306146 1719312270 86868404654 \n",
"\n",
" params.name params.value customUserId \n",
"0 [] [] [f2fa6186-1c44-4f82-b62b-34ac023d17b1,a5086f93... \n",
"1 [] [] [f2fa6186-1c44-4f82-b62b-34ac023d17b1,a5086f93... \n",
"2 [] [] [432b4ca1-82f3-4cf7-a714-f08adfdb4343,27d6f62a... \n",
"3 [] [] [432b4ca1-82f3-4cf7-a714-f08adfdb4343,27d6f62a... \n",
"4 [] [] [04203afa-27b3-4844-95da-8238bf69df4a,2fed9ec3... "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "6cc5d5ab-3fd7-47a6-94ba-1986ccebff6e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" eventName | \n",
" idAppVersionTitle | \n",
" idOsTitle | \n",
" tsEvent | \n",
" tsInsert | \n",
" idDevice | \n",
" params.name | \n",
" params.value | \n",
" customUserId | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" mt_login | \n",
" 2.19.2-d1a60611 | \n",
" Android | \n",
" 1719296521 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" [] | \n",
" [] | \n",
" [f2fa6186-1c44-4f82-b62b-34ac023d17b1,a5086f93... | \n",
"
\n",
" \n",
" | 1 | \n",
" mt_login | \n",
" 2.19.2-d1a60611 | \n",
" Android | \n",
" 1719296530 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" [] | \n",
" [] | \n",
" [f2fa6186-1c44-4f82-b62b-34ac023d17b1,a5086f93... | \n",
"
\n",
" \n",
" | 2 | \n",
" mt_login | \n",
" 2.19.1-08f155b8 | \n",
" Android | \n",
" 1719296778 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" [] | \n",
" [] | \n",
" [432b4ca1-82f3-4cf7-a714-f08adfdb4343,27d6f62a... | \n",
"
\n",
" \n",
" | 3 | \n",
" mt_login | \n",
" 2.19.1-08f155b8 | \n",
" Android | \n",
" 1719296906 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" [] | \n",
" [] | \n",
" [432b4ca1-82f3-4cf7-a714-f08adfdb4343,27d6f62a... | \n",
"
\n",
" \n",
" | 4 | \n",
" mt_login | \n",
" 2.20.0-02c55807 | \n",
" Android | \n",
" 1719306146 | \n",
" 1719312270 | \n",
" 86868404654 | \n",
" [] | \n",
" [] | \n",
" [04203afa-27b3-4844-95da-8238bf69df4a,2fed9ec3... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" eventName idAppVersionTitle idOsTitle tsEvent tsInsert idDevice \\\n",
"0 mt_login 2.19.2-d1a60611 Android 1719296521 1719301344 52344631831 \n",
"1 mt_login 2.19.2-d1a60611 Android 1719296530 1719301344 52344631831 \n",
"2 mt_login 2.19.1-08f155b8 Android 1719296778 1719301344 52344631831 \n",
"3 mt_login 2.19.1-08f155b8 Android 1719296906 1719301344 52344631831 \n",
"4 mt_login 2.20.0-02c55807 Android 1719306146 1719312270 86868404654 \n",
"\n",
" params.name params.value customUserId \n",
"0 [] [] [f2fa6186-1c44-4f82-b62b-34ac023d17b1,a5086f93... \n",
"1 [] [] [f2fa6186-1c44-4f82-b62b-34ac023d17b1,a5086f93... \n",
"2 [] [] [432b4ca1-82f3-4cf7-a714-f08adfdb4343,27d6f62a... \n",
"3 [] [] [432b4ca1-82f3-4cf7-a714-f08adfdb4343,27d6f62a... \n",
"4 [] [] [04203afa-27b3-4844-95da-8238bf69df4a,2fed9ec3... "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(df.head())"
]
},
{
"cell_type": "markdown",
"id": "ecec118b-58cc-44ea-98c7-3e09603b5dfa",
"metadata": {
"jp-MarkdownHeadingCollapsed": true
},
"source": [
"# Предобработка\n",
"Конвертация дат, фильтрация"
]
},
{
"cell_type": "markdown",
"id": "5378ddb8-2e0a-45cd-84fc-4dd40cf46376",
"metadata": {},
"source": [
"## Convert params to dict"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "342ec60b-3ce7-4ac0-a166-d3b1f9be79f6",
"metadata": {},
"outputs": [],
"source": [
"import ast\n",
"df['params'] = df.apply(lambda it: dict(zip(ast.literal_eval(it['params.name']), ast.literal_eval(it['params.value']))), axis=1)\n",
"df.drop(columns=['params.name', 'params.value'], axis=1, inplace=True)"
]
},
{
"cell_type": "markdown",
"id": "10c5761d-4504-4bdd-a9f1-bd479c9cf3eb",
"metadata": {},
"source": [
"## Extract account_id"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "f1ec9e4f-8b6b-45c7-acc5-c4cc66bd3fad",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" eventName | \n",
" idAppVersionTitle | \n",
" idOsTitle | \n",
" tsEvent | \n",
" tsInsert | \n",
" idDevice | \n",
" params | \n",
" account_id | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" mt_login | \n",
" 2.19.2-d1a60611 | \n",
" Android | \n",
" 1719296521 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" {} | \n",
" f2fa6186-1c44-4f82-b62b-34ac023d17b1 | \n",
"
\n",
" \n",
" | 1 | \n",
" mt_login | \n",
" 2.19.2-d1a60611 | \n",
" Android | \n",
" 1719296530 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" {} | \n",
" f2fa6186-1c44-4f82-b62b-34ac023d17b1 | \n",
"
\n",
" \n",
" | 2 | \n",
" mt_login | \n",
" 2.19.1-08f155b8 | \n",
" Android | \n",
" 1719296778 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" {} | \n",
" 432b4ca1-82f3-4cf7-a714-f08adfdb4343 | \n",
"
\n",
" \n",
" | 3 | \n",
" mt_login | \n",
" 2.19.1-08f155b8 | \n",
" Android | \n",
" 1719296906 | \n",
" 1719301344 | \n",
" 52344631831 | \n",
" {} | \n",
" 432b4ca1-82f3-4cf7-a714-f08adfdb4343 | \n",
"
\n",
" \n",
" | 4 | \n",
" mt_login | \n",
" 2.20.0-02c55807 | \n",
" Android | \n",
" 1719306146 | \n",
" 1719312270 | \n",
" 86868404654 | \n",
" {} | \n",
" 04203afa-27b3-4844-95da-8238bf69df4a | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 7664 | \n",
" swipe | \n",
" 2.20.0-ddc6a301 | \n",
" Android | \n",
" 1719309083 | \n",
" 1719317825 | \n",
" 70284455492 | \n",
" {'code': 'LOYALTY_BALANCE.ACCOUNTS_WIDGETS', '... | \n",
" 43807c7d-14c9-41d0-9f0d-3041524180e6 | \n",
"
\n",
" \n",
" | 7665 | \n",
" swipe | \n",
" 2.20.0-ddc6a301 | \n",
" Android | \n",
" 1719309089 | \n",
" 1719317825 | \n",
" 70284455492 | \n",
" {'code': 'LOYALTY_BALANCE.TRANSACTION_FILTERS'... | \n",
" 43807c7d-14c9-41d0-9f0d-3041524180e6 | \n",
"
\n",
" \n",
" | 7666 | \n",
" swipe | \n",
" 2.20.0-ddc6a301 | \n",
" Android | \n",
" 1719314829 | \n",
" 1719318680 | \n",
" 70284455492 | \n",
" {'code': 'PROFILE.PROFILE', 'name': 'Profile',... | \n",
" 43807c7d-14c9-41d0-9f0d-3041524180e6 | \n",
"
\n",
" \n",
" | 7667 | \n",
" swipe | \n",
" 2.20.0-ddc6a301 | \n",
" Android | \n",
" 1719314830 | \n",
" 1719318680 | \n",
" 70284455492 | \n",
" {'code': 'PROFILE.PROFILE', 'name': 'Profile',... | \n",
" 43807c7d-14c9-41d0-9f0d-3041524180e6 | \n",
"
\n",
" \n",
" | 7668 | \n",
" swipe | \n",
" 2.20.0-ddc6a301 | \n",
" Android | \n",
" 1719314831 | \n",
" 1719318680 | \n",
" 70284455492 | \n",
" {'code': 'PROFILE.PROFILE', 'name': 'Profile',... | \n",
" 43807c7d-14c9-41d0-9f0d-3041524180e6 | \n",
"
\n",
" \n",
"
\n",
"
7669 rows × 8 columns
\n",
"
"
],
"text/plain": [
" eventName idAppVersionTitle idOsTitle tsEvent tsInsert \\\n",
"0 mt_login 2.19.2-d1a60611 Android 1719296521 1719301344 \n",
"1 mt_login 2.19.2-d1a60611 Android 1719296530 1719301344 \n",
"2 mt_login 2.19.1-08f155b8 Android 1719296778 1719301344 \n",
"3 mt_login 2.19.1-08f155b8 Android 1719296906 1719301344 \n",
"4 mt_login 2.20.0-02c55807 Android 1719306146 1719312270 \n",
"... ... ... ... ... ... \n",
"7664 swipe 2.20.0-ddc6a301 Android 1719309083 1719317825 \n",
"7665 swipe 2.20.0-ddc6a301 Android 1719309089 1719317825 \n",
"7666 swipe 2.20.0-ddc6a301 Android 1719314829 1719318680 \n",
"7667 swipe 2.20.0-ddc6a301 Android 1719314830 1719318680 \n",
"7668 swipe 2.20.0-ddc6a301 Android 1719314831 1719318680 \n",
"\n",
" idDevice params \\\n",
"0 52344631831 {} \n",
"1 52344631831 {} \n",
"2 52344631831 {} \n",
"3 52344631831 {} \n",
"4 86868404654 {} \n",
"... ... ... \n",
"7664 70284455492 {'code': 'LOYALTY_BALANCE.ACCOUNTS_WIDGETS', '... \n",
"7665 70284455492 {'code': 'LOYALTY_BALANCE.TRANSACTION_FILTERS'... \n",
"7666 70284455492 {'code': 'PROFILE.PROFILE', 'name': 'Profile',... \n",
"7667 70284455492 {'code': 'PROFILE.PROFILE', 'name': 'Profile',... \n",
"7668 70284455492 {'code': 'PROFILE.PROFILE', 'name': 'Profile',... \n",
"\n",
" account_id \n",
"0 f2fa6186-1c44-4f82-b62b-34ac023d17b1 \n",
"1 f2fa6186-1c44-4f82-b62b-34ac023d17b1 \n",
"2 432b4ca1-82f3-4cf7-a714-f08adfdb4343 \n",
"3 432b4ca1-82f3-4cf7-a714-f08adfdb4343 \n",
"4 04203afa-27b3-4844-95da-8238bf69df4a \n",
"... ... \n",
"7664 43807c7d-14c9-41d0-9f0d-3041524180e6 \n",
"7665 43807c7d-14c9-41d0-9f0d-3041524180e6 \n",
"7666 43807c7d-14c9-41d0-9f0d-3041524180e6 \n",
"7667 43807c7d-14c9-41d0-9f0d-3041524180e6 \n",
"7668 43807c7d-14c9-41d0-9f0d-3041524180e6 \n",
"\n",
"[7669 rows x 8 columns]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def exctr_account_id(s: str):\n",
" parts = re.split('[\\[\\,]+', str(s))\n",
" try:\n",
" return parts[1]\n",
" except IndexError:\n",
" return ''\n",
"\n",
"import re\n",
"#df['account_id'] = df['customUserId'].apply(lambda it: re.split('[\\[\\,]+', it))\n",
"df['account_id'] = df['customUserId'].apply(exctr_account_id)\n",
"df.drop(columns=['customUserId'], axis=1, inplace=True)\n",
"df"
]
},
{
"cell_type": "markdown",
"id": "29bf192e-c93e-494c-84f6-df3ed6313ec6",
"metadata": {},
"source": [
"## Преобразование timestampt в дату и время"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "bb2655f8-97ba-4d62-b0e0-8840e6956bbb",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"# tz_localize/tz_convert by https://stackoverflow.com/questions/42826388/using-time-zone-in-pandas-to-datetime/42826430#42826430\n",
"#df['eventDT'] = pd.to_datetime(df['tsEvent'], unit='s').dt.tz_localize('UTC')\n",
"df['eventDT_MSK'] = pd.to_datetime(df['tsEvent'], unit='s').dt.tz_localize('UTC').dt.tz_convert('Europe/Moscow')\n",
"df['eventInsertDT_MSK'] = pd.to_datetime(df['tsInsert'], unit='s').dt.tz_localize('UTC').dt.tz_convert('Europe/Moscow')"
]
},
{
"cell_type": "markdown",
"id": "60a01d99-dafb-437e-8588-5fbcd12f821b",
"metadata": {},
"source": [
"### Считаем время \"долёта\" событий"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ef31683c-01dc-436e-920a-b948678d6d23",
"metadata": {},
"outputs": [],
"source": [
"df['ts_diff'] = df['eventInsertDT_MSK'] - df['eventDT_MSK']"
]
},
{
"cell_type": "markdown",
"id": "f9e2c3df-759c-4cfb-9dd2-1a7bd7e9ac5a",
"metadata": {},
"source": [
"### Сортируем по времени событий"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "86b85fc0-40e2-47bd-8e4a-5ec219de90bb",
"metadata": {},
"outputs": [],
"source": [
"df.sort_values(by=['tsEvent'], inplace=True)"
]
},
{
"cell_type": "markdown",
"id": "2392bce6-b47b-4102-a3f0-aabc5b8d517d",
"metadata": {},
"source": [
"# Фильтрация и примеры выборки"
]
},
{
"cell_type": "markdown",
"id": "23bc5555-a217-44d6-a67e-7c8af6c3aff2",
"metadata": {},
"source": [
"## Фильтрация по имени события eventName"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "f9b36c21-ac07-4851-828c-2775db14c2db",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" eventName | \n",
" idAppVersionTitle | \n",
" idOsTitle | \n",
" tsEvent | \n",
" tsInsert | \n",
" idDevice | \n",
" params | \n",
" account_id | \n",
" eventDT_MSK | \n",
" eventInsertDT_MSK | \n",
" ts_diff | \n",
"
\n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [eventName, idAppVersionTitle, idOsTitle, tsEvent, tsInsert, idDevice, params, account_id, eventDT_MSK, eventInsertDT_MSK, ts_diff]\n",
"Index: []"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['_MyTrackerIdTestEventDEBUG' == df['eventName']]"
]
},
{
"cell_type": "markdown",
"id": "963549a8-9162-4aaa-b518-358de3928807",
"metadata": {},
"source": [
"## Фильтрация по account_id"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "1444e3b1-fddc-4841-ac3d-30489a42e1b0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" eventName | \n",
" idAppVersionTitle | \n",
" idOsTitle | \n",
" tsEvent | \n",
" tsInsert | \n",
" idDevice | \n",
" params | \n",
" account_id | \n",
" eventDT_MSK | \n",
" eventInsertDT_MSK | \n",
" ts_diff | \n",
"
\n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [eventName, idAppVersionTitle, idOsTitle, tsEvent, tsInsert, idDevice, params, account_id, eventDT_MSK, eventInsertDT_MSK, ts_diff]\n",
"Index: []"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['262c20d2-2d71-40bf-aa86-908f27e08c48' == df['account_id']]"
]
},
{
"cell_type": "markdown",
"id": "5941b0ee-d503-4d63-9925-7c5be11037eb",
"metadata": {},
"source": [
"## Фильтрация по номеру девайса"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "e127f588-914a-4733-8bab-c9b1fea46227",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" eventName | \n",
" idAppVersionTitle | \n",
" idOsTitle | \n",
" tsEvent | \n",
" tsInsert | \n",
" idDevice | \n",
" params | \n",
" account_id | \n",
" eventDT_MSK | \n",
" eventInsertDT_MSK | \n",
" ts_diff | \n",
"
\n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [eventName, idAppVersionTitle, idOsTitle, tsEvent, tsInsert, idDevice, params, account_id, eventDT_MSK, eventInsertDT_MSK, ts_diff]\n",
"Index: []"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[1234 == df['idDevice']]"
]
},
{
"cell_type": "markdown",
"id": "3005c0d6-b5fb-4fff-a77b-5e8c62ccd6f6",
"metadata": {},
"source": [
"## Фильтрация по двум параметрам - девайсу И событию вместе"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1353c691-ba47-4c8c-b4e6-62ae08dcfebf",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"df[(df['eventName'] == 'press') & (1234 == df['idDevice'])]"
]
},
{
"cell_type": "markdown",
"id": "f75dad59-f353-4127-bf38-59e2560c8cd9",
"metadata": {},
"source": [
"## Фильтрация по ИЛИ - несколько событий"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "cc455f9e-334d-4346-84e1-8f9c786d5779",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" eventName | \n",
" idAppVersionTitle | \n",
" idOsTitle | \n",
" tsEvent | \n",
" tsInsert | \n",
" idDevice | \n",
" params | \n",
" account_id | \n",
" eventDT_MSK | \n",
" eventInsertDT_MSK | \n",
" ts_diff | \n",
"
\n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [eventName, idAppVersionTitle, idOsTitle, tsEvent, tsInsert, idDevice, params, account_id, eventDT_MSK, eventInsertDT_MSK, ts_diff]\n",
"Index: []"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[ ('_MyTrackerIdTestEventDEBUG' == df['eventName']) | ('_MyTrackerIdTestEventDEBUG_BeforeInitMyTracker' == df['eventName']) ]"
]
},
{
"cell_type": "markdown",
"id": "f22d6b23-d2b9-42a1-bf42-c8af8fff3b48",
"metadata": {},
"source": [
"## Примеры вывода и форматирования"
]
},
{
"cell_type": "markdown",
"id": "83975805-85f0-48bf-848f-a5503aef42c9",
"metadata": {},
"source": [
"## Вывод определённых (выбранных) столбцов"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "6b900db7-a92a-4a00-94af-7833744b03cd",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" eventName | \n",
" account_id | \n",
" ts_diff | \n",
"
\n",
" \n",
" \n",
" \n",
" | 4713 | \n",
" close | \n",
" b59243b4-9581-4f09-9844-1e6572d8622d | \n",
" 0 days 04:51:02 | \n",
"
\n",
" \n",
" | 4991 | \n",
" press | \n",
" b59243b4-9581-4f09-9844-1e6572d8622d | \n",
" 0 days 04:50:56 | \n",
"
\n",
" \n",
" | 4468 | \n",
" channels_channel_open | \n",
" b59243b4-9581-4f09-9844-1e6572d8622d | \n",
" 0 days 04:50:56 | \n",
"
\n",
" \n",
" | 4842 | \n",
" main_open | \n",
" b59243b4-9581-4f09-9844-1e6572d8622d | \n",
" 0 days 00:41:15 | \n",
"
\n",
" \n",
" | 4843 | \n",
" main_open | \n",
" b59243b4-9581-4f09-9844-1e6572d8622d | \n",
" 0 days 00:40:45 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 5739 | \n",
" swipe | \n",
" c356eb4c-5a33-48e2-b447-963ff0064328 | \n",
" 0 days 00:46:48 | \n",
"
\n",
" \n",
" | 5740 | \n",
" swipe | \n",
" c356eb4c-5a33-48e2-b447-963ff0064328 | \n",
" 0 days 00:46:47 | \n",
"
\n",
" \n",
" | 5722 | \n",
" main_open | \n",
" c356eb4c-5a33-48e2-b447-963ff0064328 | \n",
" 0 days 00:46:41 | \n",
"
\n",
" \n",
" | 5726 | \n",
" open | \n",
" c356eb4c-5a33-48e2-b447-963ff0064328 | \n",
" 0 days 00:46:41 | \n",
"
\n",
" \n",
" | 5730 | \n",
" radio_widget | \n",
" c356eb4c-5a33-48e2-b447-963ff0064328 | \n",
" 0 days 00:46:41 | \n",
"
\n",
" \n",
"
\n",
"
7669 rows × 3 columns
\n",
"
"
],
"text/plain": [
" eventName account_id \\\n",
"4713 close b59243b4-9581-4f09-9844-1e6572d8622d \n",
"4991 press b59243b4-9581-4f09-9844-1e6572d8622d \n",
"4468 channels_channel_open b59243b4-9581-4f09-9844-1e6572d8622d \n",
"4842 main_open b59243b4-9581-4f09-9844-1e6572d8622d \n",
"4843 main_open b59243b4-9581-4f09-9844-1e6572d8622d \n",
"... ... ... \n",
"5739 swipe c356eb4c-5a33-48e2-b447-963ff0064328 \n",
"5740 swipe c356eb4c-5a33-48e2-b447-963ff0064328 \n",
"5722 main_open c356eb4c-5a33-48e2-b447-963ff0064328 \n",
"5726 open c356eb4c-5a33-48e2-b447-963ff0064328 \n",
"5730 radio_widget c356eb4c-5a33-48e2-b447-963ff0064328 \n",
"\n",
" ts_diff \n",
"4713 0 days 04:51:02 \n",
"4991 0 days 04:50:56 \n",
"4468 0 days 04:50:56 \n",
"4842 0 days 00:41:15 \n",
"4843 0 days 00:40:45 \n",
"... ... \n",
"5739 0 days 00:46:48 \n",
"5740 0 days 00:46:47 \n",
"5722 0 days 00:46:41 \n",
"5726 0 days 00:46:41 \n",
"5730 0 days 00:46:41 \n",
"\n",
"[7669 rows x 3 columns]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Александр Петров дев\n",
"df[['eventName', 'account_id', 'ts_diff']]"
]
},
{
"cell_type": "markdown",
"id": "605b07b6-6bc6-423f-8d73-4efdafeca747",
"metadata": {},
"source": [
"## Вывод всех, кроме выбранных столбцов"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "e85c1185-4f1a-4ceb-93b1-2ef046f86fab",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" eventName | \n",
" idAppVersionTitle | \n",
" idOsTitle | \n",
" tsEvent | \n",
" tsInsert | \n",
" idDevice | \n",
" eventDT_MSK | \n",
" eventInsertDT_MSK | \n",
" ts_diff | \n",
"
\n",
" \n",
" \n",
" \n",
" | 4713 | \n",
" close | \n",
" 3.0.0 | \n",
" Android | \n",
" 1719196195 | \n",
" 1719213657 | \n",
" 46509549178 | \n",
" 2024-06-24 05:29:55+03:00 | \n",
" 2024-06-24 10:20:57+03:00 | \n",
" 0 days 04:51:02 | \n",
"
\n",
" \n",
" | 4991 | \n",
" press | \n",
" 3.0.0 | \n",
" Android | \n",
" 1719196201 | \n",
" 1719213657 | \n",
" 46509549178 | \n",
" 2024-06-24 05:30:01+03:00 | \n",
" 2024-06-24 10:20:57+03:00 | \n",
" 0 days 04:50:56 | \n",
"
\n",
" \n",
" | 4468 | \n",
" channels_channel_open | \n",
" 3.0.0 | \n",
" Android | \n",
" 1719196201 | \n",
" 1719213657 | \n",
" 46509549178 | \n",
" 2024-06-24 05:30:01+03:00 | \n",
" 2024-06-24 10:20:57+03:00 | \n",
" 0 days 04:50:56 | \n",
"
\n",
" \n",
" | 4842 | \n",
" main_open | \n",
" 3.0.0 | \n",
" Android | \n",
" 1719211182 | \n",
" 1719213657 | \n",
" 46509549178 | \n",
" 2024-06-24 09:39:42+03:00 | \n",
" 2024-06-24 10:20:57+03:00 | \n",
" 0 days 00:41:15 | \n",
"
\n",
" \n",
" | 4843 | \n",
" main_open | \n",
" 3.0.0 | \n",
" Android | \n",
" 1719211212 | \n",
" 1719213657 | \n",
" 46509549178 | \n",
" 2024-06-24 09:40:12+03:00 | \n",
" 2024-06-24 10:20:57+03:00 | \n",
" 0 days 00:40:45 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 5739 | \n",
" swipe | \n",
" 2.20.0-61b7e141 | \n",
" Android | \n",
" 1719327881 | \n",
" 1719330689 | \n",
" 86898910861 | \n",
" 2024-06-25 18:04:41+03:00 | \n",
" 2024-06-25 18:51:29+03:00 | \n",
" 0 days 00:46:48 | \n",
"
\n",
" \n",
" | 5740 | \n",
" swipe | \n",
" 2.20.0-61b7e141 | \n",
" Android | \n",
" 1719327882 | \n",
" 1719330689 | \n",
" 86898910861 | \n",
" 2024-06-25 18:04:42+03:00 | \n",
" 2024-06-25 18:51:29+03:00 | \n",
" 0 days 00:46:47 | \n",
"
\n",
" \n",
" | 5722 | \n",
" main_open | \n",
" 2.20.0-61b7e141 | \n",
" Android | \n",
" 1719327888 | \n",
" 1719330689 | \n",
" 86898910861 | \n",
" 2024-06-25 18:04:48+03:00 | \n",
" 2024-06-25 18:51:29+03:00 | \n",
" 0 days 00:46:41 | \n",
"
\n",
" \n",
" | 5726 | \n",
" open | \n",
" 2.20.0-61b7e141 | \n",
" Android | \n",
" 1719327888 | \n",
" 1719330689 | \n",
" 86898910861 | \n",
" 2024-06-25 18:04:48+03:00 | \n",
" 2024-06-25 18:51:29+03:00 | \n",
" 0 days 00:46:41 | \n",
"
\n",
" \n",
" | 5730 | \n",
" radio_widget | \n",
" 2.20.0-61b7e141 | \n",
" Android | \n",
" 1719327888 | \n",
" 1719330689 | \n",
" 86898910861 | \n",
" 2024-06-25 18:04:48+03:00 | \n",
" 2024-06-25 18:51:29+03:00 | \n",
" 0 days 00:46:41 | \n",
"
\n",
" \n",
"
\n",
"
7669 rows × 9 columns
\n",
"
"
],
"text/plain": [
" eventName idAppVersionTitle idOsTitle tsEvent \\\n",
"4713 close 3.0.0 Android 1719196195 \n",
"4991 press 3.0.0 Android 1719196201 \n",
"4468 channels_channel_open 3.0.0 Android 1719196201 \n",
"4842 main_open 3.0.0 Android 1719211182 \n",
"4843 main_open 3.0.0 Android 1719211212 \n",
"... ... ... ... ... \n",
"5739 swipe 2.20.0-61b7e141 Android 1719327881 \n",
"5740 swipe 2.20.0-61b7e141 Android 1719327882 \n",
"5722 main_open 2.20.0-61b7e141 Android 1719327888 \n",
"5726 open 2.20.0-61b7e141 Android 1719327888 \n",
"5730 radio_widget 2.20.0-61b7e141 Android 1719327888 \n",
"\n",
" tsInsert idDevice eventDT_MSK \\\n",
"4713 1719213657 46509549178 2024-06-24 05:29:55+03:00 \n",
"4991 1719213657 46509549178 2024-06-24 05:30:01+03:00 \n",
"4468 1719213657 46509549178 2024-06-24 05:30:01+03:00 \n",
"4842 1719213657 46509549178 2024-06-24 09:39:42+03:00 \n",
"4843 1719213657 46509549178 2024-06-24 09:40:12+03:00 \n",
"... ... ... ... \n",
"5739 1719330689 86898910861 2024-06-25 18:04:41+03:00 \n",
"5740 1719330689 86898910861 2024-06-25 18:04:42+03:00 \n",
"5722 1719330689 86898910861 2024-06-25 18:04:48+03:00 \n",
"5726 1719330689 86898910861 2024-06-25 18:04:48+03:00 \n",
"5730 1719330689 86898910861 2024-06-25 18:04:48+03:00 \n",
"\n",
" eventInsertDT_MSK ts_diff \n",
"4713 2024-06-24 10:20:57+03:00 0 days 04:51:02 \n",
"4991 2024-06-24 10:20:57+03:00 0 days 04:50:56 \n",
"4468 2024-06-24 10:20:57+03:00 0 days 04:50:56 \n",
"4842 2024-06-24 10:20:57+03:00 0 days 00:41:15 \n",
"4843 2024-06-24 10:20:57+03:00 0 days 00:40:45 \n",
"... ... ... \n",
"5739 2024-06-25 18:51:29+03:00 0 days 00:46:48 \n",
"5740 2024-06-25 18:51:29+03:00 0 days 00:46:47 \n",
"5722 2024-06-25 18:51:29+03:00 0 days 00:46:41 \n",
"5726 2024-06-25 18:51:29+03:00 0 days 00:46:41 \n",
"5730 2024-06-25 18:51:29+03:00 0 days 00:46:41 \n",
"\n",
"[7669 rows x 9 columns]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# By https://stackoverflow.com/questions/29763620/how-to-select-all-columns-except-one-in-pandas/53075169#53075169\n",
"df.loc[:, ~df.columns.isin(['params', 'account_id'])]"
]
}
],
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}