{
"cells": [
{
"cell_type": "code",
"execution_count": 144,
"id": "59e7fd1c-b4a6-40b6-9d14-b471cabcdcc5",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import sketch\n",
"import pandas as pd\n",
"import os\n",
"\n",
"os.environ['SKETCH_MAX_COLUMNS'] = '40'"
]
},
{
"cell_type": "code",
"execution_count": 155,
"id": "ec1df080-81d8-4e93-8fe8-6893026af6df",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"cust_data = pd.read_csv(\"/Users/normrasmussen/Downloads/churned_analysis.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 156,
"id": "3c724cbb-74a9-4727-8826-ebf58afa29ad",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" OrgID \n",
" Organization \n",
" Churn Date \n",
" 2022-01 \n",
" 2022-02 \n",
" 2022-03 \n",
" 2022-04 \n",
" 2022-05 \n",
" 2022-06 \n",
" 2022-07 \n",
" 2022-08 \n",
" 2022-09 \n",
" 2022-10 \n",
" 2022-11 \n",
" 2022-12 \n",
" 2023-01 \n",
" 2023-02 \n",
" 2023-03 \n",
" 2023-04 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 30867753 \n",
" Aquent \n",
" 2023-04 \n",
" 58 \n",
" 38 \n",
" 50 \n",
" 50 \n",
" 39 \n",
" 36 \n",
" 46 \n",
" 46 \n",
" 43.0 \n",
" 27.0 \n",
" 24.0 \n",
" 26 \n",
" 22 \n",
" 8.0 \n",
" 10.0 \n",
" 2.0 \n",
" \n",
" \n",
" 1 \n",
" 33375202 \n",
" BioLife Solutions, Inc. \n",
" 2023-04 \n",
" 11 \n",
" 7 \n",
" 4 \n",
" 11 \n",
" 4 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 2 \n",
" 30867495 \n",
" ZyXel Communications Inc \n",
" 2023-04 \n",
" 1 \n",
" 1 \n",
" 2 \n",
" 1 \n",
" 2 \n",
" 4 \n",
" 2 \n",
" 2 \n",
" 1.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1.0 \n",
" 1.0 \n",
" NaN \n",
" \n",
" \n",
" 3 \n",
" 32999202 \n",
" BrightLine Eating Solutions LLC \n",
" 2023-03 \n",
" 10,362 \n",
" 7,890 \n",
" 7,272 \n",
" 8,177 \n",
" 8,468 \n",
" 7,524 \n",
" 8,509 \n",
" 5,638 \n",
" 581.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 4 \n",
" 30867752 \n",
" Casio America Inc \n",
" 2023-03 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" OrgID Organization Churn Date 2022-01 2022-02 \n",
"0 30867753 Aquent 2023-04 58 38 \\\n",
"1 33375202 BioLife Solutions, Inc. 2023-04 11 7 \n",
"2 30867495 ZyXel Communications Inc 2023-04 1 1 \n",
"3 32999202 BrightLine Eating Solutions LLC 2023-03 10,362 7,890 \n",
"4 30867752 Casio America Inc 2023-03 NaN NaN \n",
"\n",
" 2022-03 2022-04 2022-05 2022-06 2022-07 2022-08 2022-09 2022-10 2022-11 \n",
"0 50 50 39 36 46 46 43.0 27.0 24.0 \\\n",
"1 4 11 4 NaN NaN NaN NaN NaN NaN \n",
"2 2 1 2 4 2 2 1.0 NaN NaN \n",
"3 7,272 8,177 8,468 7,524 8,509 5,638 581.0 NaN NaN \n",
"4 NaN NaN NaN 1 NaN NaN NaN NaN NaN \n",
"\n",
" 2022-12 2023-01 2023-02 2023-03 2023-04 \n",
"0 26 22 8.0 10.0 2.0 \n",
"1 NaN NaN NaN NaN NaN \n",
"2 NaN NaN 1.0 1.0 NaN \n",
"3 NaN NaN NaN NaN NaN \n",
"4 NaN NaN NaN NaN NaN "
]
},
"execution_count": 156,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cust_data.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 157,
"id": "720c2582-f382-4fe7-bfca-768c696302aa",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
"cust_data.fillna(0, inplace=True)\n",
" \n",
"
Copy \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cust_data.sketch.howto(\"Convert all NaN values to 0\")"
]
},
{
"cell_type": "code",
"execution_count": 168,
"id": "d659966c-830c-4f68-aa2a-ff8beb460177",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"cust_data.fillna(0, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 169,
"id": "30f91b34-32a1-41da-9303-2da779c6492f",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Organization \n",
" 2022-01 \n",
" 2022-02 \n",
" 2022-03 \n",
" 2022-04 \n",
" 2022-05 \n",
" 2022-06 \n",
" 2022-07 \n",
" 2022-08 \n",
" 2022-09 \n",
" 2022-10 \n",
" 2022-11 \n",
" 2022-12 \n",
" 2023-01 \n",
" 2023-02 \n",
" 2023-03 \n",
" 2023-04 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" Aquent \n",
" 58 \n",
" 38 \n",
" 50 \n",
" 50 \n",
" 39 \n",
" 36 \n",
" 46 \n",
" 46 \n",
" 43.0 \n",
" 27.0 \n",
" 24.0 \n",
" 26 \n",
" 22 \n",
" 8.0 \n",
" 10.0 \n",
" 2.0 \n",
" \n",
" \n",
" 1 \n",
" BioLife Solutions, Inc. \n",
" 11 \n",
" 7 \n",
" 4 \n",
" 11 \n",
" 4 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 2 \n",
" ZyXel Communications Inc \n",
" 1 \n",
" 1 \n",
" 2 \n",
" 1 \n",
" 2 \n",
" 4 \n",
" 2 \n",
" 2 \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0 \n",
" 0 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" \n",
" \n",
" 3 \n",
" BrightLine Eating Solutions LLC \n",
" 10362 \n",
" 7890 \n",
" 7272 \n",
" 8177 \n",
" 8468 \n",
" 7524 \n",
" 8509 \n",
" 5638 \n",
" 581.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 4 \n",
" Casio America Inc \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Organization 2022-01 2022-02 2022-03 2022-04 2022-05 \n",
"0 Aquent 58 38 50 50 39 \\\n",
"1 BioLife Solutions, Inc. 11 7 4 11 4 \n",
"2 ZyXel Communications Inc 1 1 2 1 2 \n",
"3 BrightLine Eating Solutions LLC 10362 7890 7272 8177 8468 \n",
"4 Casio America Inc 0 0 0 0 0 \n",
"\n",
" 2022-06 2022-07 2022-08 2022-09 2022-10 2022-11 2022-12 2023-01 2023-02 \n",
"0 36 46 46 43.0 27.0 24.0 26 22 8.0 \\\n",
"1 0 0 0 0.0 0.0 0.0 0 0 0.0 \n",
"2 4 2 2 1.0 0.0 0.0 0 0 1.0 \n",
"3 7524 8509 5638 581.0 0.0 0.0 0 0 0.0 \n",
"4 1 0 0 0.0 0.0 0.0 0 0 0.0 \n",
"\n",
" 2023-03 2023-04 \n",
"0 10.0 2.0 \n",
"1 0.0 0.0 \n",
"2 1.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 "
]
},
"execution_count": 169,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cust_data.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 160,
"id": "09aa7041-ade3-43a5-b7f2-477f1dd734f1",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
"# Remove the OrgID and Churn Date columns\n",
"cust_data = cust_data.drop(columns=['OrgID', 'Churn Date'])\n",
" \n",
"
Copy \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cust_data.sketch.howto(\"Remove the OrgID and Churn Date columns\")"
]
},
{
"cell_type": "code",
"execution_count": 173,
"id": "8d6d511c-1ee9-45e0-9f39-a7df08dfe5d4",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Organization \n",
" 2022-01 \n",
" 2022-02 \n",
" 2022-03 \n",
" 2022-04 \n",
" 2022-05 \n",
" 2022-06 \n",
" 2022-07 \n",
" 2022-08 \n",
" 2022-09 \n",
" 2022-10 \n",
" 2022-11 \n",
" 2022-12 \n",
" 2023-01 \n",
" 2023-02 \n",
" 2023-03 \n",
" 2023-04 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" Aquent \n",
" 58 \n",
" 38 \n",
" 50 \n",
" 50 \n",
" 39 \n",
" 36 \n",
" 46 \n",
" 46 \n",
" 43.0 \n",
" 27.0 \n",
" 24.0 \n",
" 26 \n",
" 22 \n",
" 8.0 \n",
" 10.0 \n",
" 2.0 \n",
" \n",
" \n",
" 1 \n",
" BioLife Solutions, Inc. \n",
" 11 \n",
" 7 \n",
" 4 \n",
" 11 \n",
" 4 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 2 \n",
" ZyXel Communications Inc \n",
" 1 \n",
" 1 \n",
" 2 \n",
" 1 \n",
" 2 \n",
" 4 \n",
" 2 \n",
" 2 \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0 \n",
" 0 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" \n",
" \n",
" 3 \n",
" BrightLine Eating Solutions LLC \n",
" 10362 \n",
" 7890 \n",
" 7272 \n",
" 8177 \n",
" 8468 \n",
" 7524 \n",
" 8509 \n",
" 5638 \n",
" 581.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 4 \n",
" Casio America Inc \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 5 \n",
" Riviera Partners LLC \n",
" 81 \n",
" 19 \n",
" 51 \n",
" 26 \n",
" 26 \n",
" 32 \n",
" 79 \n",
" 68 \n",
" 35.0 \n",
" 23.0 \n",
" 33.0 \n",
" 25 \n",
" 75 \n",
" 71.0 \n",
" 29.0 \n",
" 4.0 \n",
" \n",
" \n",
" 6 \n",
" Viveve \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 4 \n",
" 1 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 19 \n",
" 3 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 7 \n",
" connectRN Inc. \n",
" 386 \n",
" 378 \n",
" 396 \n",
" 732 \n",
" 947 \n",
" 762 \n",
" 1203 \n",
" 889 \n",
" 438.0 \n",
" 178.0 \n",
" 115.0 \n",
" 214 \n",
" 92 \n",
" 165.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 8 \n",
" Hammer Nutrition \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 2 \n",
" 7 \n",
" 5 \n",
" 4 \n",
" 5 \n",
" 6.0 \n",
" 6.0 \n",
" 0.0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 9 \n",
" National Campus and Community Radio Association \n",
" 63 \n",
" 15 \n",
" 10 \n",
" 4 \n",
" 8 \n",
" 2 \n",
" 3 \n",
" 0 \n",
" 4.0 \n",
" 4.0 \n",
" 6.0 \n",
" 5 \n",
" 5 \n",
" 2.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 10 \n",
" Portnoy, Messinger, Pearl & Associates, Inc. \n",
" 28 \n",
" 27 \n",
" 79 \n",
" 17 \n",
" 1 \n",
" 3 \n",
" 8 \n",
" 0 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 1 \n",
" 2 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 11 \n",
" Safari Energy \n",
" 2 \n",
" 37 \n",
" 19 \n",
" 2 \n",
" 1 \n",
" 38 \n",
" 24 \n",
" 6 \n",
" 21.0 \n",
" 35.0 \n",
" 10.0 \n",
" 7 \n",
" 1 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 12 \n",
" Starwood Pet Travel \n",
" 0 \n",
" 1 \n",
" 4 \n",
" 22 \n",
" 2 \n",
" 1 \n",
" 7 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 2 \n",
" 0 \n",
" 2.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 13 \n",
" Trax Technology Solutions Pte Ltd \n",
" 381 \n",
" 677 \n",
" 583 \n",
" 671 \n",
" 515 \n",
" 380 \n",
" 181 \n",
" 449 \n",
" 12.0 \n",
" 0.0 \n",
" 1.0 \n",
" 1 \n",
" 1 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 14 \n",
" Uber London Limited (POOL) \n",
" 721 \n",
" 775 \n",
" 825 \n",
" 606 \n",
" 578 \n",
" 501 \n",
" 497 \n",
" 543 \n",
" 628.0 \n",
" 505.0 \n",
" 650.0 \n",
" 1,270 \n",
" 1,957 \n",
" 190.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Organization 2022-01 2022-02 2022-03 \n",
"0 Aquent 58 38 50 \\\n",
"1 BioLife Solutions, Inc. 11 7 4 \n",
"2 ZyXel Communications Inc 1 1 2 \n",
"3 BrightLine Eating Solutions LLC 10362 7890 7272 \n",
"4 Casio America Inc 0 0 0 \n",
"5 Riviera Partners LLC 81 19 51 \n",
"6 Viveve 0 0 0 \n",
"7 connectRN Inc. 386 378 396 \n",
"8 Hammer Nutrition 0 1 1 \n",
"9 National Campus and Community Radio Association 63 15 10 \n",
"10 Portnoy, Messinger, Pearl & Associates, Inc. 28 27 79 \n",
"11 Safari Energy 2 37 19 \n",
"12 Starwood Pet Travel 0 1 4 \n",
"13 Trax Technology Solutions Pte Ltd 381 677 583 \n",
"14 Uber London Limited (POOL) 721 775 825 \n",
"\n",
" 2022-04 2022-05 2022-06 2022-07 2022-08 2022-09 2022-10 2022-11 2022-12 \n",
"0 50 39 36 46 46 43.0 27.0 24.0 26 \\\n",
"1 11 4 0 0 0 0.0 0.0 0.0 0 \n",
"2 1 2 4 2 2 1.0 0.0 0.0 0 \n",
"3 8177 8468 7524 8509 5638 581.0 0.0 0.0 0 \n",
"4 0 0 1 0 0 0.0 0.0 0.0 0 \n",
"5 26 26 32 79 68 35.0 23.0 33.0 25 \n",
"6 0 0 4 1 0 0.0 0.0 0.0 19 \n",
"7 732 947 762 1203 889 438.0 178.0 115.0 214 \n",
"8 2 7 5 4 5 6.0 6.0 0.0 0 \n",
"9 4 8 2 3 0 4.0 4.0 6.0 5 \n",
"10 17 1 3 8 0 1.0 0.0 1.0 1 \n",
"11 2 1 38 24 6 21.0 35.0 10.0 7 \n",
"12 22 2 1 7 0 0.0 0.0 0.0 2 \n",
"13 671 515 380 181 449 12.0 0.0 1.0 1 \n",
"14 606 578 501 497 543 628.0 505.0 650.0 1,270 \n",
"\n",
" 2023-01 2023-02 2023-03 2023-04 \n",
"0 22 8.0 10.0 2.0 \n",
"1 0 0.0 0.0 0.0 \n",
"2 0 1.0 1.0 0.0 \n",
"3 0 0.0 0.0 0.0 \n",
"4 0 0.0 0.0 0.0 \n",
"5 75 71.0 29.0 4.0 \n",
"6 3 0.0 0.0 0.0 \n",
"7 92 165.0 0.0 0.0 \n",
"8 0 0.0 0.0 0.0 \n",
"9 5 2.0 0.0 0.0 \n",
"10 2 0.0 0.0 0.0 \n",
"11 1 0.0 0.0 0.0 \n",
"12 0 2.0 0.0 0.0 \n",
"13 1 0.0 0.0 0.0 \n",
"14 1,957 190.0 0.0 0.0 "
]
},
"execution_count": 173,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cust_data.head(15)"
]
},
{
"cell_type": "code",
"execution_count": 176,
"id": "c13baa2d-428c-4ff4-a2f6-12737819fb9f",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
"# Convert index row, columns 1-17 value to datetime\n",
"cust_data.columns = pd.to_datetime(cust_data.columns)\n",
" \n",
"
Copy \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cust_data.sketch.howto(\"Convert index row, columns 1-17 value to datetime\")"
]
},
{
"cell_type": "code",
"execution_count": 179,
"id": "c229b344-94c8-4ab1-aa8d-1e15d6dc12bc",
"metadata": {
"tags": []
},
"outputs": [
{
"ename": "ValueError",
"evalue": "Length mismatch: Expected axis has 17 elements, new values have 15 elements",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[179], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Convert index row, columns 1-17 value to datetime\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[43mcust_data\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcolumns\u001b[49m \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mto_datetime(cust_data\u001b[38;5;241m.\u001b[39mcolumns[\u001b[38;5;241m1\u001b[39m:\u001b[38;5;241m16\u001b[39m])\n",
"File \u001b[0;32m~/.pyenv/versions/3.11.1/envs/jupyter/lib/python3.11/site-packages/pandas/core/generic.py:6002\u001b[0m, in \u001b[0;36mNDFrame.__setattr__\u001b[0;34m(self, name, value)\u001b[0m\n\u001b[1;32m 6000\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 6001\u001b[0m \u001b[38;5;28mobject\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__getattribute__\u001b[39m(\u001b[38;5;28mself\u001b[39m, name)\n\u001b[0;32m-> 6002\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mobject\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__setattr__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6003\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m:\n\u001b[1;32m 6004\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n",
"File \u001b[0;32m~/.pyenv/versions/3.11.1/envs/jupyter/lib/python3.11/site-packages/pandas/_libs/properties.pyx:69\u001b[0m, in \u001b[0;36mpandas._libs.properties.AxisProperty.__set__\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m~/.pyenv/versions/3.11.1/envs/jupyter/lib/python3.11/site-packages/pandas/core/generic.py:730\u001b[0m, in \u001b[0;36mNDFrame._set_axis\u001b[0;34m(self, axis, labels)\u001b[0m\n\u001b[1;32m 725\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 726\u001b[0m \u001b[38;5;124;03mThis is called from the cython code when we set the `index` attribute\u001b[39;00m\n\u001b[1;32m 727\u001b[0m \u001b[38;5;124;03mdirectly, e.g. `series.index = [1, 2, 3]`.\u001b[39;00m\n\u001b[1;32m 728\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 729\u001b[0m labels \u001b[38;5;241m=\u001b[39m ensure_index(labels)\n\u001b[0;32m--> 730\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_mgr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_axis\u001b[49m\u001b[43m(\u001b[49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlabels\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 731\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clear_item_cache()\n",
"File \u001b[0;32m~/.pyenv/versions/3.11.1/envs/jupyter/lib/python3.11/site-packages/pandas/core/internals/managers.py:225\u001b[0m, in \u001b[0;36mBaseBlockManager.set_axis\u001b[0;34m(self, axis, new_labels)\u001b[0m\n\u001b[1;32m 223\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mset_axis\u001b[39m(\u001b[38;5;28mself\u001b[39m, axis: AxisInt, new_labels: Index) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 224\u001b[0m \u001b[38;5;66;03m# Caller is responsible for ensuring we have an Index object.\u001b[39;00m\n\u001b[0;32m--> 225\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_set_axis\u001b[49m\u001b[43m(\u001b[49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnew_labels\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 226\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes[axis] \u001b[38;5;241m=\u001b[39m new_labels\n",
"File \u001b[0;32m~/.pyenv/versions/3.11.1/envs/jupyter/lib/python3.11/site-packages/pandas/core/internals/base.py:70\u001b[0m, in \u001b[0;36mDataManager._validate_set_axis\u001b[0;34m(self, axis, new_labels)\u001b[0m\n\u001b[1;32m 67\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n\u001b[1;32m 69\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m new_len \u001b[38;5;241m!=\u001b[39m old_len:\n\u001b[0;32m---> 70\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 71\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLength mismatch: Expected axis has \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mold_len\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m elements, new \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalues have \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnew_len\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m elements\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 73\u001b[0m )\n",
"\u001b[0;31mValueError\u001b[0m: Length mismatch: Expected axis has 17 elements, new values have 15 elements"
]
}
],
"source": [
"# Convert index row, columns 1-17 value to datetime\n",
"cust_data.columns = pd.to_datetime(cust_data.columns[1:16])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c574a86b-67a8-4cdd-9cbd-b7461c2f1c8c",
"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.1"
}
},
"nbformat": 4,
"nbformat_minor": 5
}