{
"cells": [
{
"cell_type": "markdown",
"id": "plain-hampton",
"metadata": {},
"source": [
"# Time Series Data"
]
},
{
"cell_type": "markdown",
"id": "comparative-helmet",
"metadata": {},
"source": [
"## What is Time Series Data"
]
},
{
"cell_type": "markdown",
"id": "chubby-internet",
"metadata": {},
"source": [
"**Time series data** is data that reflects either time or dates. In Pandas this type of data is known as datetime. If you are working with time series data, as we shall see, there are significant reasons to ensure that Pandas understands that the data at hand is a date or a time. It allows for easily manipulation and cleaning of inconsistent data formatting. Let us consider a simple example. Imagine we were given dates from one source as 01/02/2002 and another as 01.02.2002. Both are valid date formats, but they are structured entirely differently. Imagine now you had a third dataset that organized the data as 2 January 2002. Your task is to merge all these datasets together.\n",
"\n",
"If you wanted to do that, you could write out some Python and script them into alignment, but Pandas offers the ability to do that automatically. In order to leverage that ability, however, you must tell Pandas that the data at hand is datetime data. Exactly how you do that, we will learn in this chapter.\n",
"\n",
"Time series data is important for many different aspects of industry and academia. In the financial sector, time series data allows for one to understand the past performance of a stock. This is particularly useful in machine learning predictions which need to understand the past to predict accurately the future. More importantly, they need to understand the past a sequence of data. In the humanities, time series data is important for understand historical context and, as we shall see, plotting data temporally. Understanding how to work with time series data, therefore, in Pandas is absolutely essential."
]
},
{
"cell_type": "markdown",
"id": "premium-separate",
"metadata": {},
"source": [
"## About the Dataset"
]
},
{
"cell_type": "markdown",
"id": "accomplished-cleveland",
"metadata": {},
"source": [
"In this chapter, we will be working with an early version of a dataset I helped cultivate at the *Bitter Aloe Project*, a digital humanities project that explores apartheid violence in South Africa during the 20th century. This dataset comes from Vol. 7 of the Truth and Reconciliation Commission's *Final Report*. I am using not our final, well-cleaned version of this dataset, rather an earlier version for one key reason. It contains problematic cells and structure. This is more reflective of real-world data, which will often times come from multiple sources and need to be cleaned and structured. As such, it is good practice in this chapter to try and address some of the common problems that you will encounter with time series data."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "controlling-revolution",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
ObjectId
\n",
"
Last
\n",
"
First
\n",
"
Description
\n",
"
Place
\n",
"
Yr
\n",
"
Homeland
\n",
"
Province
\n",
"
Long
\n",
"
Lat
\n",
"
HRV
\n",
"
ORG
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1
\n",
"
AARON
\n",
"
Thabo Simon
\n",
"
An ANCYL member who was shot and severely inju...
\n",
"
Bethulie
\n",
"
1991.0
\n",
"
NaN
\n",
"
Orange Free State
\n",
"
25.97552
\n",
"
-30.503290
\n",
"
shoot|injure
\n",
"
ANC|ANCYL|Police|SAP
\n",
"
\n",
"
\n",
"
1
\n",
"
2
\n",
"
ABBOTT
\n",
"
Montaigne
\n",
"
A member of the SADF who was severely injured ...
\n",
"
Messina
\n",
"
1987.0
\n",
"
NaN
\n",
"
Transvaal
\n",
"
30.039597
\n",
"
-22.351308
\n",
"
injure
\n",
"
SADF
\n",
"
\n",
"
\n",
"
2
\n",
"
3
\n",
"
ABRAHAM
\n",
"
Nzaliseko Christopher
\n",
"
A COSAS supporter who was kicked and beaten wi...
\n",
"
Mdantsane
\n",
"
1985.0
\n",
"
Ciskei
\n",
"
Cape of Good Hope
\n",
"
27.6708791
\n",
"
-32.958623
\n",
"
beat
\n",
"
COSAS|Police
\n",
"
\n",
"
\n",
"
3
\n",
"
4
\n",
"
ABRAHAMS
\n",
"
Achmat Fardiel
\n",
"
Was shot and blinded in one eye by members of ...
\n",
"
Athlone
\n",
"
1985.0
\n",
"
NaN
\n",
"
Cape of Good Hope
\n",
"
18.50214
\n",
"
-33.967220
\n",
"
shoot|blind
\n",
"
SAP
\n",
"
\n",
"
\n",
"
4
\n",
"
5
\n",
"
ABRAHAMS
\n",
"
Annalene Mildred
\n",
"
Was shot and injured by members of the SAP in ...
\n",
"
Robertson
\n",
"
1990.0
\n",
"
NaN
\n",
"
Cape of Good Hope
\n",
"
19.883611
\n",
"
-33.802220
\n",
"
shoot|injure
\n",
"
Police|SAP
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
20829
\n",
"
20888
\n",
"
XUZA
\n",
"
Mandla
\n",
"
Was severely injured when he was stoned by a f...
\n",
"
Carletonville
\n",
"
1991.0
\n",
"
NaN
\n",
"
Transvaal
\n",
"
27.397673
\n",
"
-26.360943
\n",
"
injure|stone
\n",
"
ANC
\n",
"
\n",
"
\n",
"
20830
\n",
"
20889
\n",
"
YAKA
\n",
"
Mbangomuni
\n",
"
An IFP supporter and acting induna who was sho...
\n",
"
Mvutshini
\n",
"
1993.0
\n",
"
KwaZulu
\n",
"
Natal
\n",
"
30.28172
\n",
"
-30.868900
\n",
"
shoot
\n",
"
NaN
\n",
"
\n",
"
\n",
"
20831
\n",
"
20890
\n",
"
YALI
\n",
"
Khayalethu
\n",
"
Was shot by members of the SAP in Lingelihle, ...
\n",
"
Cradock
\n",
"
1986.0
\n",
"
NaN
\n",
"
Cape of Good Hope
\n",
"
25.619176
\n",
"
-32.164221
\n",
"
shoot
\n",
"
SAP
\n",
"
\n",
"
\n",
"
20832
\n",
"
20891
\n",
"
YALO
\n",
"
Bikiwe
\n",
"
An IFP supporter whose house and possessions w...
\n",
"
Port Shepstone
\n",
"
1994.0
\n",
"
NaN
\n",
"
Natal
\n",
"
30.4297304
\n",
"
-30.752126
\n",
"
destroy
\n",
"
ANC
\n",
"
\n",
"
\n",
"
20833
\n",
"
20892
\n",
"
YALOLO-BOOYSEN
\n",
"
Geoffrey Yali
\n",
"
An ANC supporter and youth activist who was to...
\n",
"
George
\n",
"
1986.0
\n",
"
NaN
\n",
"
Cape of Good Hope
\n",
"
22.459722
\n",
"
-33.964440
\n",
"
torture|detain|torture
\n",
"
ANC|SAP
\n",
"
\n",
" \n",
"
\n",
"
20834 rows × 12 columns
\n",
"
"
],
"text/plain": [
" ObjectId Last First \\\n",
"0 1 AARON Thabo Simon \n",
"1 2 ABBOTT Montaigne \n",
"2 3 ABRAHAM Nzaliseko Christopher \n",
"3 4 ABRAHAMS Achmat Fardiel \n",
"4 5 ABRAHAMS Annalene Mildred \n",
"... ... ... ... \n",
"20829 20888 XUZA Mandla \n",
"20830 20889 YAKA Mbangomuni \n",
"20831 20890 YALI Khayalethu \n",
"20832 20891 YALO Bikiwe \n",
"20833 20892 YALOLO-BOOYSEN Geoffrey Yali \n",
"\n",
" Description Place \\\n",
"0 An ANCYL member who was shot and severely inju... Bethulie \n",
"1 A member of the SADF who was severely injured ... Messina \n",
"2 A COSAS supporter who was kicked and beaten wi... Mdantsane \n",
"3 Was shot and blinded in one eye by members of ... Athlone \n",
"4 Was shot and injured by members of the SAP in ... Robertson \n",
"... ... ... \n",
"20829 Was severely injured when he was stoned by a f... Carletonville \n",
"20830 An IFP supporter and acting induna who was sho... Mvutshini \n",
"20831 Was shot by members of the SAP in Lingelihle, ... Cradock \n",
"20832 An IFP supporter whose house and possessions w... Port Shepstone \n",
"20833 An ANC supporter and youth activist who was to... George \n",
"\n",
" Yr Homeland Province Long Lat \\\n",
"0 1991.0 NaN Orange Free State 25.97552 -30.503290 \n",
"1 1987.0 NaN Transvaal 30.039597 -22.351308 \n",
"2 1985.0 Ciskei Cape of Good Hope 27.6708791 -32.958623 \n",
"3 1985.0 NaN Cape of Good Hope 18.50214 -33.967220 \n",
"4 1990.0 NaN Cape of Good Hope 19.883611 -33.802220 \n",
"... ... ... ... ... ... \n",
"20829 1991.0 NaN Transvaal 27.397673 -26.360943 \n",
"20830 1993.0 KwaZulu Natal 30.28172 -30.868900 \n",
"20831 1986.0 NaN Cape of Good Hope 25.619176 -32.164221 \n",
"20832 1994.0 NaN Natal 30.4297304 -30.752126 \n",
"20833 1986.0 NaN Cape of Good Hope 22.459722 -33.964440 \n",
"\n",
" HRV ORG \n",
"0 shoot|injure ANC|ANCYL|Police|SAP \n",
"1 injure SADF \n",
"2 beat COSAS|Police \n",
"3 shoot|blind SAP \n",
"4 shoot|injure Police|SAP \n",
"... ... ... \n",
"20829 injure|stone ANC \n",
"20830 shoot NaN \n",
"20831 shoot SAP \n",
"20832 destroy ANC \n",
"20833 torture|detain|torture ANC|SAP \n",
"\n",
"[20834 rows x 12 columns]"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"df = pd.read_csv(\"../data/trc.csv\")\n",
"df"
]
},
{
"cell_type": "markdown",
"id": "median-present",
"metadata": {},
"source": [
"As we can see, we have a few different columns which are relatively straight forward. In this notebook, however, I want to focus on Yr, which is a column that contains a single year referenced within the description. This corresponds to the year in which the violence described occurred. Notice, however, that we have a problem. Year is being recognized as a float (a number with a decimal place), or floating number. To confirm our suspicion, let's take a look at the data types by using the following command."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "ceramic-fifty",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"ObjectId int64\n",
"Last object\n",
"First object\n",
"Description object\n",
"Place object\n",
"Yr float64\n",
"Homeland object\n",
"Province object\n",
"Long object\n",
"Lat float64\n",
"HRV object\n",
"ORG object\n",
"dtype: object"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(df.dtypes)"
]
},
{
"cell_type": "markdown",
"id": "natural-cliff",
"metadata": {},
"source": [
"Here, we can see all the different columns and their corresponding data types. Notice that Yr has float64. This confirms our suspicion. Why is this a problem? Well, if we were to try and plot the data by year (see the bar graph below), we would have floating numbers in that graph. This does not look clean. We could manually adjust these years to have no decimal place, but that requires effort on a case-by-case basis. Instead, it is best practice to convert these floats either to integers or to datetime data. Both have their advantages, but if your end goal is larger data analysis on time series data (not just plotting the years), I would opt for the latter. In order to do either, however, we must clean the data to get it into the correct format."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "hired-savings",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df['Yr'].value_counts().sort_index().plot.bar(figsize=(20,5))"
]
},
{
"cell_type": "markdown",
"id": "independent-hello",
"metadata": {},
"source": [
"## Cleaning the Data from Float to Int"
]
},
{
"cell_type": "markdown",
"id": "quarterly-script",
"metadata": {},
"source": [
"Let's first try and convert our float column into an integer column. If we execute the command below which would normally achieve this task, we get the following error."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "identified-addiction",
"metadata": {},
"outputs": [
{
"ename": "IntCastingNaNError",
"evalue": "Cannot convert non-finite values (NA or inf) to integer",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mIntCastingNaNError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Yr'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Yr'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mint\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36mastype\u001b[1;34m(self, dtype, copy, errors)\u001b[0m\n\u001b[0;32m 5804\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5805\u001b[0m \u001b[1;31m# else, only a single dtype is given\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 5806\u001b[1;33m \u001b[0mnew_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_mgr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcopy\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0merrors\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5807\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_constructor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnew_data\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__finalize__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"astype\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5808\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\internals\\managers.py\u001b[0m in \u001b[0;36mastype\u001b[1;34m(self, dtype, copy, errors)\u001b[0m\n\u001b[0;32m 412\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 413\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mT\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mstr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"raise\"\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mT\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 414\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"astype\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcopy\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0merrors\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 415\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 416\u001b[0m def convert(\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\internals\\managers.py\u001b[0m in \u001b[0;36mapply\u001b[1;34m(self, f, align_keys, ignore_failures, **kwargs)\u001b[0m\n\u001b[0;32m 325\u001b[0m \u001b[0mapplied\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mb\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 326\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 327\u001b[1;33m \u001b[0mapplied\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mb\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 328\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mNotImplementedError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 329\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mignore_failures\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\internals\\blocks.py\u001b[0m in \u001b[0;36mastype\u001b[1;34m(self, dtype, copy, errors)\u001b[0m\n\u001b[0;32m 590\u001b[0m \u001b[0mvalues\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 591\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 592\u001b[1;33m \u001b[0mnew_values\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mastype_array_safe\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcopy\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0merrors\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 593\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 594\u001b[0m \u001b[0mnew_values\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmaybe_coerce_values\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnew_values\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\dtypes\\cast.py\u001b[0m in \u001b[0;36mastype_array_safe\u001b[1;34m(values, dtype, copy, errors)\u001b[0m\n\u001b[0;32m 1307\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1308\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1309\u001b[1;33m \u001b[0mnew_values\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mastype_array\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcopy\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1310\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mValueError\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1311\u001b[0m \u001b[1;31m# e.g. astype_nansafe can fail on object-dtype of strings\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\dtypes\\cast.py\u001b[0m in \u001b[0;36mastype_array\u001b[1;34m(values, dtype, copy)\u001b[0m\n\u001b[0;32m 1255\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1256\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1257\u001b[1;33m \u001b[0mvalues\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mastype_nansafe\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcopy\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1258\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1259\u001b[0m \u001b[1;31m# in pandas we don't store numpy str dtypes, so convert to object\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\dtypes\\cast.py\u001b[0m in \u001b[0;36mastype_nansafe\u001b[1;34m(arr, dtype, copy, skipna)\u001b[0m\n\u001b[0;32m 1166\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1167\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0missubdtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloating\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0missubdtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minteger\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1168\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mastype_float_to_int_nansafe\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1169\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1170\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mis_object_dtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\dtypes\\cast.py\u001b[0m in \u001b[0;36mastype_float_to_int_nansafe\u001b[1;34m(values, dtype, copy)\u001b[0m\n\u001b[0;32m 1211\u001b[0m \"\"\"\n\u001b[0;32m 1212\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misfinite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1213\u001b[1;33m raise IntCastingNaNError(\n\u001b[0m\u001b[0;32m 1214\u001b[0m \u001b[1;34m\"Cannot convert non-finite values (NA or inf) to integer\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1215\u001b[0m )\n",
"\u001b[1;31mIntCastingNaNError\u001b[0m: Cannot convert non-finite values (NA or inf) to integer"
]
}
],
"source": [
"df['Yr'] = df['Yr'].astype(int)"
]
},
{
"cell_type": "markdown",
"id": "professional-platinum",
"metadata": {},
"source": [
"At the very bottom, we see why the error was returned. \"IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer\". This means that somewhere in our data, there are a few blank cells in the Year column. We need to fill in these blank cells. To do that, we can use the fillna function that we met earlier in this textbook."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "competent-upper",
"metadata": {},
"outputs": [],
"source": [
"df = df.fillna(0)"
]
},
{
"cell_type": "markdown",
"id": "graduate-planning",
"metadata": {},
"source": [
"If we try and rerun our same command as above, you will notice we have no errors."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "pressing-placement",
"metadata": {},
"outputs": [],
"source": [
"df['Yr'] = df['Yr'].astype(int)"
]
},
{
"cell_type": "markdown",
"id": "marked-float",
"metadata": {},
"source": [
"Now, let's see if it worked by displaying the data types again."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "atomic-planet",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"ObjectId int64\n",
"Last object\n",
"First object\n",
"Description object\n",
"Place object\n",
"Yr int32\n",
"Homeland object\n",
"Province object\n",
"Long object\n",
"Lat float64\n",
"HRV object\n",
"ORG object\n",
"dtype: object"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(df.dtypes)"
]
},
{
"cell_type": "markdown",
"id": "satellite-soviet",
"metadata": {},
"source": [
"Notice that Yr is now int32. Success! Now that we have the data in the correct format, let's plot it out. We can plot out the frequency of violence based on year by using value counts. This will go through the entire Yr column and count all the values identified and store them as a dictionary of frequencies."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "veterinary-fraud",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1993 2835\n",
"1992 2648\n",
"1990 2556\n",
"1986 2056\n",
"1994 1867\n",
"1991 1793\n",
"1985 1665\n",
"1988 1015\n",
"1989 935\n",
"1987 744\n",
"1980 438\n",
"1983 352\n",
"1976 319\n",
"1984 301\n",
"1960 280\n",
"1977 128\n",
"1981 124\n",
"1982 123\n",
"1975 111\n",
"1963 88\n",
"0 84\n",
"1962 69\n",
"1978 60\n",
"1979 53\n",
"1964 37\n",
"1961 32\n",
"1965 19\n",
"1969 14\n",
"1968 14\n",
"1974 12\n",
"1966 11\n",
"1970 10\n",
"1971 10\n",
"1967 8\n",
"1972 6\n",
"1973 5\n",
"1959 3\n",
"1998 3\n",
"1996 3\n",
"1997 2\n",
"1958 1\n",
"Name: Yr, dtype: int64"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Yr'].value_counts()"
]
},
{
"cell_type": "markdown",
"id": "cleared-journey",
"metadata": {},
"source": [
"This looks great, but let's try and plot it."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "developing-bearing",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df['Yr'].value_counts().plot.bar(figsize=(20,5))"
]
},
{
"cell_type": "markdown",
"id": "quantitative-athens",
"metadata": {},
"source": [
"What do you notice that is horribly wrong about our bar graph? If you noticed that it is not chronological, you'd be right. It would be quite odd to present our data in this format. When we are examining time series data, we need to visualize that data chronologically (usually). We can fix this, by adding sort_index()."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "differential-silence",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 84\n",
"1958 1\n",
"1959 3\n",
"1960 280\n",
"1961 32\n",
"1962 69\n",
"1963 88\n",
"1964 37\n",
"1965 19\n",
"1966 11\n",
"1967 8\n",
"1968 14\n",
"1969 14\n",
"1970 10\n",
"1971 10\n",
"1972 6\n",
"1973 5\n",
"1974 12\n",
"1975 111\n",
"1976 319\n",
"1977 128\n",
"1978 60\n",
"1979 53\n",
"1980 438\n",
"1981 124\n",
"1982 123\n",
"1983 352\n",
"1984 301\n",
"1985 1665\n",
"1986 2056\n",
"1987 744\n",
"1988 1015\n",
"1989 935\n",
"1990 2556\n",
"1991 1793\n",
"1992 2648\n",
"1993 2835\n",
"1994 1867\n",
"1996 3\n",
"1997 2\n",
"1998 3\n",
"Name: Yr, dtype: int64"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Yr'].value_counts().sort_index()"
]
},
{
"cell_type": "markdown",
"id": "instructional-horror",
"metadata": {},
"source": [
"Notice that we have now preserved the value counts, but organized them in their correct order. We can now try plotting that data."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "architectural-turner",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df['Yr'].value_counts().sort_index().plot.bar(figsize=(20,5))"
]
},
{
"cell_type": "markdown",
"id": "moved-spotlight",
"metadata": {},
"source": [
"We have a potential issue, however. That first row, 0, is throwing off our bar graph. What if I didn't want to represent 0, or no date, in the graph. I can solve this problem a few different ways. Let's first create a new dataframe called val_year."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "athletic-allocation",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 84\n",
"1958 1\n",
"1959 3\n",
"1960 280\n",
"1961 32\n",
"1962 69\n",
"1963 88\n",
"1964 37\n",
"1965 19\n",
"1966 11\n",
"1967 8\n",
"1968 14\n",
"1969 14\n",
"1970 10\n",
"1971 10\n",
"1972 6\n",
"1973 5\n",
"1974 12\n",
"1975 111\n",
"1976 319\n",
"1977 128\n",
"1978 60\n",
"1979 53\n",
"1980 438\n",
"1981 124\n",
"1982 123\n",
"1983 352\n",
"1984 301\n",
"1985 1665\n",
"1986 2056\n",
"1987 744\n",
"1988 1015\n",
"1989 935\n",
"1990 2556\n",
"1991 1793\n",
"1992 2648\n",
"1993 2835\n",
"1994 1867\n",
"1996 3\n",
"1997 2\n",
"1998 3\n",
"Name: Yr, dtype: int64"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val_year = df[\"Yr\"].value_counts().sort_index()\n",
"val_year"
]
},
{
"cell_type": "markdown",
"id": "capable-compound",
"metadata": {},
"source": [
"With this new dataframe, I can simply start at index 1 and then graph the data. Notice that the 0 value is now gone."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "exceptional-singing",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIoAAAE+CAYAAADicvsxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAjKUlEQVR4nO3dfbRlZ10f8O+PGYJiVIIZIiaBwRpKo8WAaaCFVpEKCbFEfAWXEqg27SpUrKy2U22LBdHpi0BdS+mKJgotSKHKIiUpGCPRpRbJkIS8gpnSAEljGAwQLVQk/vrHfqZexnm/+5wz9+TzWeusu89zztnf/exn333O/d199q7uDgAAAAA8ZNULAAAAAMCJQaEIAAAAgCQKRQAAAAAMCkUAAAAAJFEoAgAAAGBQKAIAAAAgSbJ91QtwOKeeemrv3Llz1YsBAAAAsDbe//73f6K7dxzssRO6ULRz587s2bNn1YsBAAAAsDaq6iOHesxXzwAAAABIolAEAAAAwKBQBAAAAEAShSIAAAAABoUiAAAAAJIoFAEAAAAwKBQBAAAAkEShCAAAAIBBoQgAAACAJApFAAAAAAzbV70AAAAAwGLt3HXlcb3uzt0XzrwknOgcUQQAAABAEoUiAAAAAAaFIgAAAACSKBQBAAAAMCgUAQAAAJBEoQgAAACAQaEIAAAAgCQKRQAAAAAMCkUAAAAAJFEoAgAAAGBQKAIAAAAgiUIRAAAAAINCEQAAAABJFIoAAAAAGBSKAAAAAEiiUAQAAADAoFAEAAAAQJJk+6oXAAAAAB5sdu668rhed+fuC2deEvhCjigCAAAAIIlCEQAAAACDQhEAAAAASRSKAAAAABgUigAAAABIolAEAAAAwKBQBAAAAECSZPuqFwAAAAAOtHPXlcf1ujt3XzjzksCDiyOKAAAAAEhyFIWiqjqzqt5TVbdV1a1V9bLR/uNVdXdV3Thuz9nwmn9eVXur6kNV9ewN7eePtr1VtWsxXQIAAADgeBzNV88+n+Tl3X19VX1pkvdX1dXjsdd297/f+OSqOjvJ85N8bZKvSvLrVfX48fDPJvmWJHclua6qruju2+boCAAAAACbc8RCUXffk+SeMf1HVXV7ktMP85KLkrylu/8kyf+qqr1JzhuP7e3uDydJVb1lPFehCAAAAOAEcEznKKqqnUmelOT3RtNLq+qmqrq8qk4Zbacn+diGl9012g7VfmDGJVW1p6r27Nu371gWDwAAAIBNOOpCUVWdnORXkvxwd9+f5PVJ/lKSczIdcfTTcyxQd1/a3ed297k7duyYY5YAAAAAHIWjOUdRquqhmYpEb+ruX02S7r53w+M/n+Sd4+7dSc7c8PIzRlsO0w4AAADAih3NVc8qyWVJbu/u12xof/SGpz0vyS1j+ookz6+qh1XV45KcleR9Sa5LclZVPa6qTsp0wusr5ukGAAAAAJt1NEcUPS3J9ye5uapuHG0/muQFVXVOkk5yZ5K/nyTdfWtVvTXTSao/n+Ql3f1AklTVS5O8O8m2JJd3962z9QQAAACATTmaq579dpI6yENXHeY1r07y6oO0X3W41wEAAACwOsd01TMAAAAA1pdCEQAAAABJFIoAAAAAGBSKAAAAAEiiUAQAAADAoFAEAAAAQBKFIgAAAAAGhSIAAAAAkigUAQAAADAoFAEAAACQRKEIAAAAgEGhCAAAAIAkCkUAAAAADApFAAAAACRRKAIAAABgUCgCAAAAIIlCEQAAAACDQhEAAAAASRSKAAAAABgUigAAAABIolAEAAAAwKBQBAAAAEAShSIAAAAABoUiAAAAAJIoFAEAAAAwKBQBAAAAkEShCAAAAIBBoQgAAACAJApFAAAAAAwKRQAAAAAkUSgCAAAAYFAoAgAAACCJQhEAAAAAg0IRAAAAAEkUigAAAAAYtq96AQAAABZl564rj+t1d+6+cOYlAdgajnhEUVWdWVXvqarbqurWqnrZaH9kVV1dVXeMn6eM9qqqn6mqvVV1U1U9ecO8Lh7Pv6OqLl5ctwAAAAA4Vkfz1bPPJ3l5d5+d5KlJXlJVZyfZleSa7j4ryTXjfpJckOSscbskyeuTqbCU5BVJnpLkvCSv2F9cAgAAAGD1jlgo6u57uvv6Mf1HSW5PcnqSi5K8YTztDUm+bUxflOSNPXlvkkdU1aOTPDvJ1d19X3d/MsnVSc6fszMAAAAAHL9jOpl1Ve1M8qQkv5fktO6+Zzz0B0lOG9OnJ/nYhpfdNdoO1Q4AAADACeCoC0VVdXKSX0nyw919/8bHuruT9BwLVFWXVNWeqtqzb9++OWYJAAAAwFE4qkJRVT00U5HoTd39q6P53vGVsoyfHx/tdyc5c8PLzxhth2r/At19aXef293n7tix41j6AgAAAMAmHM1VzyrJZUlu7+7XbHjoiiT7r1x2cZJ3bGh/4bj62VOTfHp8Re3dSZ5VVaeMk1g/a7QBAAAAcALYfhTPeVqS709yc1XdONp+NMnuJG+tqh9I8pEk3z0euyrJc5LsTfKZJC9Oku6+r6peleS68bxXdvd9c3QCAAAAgM07YqGou387SR3i4Wce5Pmd5CWHmNflSS4/lgUEAAAAYDmO6apnAAAAAKwvhSIAAAAAkigUAQAAADAoFAEAAACQRKEIAAAAgEGhCAAAAIAkCkUAAAAADNtXvQAAAADAetm568rjet2duy+ceUk4Vo4oAgAAACCJQhEAAAAAg0IRAAAAAEkUigAAAAAYFIoAAAAASKJQBAAAAMCwfdULAAAAAKvmcu4wcUQRAAAAAEkUigAAAAAYFIoAAAAASKJQBAAAAMCgUAQAAABAEoUiAAAAAAaFIgAAAACSKBQBAAAAMCgUAQAAAJBEoQgAAACAYfuqFwAAAHjw2LnryuN63Z27L5x5SQA4GEcUAQAAAJBEoQgAAACAQaEIAAAAgCQKRQAAAAAMCkUAAAAAJFEoAgAAAGBQKAIAAAAgiUIRAAAAAINCEQAAAABJFIoAAAAAGBSKAAAAAEhyFIWiqrq8qj5eVbdsaPvxqrq7qm4ct+dseOyfV9XeqvpQVT17Q/v5o21vVe2avysAAAAAbMbRHFH0S0nOP0j7a7v7nHG7Kkmq6uwkz0/yteM1P1dV26pqW5KfTXJBkrOTvGA8FwAAAIATxPYjPaG7f6uqdh7l/C5K8pbu/pMk/6uq9iY5bzy2t7s/nCRV9Zbx3NuOfZEBAAAAWITNnKPopVV10/hq2imj7fQkH9vwnLtG26Ha/4KquqSq9lTVnn379m1i8QAAAAA4FsdbKHp9kr+U5Jwk9yT56bkWqLsv7e5zu/vcHTt2zDVbAAAAAI7giF89O5juvnf/dFX9fJJ3jrt3Jzlzw1PPGG05TDsAAAAAJ4DjOqKoqh694e7zkuy/ItoVSZ5fVQ+rqsclOSvJ+5Jcl+SsqnpcVZ2U6YTXVxz/YgMAAAAwtyMeUVRVv5zkm5KcWlV3JXlFkm+qqnOSdJI7k/z9JOnuW6vqrZlOUv35JC/p7gfGfF6a5N1JtiW5vLtvnbszAAAAABy/o7nq2QsO0nzZYZ7/6iSvPkj7VUmuOqalAwAAAGBpNnPVMwAAAADWiEIRAAAAAEkUigAAAAAYFIoAAAAASKJQBAAAAMCgUAQAAABAEoUiAAAAAAaFIgAAAACSKBQBAAAAMCgUAQAAAJBEoQgAAACAQaEIAAAAgCQKRQAAAAAMCkUAAAAAJFEoAgAAAGBQKAIAAAAgiUIRAAAAAINCEQAAAABJFIoAAAAAGBSKAAAAAEiiUAQAAADAoFAEAAAAQBKFIgAAAAAGhSIAAAAAkigUAQAAADAoFAEAAACQRKEIAAAAgEGhCAAAAIAkCkUAAAAADApFAAAAACRRKAIAAABgUCgCAAAAIIlCEQAAAACDQhEAAAAASRSKAAAAABgUigAAAABIolAEAAAAwHDEQlFVXV5VH6+qWza0PbKqrq6qO8bPU0Z7VdXPVNXeqrqpqp684TUXj+ffUVUXL6Y7AAAAAByvozmi6JeSnH9A264k13T3WUmuGfeT5IIkZ43bJUlen0yFpSSvSPKUJOclecX+4hIAAAAAJ4btR3pCd/9WVe08oPmiJN80pt+Q5Nok/2y0v7G7O8l7q+oRVfXo8dyru/u+JKmqqzMVn355810AAAB48Nm568rjet2duy+ceUmAdXK85yg6rbvvGdN/kOS0MX16ko9teN5do+1Q7X9BVV1SVXuqas++ffuOc/EAAAAAOFabPpn1OHqoZ1iW/fO7tLvP7e5zd+zYMddsAQAAADiC4y0U3Tu+Upbx8+Oj/e4kZ2543hmj7VDtAAAAAJwgjrdQdEWS/VcuuzjJOza0v3Bc/eypST49vqL27iTPqqpTxkmsnzXaAAAAADhBHPFk1lX1y5lORn1qVd2V6eplu5O8tap+IMlHknz3ePpVSZ6TZG+SzyR5cZJ0931V9aok143nvXL/ia0BAAAAODEczVXPXnCIh555kOd2kpccYj6XJ7n8mJYOAAAAgKU5YqEIAAAAdu668rhed+fuC2deEmCRNn3VMwAAAADWg0IRAAAAAEkUigAAAAAYFIoAAAAASKJQBAAAAMCgUAQAAABAEoUiAAAAAAaFIgAAAACSKBQBAAAAMCgUAQAAAJBEoQgAAACAQaEIAAAAgCQKRQAAAAAMCkUAAAAAJFEoAgAAAGBQKAIAAAAgSbJ91QsAAACwLnbuuvKYX3Pn7gsXsCQAx8cRRQAAAAAkUSgCAAAAYFAoAgAAACCJQhEAAAAAg0IRAAAAAEkUigAAAAAYFIoAAAAASKJQBAAAAMCgUAQAAABAEoUiAAAAAAaFIgAAAACSKBQBAAAAMCgUAQAAAJBEoQgAAACAQaEIAAAAgCQKRQAAAAAMCkUAAAAAJFEoAgAAAGDYVKGoqu6sqpur6saq2jPaHllVV1fVHePnKaO9qupnqmpvVd1UVU+eowMAAAAAzGOOI4qe0d3ndPe54/6uJNd091lJrhn3k+SCJGeN2yVJXj9DNgAAAAAzWcRXzy5K8oYx/YYk37ah/Y09eW+SR1TVoxeQDwAAAMBx2GyhqJP8WlW9v6ouGW2ndfc9Y/oPkpw2pk9P8rENr71rtAEAAABwAti+ydc/vbvvrqpHJbm6qj648cHu7qrqY5nhKDhdkiSPecxjNrl4AAAAABytTR1R1N13j58fT/L2JOcluXf/V8rGz4+Pp9+d5MwNLz9jtB04z0u7+9zuPnfHjh2bWTwAAAAAjsFxF4qq6kuq6kv3Tyd5VpJbklyR5OLxtIuTvGNMX5HkhePqZ09N8ukNX1EDAAAAYMU289Wz05K8var2z+fN3f2uqrouyVur6geSfCTJd4/nX5XkOUn2JvlMkhdvIhsAAACAmR13oai7P5zk6w/S/odJnnmQ9k7ykuPNAwAAAGCxNnsyawAAHuR27rryuF535+4LZ14SAGCzNnUyawAAAADWh0IRAAAAAEkUigAAAAAYFIoAAAAASKJQBAAAAMCgUAQAAABAEoUiAAAAAIbtq14AAADgz+3cdeVxve7O3RfOvCQAPBg5oggAAACAJApFAAAAAAy+egYAnBB83QYAYPUcUQQAAABAEkcUAQDAg5qj+QDYyBFFAAAAACRxRNEJy392AAAAgGVzRBEAAAAASRSKAAAAABgUigAAAABIolAEAAAAwKBQBAAAAEAShSIAAAAABoUiAAAAAJIoFAEAAAAwKBQBAAAAkEShCAAAAIBBoQgAAACAJApFAAAAAAwKRQAAAAAkSbavegEAAFZh564rj/k1d+6+cAFLwrE6nrFLjn/8lp0HAKukUAQAHJQ/jgEAHnx89QwAAACAJI4o4kHCf8UBAADgyBxRBAAAAEASRxSxIo7wAQAAgBOPQhEAwIK5ShcAsFX46hkAAAAASVZwRFFVnZ/kPyTZluQXunv3speBv8h/HudlfQIAALAVLfWIoqraluRnk1yQ5OwkL6iqs5e5DAAAAAAc3LKPKDovyd7u/nCSVNVbklyU5LYlLwesFee+mM+6r8t1z1t31icAAItW3b28sKrvTHJ+d//guP/9SZ7S3S/d8JxLklwy7v7lJB86jqhTk3xik4srT548eavMkidP3oMnb537Jk+evNXlrXPf5MmTt/m8x3b3joM9cMJd9ay7L01y6WbmUVV7uvvcmRZJnjx58paeJU+evAdP3jr3TZ48eavLW+e+yZMnb7F5y77q2d1Jztxw/4zRBgAAAMCKLbtQdF2Ss6rqcVV1UpLnJ7liycsAAAAAwEEs9atn3f35qnppkncn2Zbk8u6+dQFRm/rqmjx58uSdAFny5Ml78OStc9/kyZO3urx17ps8efIWmLfUk1kDAAAAcOJa9lfPAAAAADhBKRQBAAAAkEShCAAAAIBBoQgAAACAJApFAAAAAAzbV70Ac6iqRyZ5aZL/neSyJD+a5K8nuT3JT3b3J1e4eJtWVc9O8m1JTh9Ndyd5R3e/a2ULtUVVVSX5riSd5L8m+eYkFyX5YJL/2N1/toRl+I3u/uZF57B59i0cLfsWjsWDYN/yhEzb/8Z9yxXdffuSl+PF3f2LC5jvEzL17fe6+483tJ+/iP1nVZ2XpLv7uqo6O8n5ST7Y3VfNnXWI/Dd29wuXlPX0JOcluaW7f20B839Kktu7+/6q+uIku5I8OcltmX73Pj1z3g8leXt3f2zO+R4m76Qkz0/yv7v716vqe5P8jUz7lku7+09nzvvqJN+e5MwkDyT5/SRv7u7758zZkOdzy0x8btnalvE5orp7s/NYuaq6KsnNSb4syV8Z029N8i1Jvr67L5o57xlJviNfuFP8he7eO2fOyHpdkscneWOSu0bzGUlemOSO7n7Z3JmHWZZ/1d2vXMB8n52pT9d0950b2v9ud18+c9bPJXlUkpOS3J/kYUmuSHJhknvnXp9VddOBTZnG80NJ0t1PnDnv1O7+xIb735fxgSvJz/fMv/BV9bwkv9nd91XVjiQ/neRJmT5wvby77zrsDI497zVJfqW7f2fO+R4mz75lCexbjivPvmXePPuW+bL+WZIXJHlLvnDf8vwkb+nu3XNnHmZZPtrdj5l5nj+U5CWZPoyfk+Rl3f2O8dj13f3kmfNekeSCTP/cvTrJU5K8J9O28u7ufvXMeVcc2JTkGUl+I0m6+7kz572vu88b038v07p9e5JnJflvc28vVXVrpt+xz1fVpUk+k+mP5GeO9m+fOe/TSf5Pkv+Z5JeTvK27982ZcUDemzJtKw9P8qkkJyf51Uz9q+6+eMasH0ryrUl+K8lzktwwMp+X5B9297VzZY2818Xnljmz1v1zi88Rm9XdW/6W5Mbxs5LcfbDHZsz6qSS/mOT7Mr2x/Lskfy/TzvG7FtC33z9Ee2XaKS5zPX90AfP8yUxvMK/L9Cb6jzY8dv0C8m4ePx+a5A+TnDTub09y0wLyrkjyn5M8Icljk+xM8rEx/dgF5F2/YfpfJHl3kouTvC3JaxeQd9uG6f+S5B9neoN7UZKrF5C3L8meJB9J8m+TPGnujAPybhw/7VsWu57tW449z75l3jz7lvnyfj/JQw/SftIi9i1JbjrE7eYkf7KAvJuTnDymd47t5mXj/g0LytuW6Q//+5N82Wj/4gXtW64f+5ZvSvKN4+c9Y/obF5B3w4bp65LsGNNfsn+/OnPe7Rv7esBjNy6if5lO9fGsTP/135fkXWP/+aULyLtp/Nye5N4k28b9mnt72b9tjumHJ7l2TD9mQb8LPrfMPH7j57p+bvE5YrMZi+zAsm6ZPhCcMnZMn06yc7R/xcaNZKasmzdMb0/yO2P6lEyHyS6ib3/tIO3nLegN9P5D3P4oyecXkHdzku1j+hFJrsr4o2NBbzI3bJh+1wGP3Th33pjv88aO/7nj/ocXkXOQ/l2f5EvG9EMXtL18aMP0+xe9Pvf3L9N/IP5lklszHSL7iiSPX0Cefct8efYt82fat8zcP/uWWfI+mIN86M/0x8CHFpB3b6Yjex57wG1npq/fzJ136wH3T870h/9rFrltHjg97i8i7yGZ/qC6Osk5o22R+5YPjG3xK5LsOVTfZ8x7W5IXj+lfTHLumH58kusWkHdgMeqhSZ6b6eiifQvIuyVTUfaU8f76yNH+RdlQJJsp6+YkDxvTp2wcvwXtW3xumTfvhg3T6/i5xeeITd7W4hxFmf5b9sEx/XeT/EJVdZKzk/zrmbP+rKoe2d33JfmqTP/lSXd/cnzXc24vSvL6qvrS/Plhlmdm2iBetIC8T2XaCd974ANVtYjvV2/v7s8nSXd/qqr+TpJLq+ptmd7o5vYHVXVyd/9xd5+/v7GqvjLJ5xaQl+5+e1X9WpJXVdUPZDH92u+Lq+pJmT7obevu/zOW4U+r6oEF5F1bVa/M9Dt4bVU9b/T3GZm20bl1knT37yd5VaZ1+sRMX3O4KsnXzJx3sH1LMh3iudX3LS9O8nP2LbOxb5nXg3Hfsi6fW344yTVVdUem/xYn0wfZr8l0PoW5vTPTET43HvhAVV27gLx7q+qc/Xnd/cdV9a1JLk/yVxeQ97mqenh3fybJN+xvrKovTzL7OUR6Oi/Ja8e+8rVVdW8We07TL0/y/kz/Fe+qenR331NVJ4+2uf1gkv9QVf8iySeS/I/xHvSx8djcvqAPPZ0j6IokV1TVwxeQd1mmfcu2JD+W5G1V9eEkT830ddA5/UKS66rq95L8zST/JknG13zumzkr8TfR3Nb9c4vPEZu1qCresm+Zdoj7q7Dbk5yb5NELyPmeTIeUXZ3ko0kuHO07Mp28bVH9+8pMHxC+IclXLjDnJ5Kcd4jH/s0C8t6ZgxzKPJbjz5a4/XxJkkctIefrk/yDBc7/PQfcHj3a/8J/6mbKe2iSHx+/Cx/N9KH1j5K8OcljFpB3w7K2iQ2Z9i3z5Ni3LDZn0fuWa+1bZs9c231LpoLiUzOdF+k7xvS2Za/jBfXtjEPtK5M8bQF5DztE+6lJ/uoS+nthphOjLns9PzzJ4xY4/y8b+81vSHLaAnNmP5LgKDK/KslXjelHJPnOQ73/zpD1tWP+T1hi/3xuWez6XZfPLT5HbPK2FiezPtD4L8TjMx3O9qkFzP+RSb46yd5FzP+ArJOS/GmPgRpV0CdnOvR5y5/hv6YrTqS7P3uQx07v7rtnzjvU+rytu//7nFmryDvMcjwkyRf19B/JRWV8eaad1R8uMOPk3nCFmUVbwfayzH3LE7v7wBMLro0V7FuWuj5PlPGrqm2Z/pC1bzm2vGVvL0vbt4y8xyS5v6f/iu/M9OH19u6+dYl5H+zuW+TJk7e4vGX3bWSemw0n5u/uDx7hJVvCsj+3bJj3UtfnKsZvHT9HbMhd2Pp8yFwzWqWaztq+f/rpmc5m/tNJbq6q58yd1933dfeesVM8uaqeXFWPmDtnuC7TfwNSVf8kyaszncDw5VX1U3OHVdVJGw9Fr6pnVNXLq+qCubOGB5L834PlLWiHeKj1+SOLWJ/LzjvU+CV59iL+kNuY19MlZZ+44O3lc0vePpc2fqMo9ckN+5ZF9+2Gqrqjql5V0+WWF2ocfrtMZx3sw1aSLGjfstT1uey8Q41fdz+woH3L/8/r7k8v8sPd8NULnv+BljZ+oyj1/z+3LDJr5O1K8ptJ3ltVP5jp/D0XJHlrVf3IEvP+izx58haXt4K+fWNV7UmyO9NXPS9JcllVXVtVZ86dtyH33Kp6XlU9t6qesKic7v5sd3/2YHmL+Nyy7PW5yvFL8s1Jnrbg8fvj/XnL2F6Wsj6XfYjUIm75wquxvCfJk8f0V2fmQ+KT/NyG6adnOpTtPZm+2/ycBfTtlg3Te5J8cf/54WWLOCP9B5KcMqb/SZLfzXSFm6uT7F5y3k+twfo0fls7b2njt4KxuyHJ12Uqfu0d+bsyToa3gLwHktyR6XvbZy8iY8V5y16fxm9r5y1t/FbQt1szFdS/ItNh/huvYrWIE9zKkydvBXkr6NsNGzIel+TtY/pbkvzaAvK+MdNnv19P8slMXw37nUxfxT5zDfKWvT6N3xZbn2txRNEBvqy7r0+S7v5w5j9q6qkbpl+V5Nu6+xmZNo5XzpyVJPdX1deN6U9kumpBMv2huojx29bdnxzT35Pkmd39E5n+QzD70VlHyLtwAXnLXp/Gb2vnLXP8lj123d23dPePdffXZLpc9qOS/HZV/e4C8m7KdLWLh2Q6iecHqmpXTYeqL8Ky85a9Po3f1s5b5vgtu28P9HQ036eSfDbTZZfT4wTo8uTJW5u8ZfdtW3fvG9MfzXR1w3T31UlOX0De65Jc0N1/O9NpB/60u5+WqcB/2RrkLXt9Gr95LXx9rstVz55QVTdlurLAzqo6paereTwkiz2b+hcUpUbe3P5BkjdV1QeSfDzJnqr6rUxX1vjJBeTdX1Vf19N3i/f/YfzZLLiQssS8Za9P47e185Y5fsvu24FXYnlfkvfV9FXFv7WAvB59+7EkP1ZV5yV5fqY/jD/a3X9ji+cte30av62dt8zxW3bfrq+qN2c6quCaJG+oqndlOvT/tpmz5MmTt7q8ZfdtT1VdluQ3kjw305EaqenqcdsWkHfIP8Sr6nVrkLfs9Wn85rXw9bkWJ7Ouqsce0HRPd3+uqk5N8re6+1dnzPpMpsPEK8nOTGdN31+Uuqm7v+5wrz/OzG1JnpXpBN3bM10S8t29mBN1PzHJf8p0GHySPC3J/j+MX9Pdb97KeSNzaetz2XnrPn7rvL2sYF1+7yLW12HybujuJx2kvTLtp39zi+cte30av62dt7TxW0Hftif5rkyXCv6vSZ6S6fLAH03ys3MfbSBPnrzV5K2gbw/NdPTl2Zk+K13e3Q/UdBLoR3X3R2bOuzxT3/b/IX53d//I+EP8+u6e9fwzK8hb9vo0fvPmLXx9rkWhaJmWWZRalXUupDwYrPv4rfP2suZ9W+tCyrpb9/Fb5+1lnfsGsCjrXkhZd8Zv89aiUFRVJyf5p0m+I8kZST6X5H8m+Y/d/UsrXLRNW+e+rcKy16fx29rWefzWuW+rYN/CsVjn8TtM317f3W+QJ0/eeuStsG/fnuly4Guz31yFZa9P4zevZazPdTmZ9ZuSfDjJs5P86yQ/k+T7kzyjqmY9j0hVnVxVr6yqW6vq01W1r6reW1UvmjNng6X1LVl+/9Z9fS47b93Hb523l3XuW2Jb2ep56z5+67y9nEB9++Yl/y7IkydvsXmr6tv5We773i1Lfh9aSl6WvD6XnWf8ZtAzX6ptFbckHzjg/nXj50OSfHDmrHckeVGmyvmPJPmXSc5K8oYkP7mV+7ai/q37+jR+WzvPvmXr9m/d16fx29p59i3y5Mnb0nnr3LcxX+9DWzvP+G02Y+6FXsUtye8mefqYfm6mc3rsf+xDW21QVtW3FfVv3den8dvaefYtW7d/674+jd/WzrNvkSdP3pbOW+e+jXl6H9raecZvsxlzL/QqbkmemOR9ST6Z5LeTPH6070jyQ1ttUFbVtxX1b93Xp/Hb2nn2LVu3f+u+Po3f1s6zb5EnT96Wzlvnvo35eh/a2nnGb7MZcy/0iXZL8uKtNiir6tsq+rfu69P4be28ZY7fOvfNtmLfIm9147fOfZMnT96JmbcOffM+tLXzjN/m57MWVz07nKr6aHc/ZklZL+7uX1xG1shbWt9G3rL7t+7r0/ht7Tz7lvnybCtbO2/dx29tt5d17ps8efJWl7fOfRt53oe2dp7xO5r5rEOhqKpuOtRDmap5D1vScsy+kZ8ofRvLsuV3Gsten8Zva+edKOO3zn0by2JbOcHzjrAsW378lp13oozfOvRNnjx5q8lb574dxbJ4HzrB846wLMbvKGzf7AxOEKdlujTjJw9or0zfF5zNEQbltDmzhqX1LVl+/9Z9fS47b93Hb523l3XuW2Jb2ep56z5+67y9rHPf5MmTt9K8de6b96Etnmf8Nm9dCkXvTHJyd9944ANVde3MWcv+pVpm35I132lk+evT+G3tPPuW+dhWtnbeuo/fOm8v69w3efLkrS5vnfuWeB/a6nnGb7PmONHRg+mW5LKMM5of5LE3r3r5tlr/1n19Gr+tnbfOY7fu/Vv39Wn8tnbeOo+dm5ub2zrcvA9t7Zvx2/xtLc5RBAAAAMDmPWTVCwAAAADAiUGhCAAAAIAkCkUAAAAADApFAAAAACRJ/h+2hL6cySVnUQAAAABJRU5ErkJggg==\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"val_year.iloc[1:].plot.bar(figsize=(20,5))"
]
},
{
"cell_type": "markdown",
"id": "several-revolution",
"metadata": {},
"source": [
"Although we have been able to now plot our time series data chronologically, Pandas has not seen this as a datetime type. Instead, it has viewed these years solely as integers. In order to work with the years as time series data formally, we need to convert the integers into datetime format."
]
},
{
"cell_type": "markdown",
"id": "cultural-diabetes",
"metadata": {},
"source": [
"## Convert to Time Series DateTime in Pandas"
]
},
{
"cell_type": "markdown",
"id": "experimental-harvey",
"metadata": {},
"source": [
"Our goal here will be to create a new column that will store Yr as a datetime type. One might think that we could easily just convert everything to datetime. Normally the following command would work, but instead we get this error."
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "dominant-photograph",
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "time data '0' does not match format '%Y' (match)",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\tools\\datetimes.py\u001b[0m in \u001b[0;36m_to_datetime_with_format\u001b[1;34m(arg, orig_arg, name, tz, fmt, exact, errors, infer_datetime_format)\u001b[0m\n\u001b[0;32m 508\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 509\u001b[1;33m \u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtz\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconversion\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdatetime_to_datetime64\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 510\u001b[0m \u001b[0mdta\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mDatetimeArray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtz_to_dtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtz\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\_libs\\tslibs\\conversion.pyx\u001b[0m in \u001b[0;36mpandas._libs.tslibs.conversion.datetime_to_datetime64\u001b[1;34m()\u001b[0m\n",
"\u001b[1;31mTypeError\u001b[0m: Unrecognized value type: ",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Dates'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_datetime\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Yr'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'%Y'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\tools\\datetimes.py\u001b[0m in \u001b[0;36mto_datetime\u001b[1;34m(arg, errors, dayfirst, yearfirst, utc, format, exact, unit, infer_datetime_format, origin, cache)\u001b[0m\n\u001b[0;32m 881\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtz_localize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtz\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# type: ignore[call-arg]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 882\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mABCSeries\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 883\u001b[1;33m \u001b[0mcache_array\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_maybe_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mconvert_listlike\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 884\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mcache_array\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mempty\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 885\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0marg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcache_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\tools\\datetimes.py\u001b[0m in \u001b[0;36m_maybe_cache\u001b[1;34m(arg, format, cache, convert_listlike)\u001b[0m\n\u001b[0;32m 193\u001b[0m \u001b[0munique_dates\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0munique\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 194\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0munique_dates\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m<\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 195\u001b[1;33m \u001b[0mcache_dates\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconvert_listlike\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0munique_dates\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 196\u001b[0m \u001b[0mcache_array\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSeries\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcache_dates\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0munique_dates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 197\u001b[0m \u001b[1;31m# GH#39882 and GH#35888 in case of None and NaT we get duplicates\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\tools\\datetimes.py\u001b[0m in \u001b[0;36m_convert_listlike_datetimes\u001b[1;34m(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)\u001b[0m\n\u001b[0;32m 391\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 392\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mformat\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 393\u001b[1;33m res = _to_datetime_with_format(\n\u001b[0m\u001b[0;32m 394\u001b[0m \u001b[0marg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0morig_arg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtz\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexact\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minfer_datetime_format\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 395\u001b[0m )\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\tools\\datetimes.py\u001b[0m in \u001b[0;36m_to_datetime_with_format\u001b[1;34m(arg, orig_arg, name, tz, fmt, exact, errors, infer_datetime_format)\u001b[0m\n\u001b[0;32m 511\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mDatetimeIndex\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_simple_new\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdta\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 512\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mValueError\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 513\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 514\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 515\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\tools\\datetimes.py\u001b[0m in \u001b[0;36m_to_datetime_with_format\u001b[1;34m(arg, orig_arg, name, tz, fmt, exact, errors, infer_datetime_format)\u001b[0m\n\u001b[0;32m 498\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 499\u001b[0m \u001b[1;31m# fallback\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 500\u001b[1;33m res = _array_strptime_with_fallback(\n\u001b[0m\u001b[0;32m 501\u001b[0m \u001b[0marg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtz\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfmt\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexact\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minfer_datetime_format\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 502\u001b[0m )\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\tools\\datetimes.py\u001b[0m in \u001b[0;36m_array_strptime_with_fallback\u001b[1;34m(arg, name, tz, fmt, exact, errors, infer_datetime_format)\u001b[0m\n\u001b[0;32m 434\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 435\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 436\u001b[1;33m \u001b[0mresult\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtimezones\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0marray_strptime\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfmt\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexact\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mexact\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0merrors\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 437\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;34m\"%Z\"\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mfmt\u001b[0m \u001b[1;32mor\u001b[0m \u001b[1;34m\"%z\"\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mfmt\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 438\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0m_return_parsed_timezone_results\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtimezones\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtz\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\users\\wma22\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\_libs\\tslibs\\strptime.pyx\u001b[0m in \u001b[0;36mpandas._libs.tslibs.strptime.array_strptime\u001b[1;34m()\u001b[0m\n",
"\u001b[1;31mValueError\u001b[0m: time data '0' does not match format '%Y' (match)"
]
}
],
"source": [
"df['Dates'] = pd.to_datetime(df['Yr'], format='%Y')"
]
},
{
"cell_type": "markdown",
"id": "portuguese-belize",
"metadata": {},
"source": [
"Just as the NaN cells plagued us above, so too has the 0s that we filled them with. Fortunately, we can fix this issue by passing the keyword argument errors=\"coerce\"."
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "driven-surveillance",
"metadata": {},
"outputs": [],
"source": [
"df['Dates'] = pd.to_datetime(df['Yr'], format='%Y', errors=\"coerce\")"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "loved-arbor",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"ObjectId int64\n",
"Last object\n",
"First object\n",
"Description object\n",
"Place object\n",
"Yr int32\n",
"Homeland object\n",
"Province object\n",
"Long object\n",
"Lat float64\n",
"HRV object\n",
"ORG object\n",
"Dates datetime64[ns]\n",
"dtype: object"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(df.dtypes)"
]
},
{
"cell_type": "markdown",
"id": "alone-conspiracy",
"metadata": {},
"source": [
"And like magic, we have not only created a new column, but notice that it is in datetime64[ns] format. We should also understand the keyword argument passed here, format. Format takes a formatted string that will tell Pandas how to interpret the data being passed to it. Because our integer referred to a single year, we use %Y. Let's try and plot this data now to see how it looks."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "noted-metro",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df['Dates'].value_counts().sort_index().plot.bar(figsize=(20,5))"
]
},
{
"cell_type": "markdown",
"id": "creative-debut",
"metadata": {},
"source": [
"While this data is now plotted as Pandas-structured time series data, it does not look good. Our dates are rendered in the long, full format that has both the date (in its entirety) and the time. Let's fix this by first, extracting the relevant data. In this case, the year and the counts."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "attempted-yahoo",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1958-01-01 1\n",
"1959-01-01 3\n",
"1960-01-01 280\n",
"1961-01-01 32\n",
"1962-01-01 69\n",
"1963-01-01 88\n",
"1964-01-01 37\n",
"1965-01-01 19\n",
"1966-01-01 11\n",
"1967-01-01 8\n",
"1968-01-01 14\n",
"1969-01-01 14\n",
"1970-01-01 10\n",
"1971-01-01 10\n",
"1972-01-01 6\n",
"1973-01-01 5\n",
"1974-01-01 12\n",
"1975-01-01 111\n",
"1976-01-01 319\n",
"1977-01-01 128\n",
"1978-01-01 60\n",
"1979-01-01 53\n",
"1980-01-01 438\n",
"1981-01-01 124\n",
"1982-01-01 123\n",
"1983-01-01 352\n",
"1984-01-01 301\n",
"1985-01-01 1665\n",
"1986-01-01 2056\n",
"1987-01-01 744\n",
"1988-01-01 1015\n",
"1989-01-01 935\n",
"1990-01-01 2556\n",
"1991-01-01 1793\n",
"1992-01-01 2648\n",
"1993-01-01 2835\n",
"1994-01-01 1867\n",
"1996-01-01 3\n",
"1997-01-01 2\n",
"1998-01-01 3\n",
"Name: Dates, dtype: int64"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_df = df['Dates'].value_counts().sort_index()\n",
"new_df"
]
},
{
"cell_type": "markdown",
"id": "classical-skating",
"metadata": {},
"source": [
"Next, we need to convert that data into a new DataFrame."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "sporting-netscape",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Dates
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1958-01-01
\n",
"
1
\n",
"
\n",
"
\n",
"
1959-01-01
\n",
"
3
\n",
"
\n",
"
\n",
"
1960-01-01
\n",
"
280
\n",
"
\n",
"
\n",
"
1961-01-01
\n",
"
32
\n",
"
\n",
"
\n",
"
1962-01-01
\n",
"
69
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Dates\n",
"1958-01-01 1\n",
"1959-01-01 3\n",
"1960-01-01 280\n",
"1961-01-01 32\n",
"1962-01-01 69"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_df = pd.DataFrame(new_df)\n",
"new_df.head()"
]
},
{
"cell_type": "markdown",
"id": "municipal-recording",
"metadata": {},
"source": [
"Now that we have that new DataFrame created, let's fix our column name and change Dates to ViolentActs."
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "opening-spring",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
ViolentActs
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1958-01-01
\n",
"
1
\n",
"
\n",
"
\n",
"
1959-01-01
\n",
"
3
\n",
"
\n",
"
\n",
"
1960-01-01
\n",
"
280
\n",
"
\n",
"
\n",
"
1961-01-01
\n",
"
32
\n",
"
\n",
"
\n",
"
1962-01-01
\n",
"
69
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ViolentActs\n",
"1958-01-01 1\n",
"1959-01-01 3\n",
"1960-01-01 280\n",
"1961-01-01 32\n",
"1962-01-01 69"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_df = new_df.rename(columns={\"Dates\": \"ViolentActs\"})\n",
"new_df.head()"
]
},
{
"cell_type": "markdown",
"id": "fatal-bullet",
"metadata": {},
"source": [
"With the new DataFrame, we can also fix the index so that it is strictly the year. Because Pandas knows that the index is a datetime type, then we can use the extra method, year, to grab just the year."
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "starting-french",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
ViolentActs
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1958
\n",
"
1
\n",
"
\n",
"
\n",
"
1959
\n",
"
3
\n",
"
\n",
"
\n",
"
1960
\n",
"
280
\n",
"
\n",
"
\n",
"
1961
\n",
"
32
\n",
"
\n",
"
\n",
"
1962
\n",
"
69
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ViolentActs\n",
"1958 1\n",
"1959 3\n",
"1960 280\n",
"1961 32\n",
"1962 69"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_df.index = new_df.index.year\n",
"new_df.head()"
]
},
{
"cell_type": "markdown",
"id": "relevant-breakdown",
"metadata": {},
"source": [
"Notice that our data is now just the year, the only piece of data in the time series data that matters to us. With that new DataFrame in the correct format, we can now plot it."
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "voluntary-cable",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIoAAAE+CAYAAADicvsxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAog0lEQVR4nO3de7RlZXkn6t9LFUoUUMCSGECr7GAbRKqUCni8YJATQauPBYnalqMVNIqtErTj8HS1dh9tbZLqPl6TEXEQgWAOgpeESIRIKigqMSol95uh0AILK1iCgDQaEL7zx5xFNkVd916X2queZ4w19lzfWmv+5je/teda+93zUq21AAAAAMAu414AAAAAAHYMCkUAAAAAJFEoAgAAAKCnUAQAAABAEoUiAAAAAHoKRQAAAAAkSeaOewG25ElPelKbP3/+uBcDAAAAYGJ897vf/Ulrbd6mHtuhC0Xz58/PqlWrxr0YAAAAABOjqm7Z3GMOPQMAAAAgiUIRAAAAAD2FIgAAAACS7ODnKAIAAAAmywMPPJC1a9fmF7/4xbgXZeLttttu2X///bPrrrtu82sUigAAAICRWbt2bfbYY4/Mnz8/VTXuxZlYrbXccccdWbt2bRYsWLDNr3PoGQAAADAyv/jFL7LPPvsoEg1ZVWWfffbZ7j23FIoAAACAkVIkGo3prGeFIgAAAGCnceSRR+aiiy56RNvHPvaxLFiwICtWrNjia9///vfnQx/60LRy16xZk8985jOPan/nO9+Z/fbbLw899NAWX3/XXXflE5/4xLSyt4dzFAEAAABjM3/5BQOd35oVS7b4+LJly3Luuefm6KOPfrjt3HPPzVlnnZUjjjhioMvyiOXqC0Wvfe1rH2576KGHct555+WAAw7I1772tRx55JGbff2GQtHb3va2oS1jYo8iAAAAYCfyyle+MhdccEHuv//+JF0B50c/+lFuvvnmnHTSSQ+3veQlL8khhxySo446Krfeeuuj5nPzzTfnmGOOyaGHHpoXvehFufHGG5MkJ5xwQk4++eQ8//nPz9Of/vR84QtfSJIsX7483/jGN7Jo0aJ89KMfTZJccskledaznpW3vvWtOeeccx6e9+23357jjjsuCxcuzMKFC/PNb34zy5cvz80335xFixbl3e9+d9atW5cjjjgiixYtysEHH5xvfOMbA1k/9igCAACACTfdvXa2tnfObLT33nvnsMMOy9/+7d9m6dKlOffcc/PqV7/6Eefz+f3f//0cf/zxOf7443PGGWfk5JNPzl//9V8/Yj4nnnhiPvnJT+bAAw/Mt7/97bztbW/LV77ylSTJunXrcumll+bGG2/MK17xirzyla/MihUr8qEPfShf+tKXHp7HOeeck2XLlmXp0qV5z3vekwceeCC77rprTj755Lz4xS/OeeedlwcffDD33ntvVqxYkWuvvTZXXnllkuTDH/5wjj766Lz3ve/Ngw8+mPvuu28g68ceRQAAAMBOZcPhZ0l32NmyZcse8fg//uM/PnyI2Ote97pceumlj3j83nvvzTe/+c286lWvyqJFi/KWt7wl69ate/jxY489NrvssksOOuig3H777Ztchvvvvz8XXnhhjj322Oy55545/PDDHz530le+8pW89a1vTZLMmTMnT3jCEx71+t/8zd/MmWeemfe///255pprsscee0xzbTySQhEAAACwU1m6dGkuvvjiXH755bnvvvty6KGHbtfrH3rooTzxiU/MlVde+fDthhtuePjxxz72sQ9Pt9Y2OY+LLrood911V5797Gdn/vz5ufTSSx9x+NnWHHHEEfn617+e/fbbLyeccEI+/elPb1cfNkehCAAAANip7L777jnyyCPzxje+8VF7EyXJ85///If3ODr77LPzohe96BGP77nnnlmwYEE+//nPJ+mKQVddddUWM/fYY4/87Gc/e/j+Oeeck0996lNZs2ZN1qxZkx/84AdZuXJl7rvvvhx11FE59dRTkyQPPvhg7r777ke9/pZbbsm+++6bN7/5zXnTm96Uyy+/fHorYyMKRQAAAMBOZ9myZbnqqqs2WSj6kz/5k5x55pk55JBD8hd/8Rf5+Mc//qjnnH322Tn99NOzcOHCPOtZz8oXv/jFLeYdcsghmTNnThYuXJhTTjklX/7yl7Nkyb+eA+rxj398XvjCF+Zv/uZv8vGPfzxf/epX8+xnPzuHHnporr/++uyzzz55wQtekIMPPjjvfve7c8kll2ThwoV5znOek89+9rN5xzveMfOVkqQ2twvUjmDx4sVt1apV414MAAAAmNV2pJNZ33DDDfmN3/iNgc+XTdvU+q6q77bWFm/q+fYoAgAAACCJQhEAAAAAPYUiAAAAAJIoFAEAAAAjtiOfL3mSTGc9KxQBAAAAI7Pb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\n",
"text/plain": [
"