Add files via upload
This commit is contained in:
1 parent
03a0fd3abd
commit
f2497075a3
2 files changed
+62
-123
No files matched your search
+59
-66
@@ -64,7 +64,7 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"# Details for policy wonks\n",
|
"# Details for policy wonks\n",
|
||||||
"\n",
|
"\n",
|
||||||
"The following plot shows, for each month in office, the expected number of electoral votes, with error bars indicating a 3% approval swing in either direction (that is: the blue diamond is the total number of electoral votes for states where he has net positive approval; the top and bottom of the grey bars give the total if he were to gain or lose 3% in every state. Why 3%? That was the [average error](https://fivethirtyeight.com/features/the-polls-are-all-right/) in national presidential polls in 2016: Clinton was predicted to win the popular vote by 6% but actually only won by 3%.) Trump hasn't been above 270 since 4 months into his term. He's been below 200 for 11 months in a row."
|
"The following plot shows, for each month in office, the expected number of electoral votes, with error bars indicating a 3% approval swing in either direction (that is: the blue diamond is the total number of electoral votes for states where he has net positive approval; the top and bottom of the grey bars give the total if he were to gain or lose 3% in every state. Why 3%? That was the [average error](https://fivethirtyeight.com/features/the-polls-are-all-right/) in national presidential polls in 2016: Clinton was predicted to win the popular vote by 6% but actually only won by 3%.) Trump hasn't been above 270 since 4 months into his term. He's been below 200 for a year."
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -97,11 +97,11 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"- **Undecided**: Undecided voters could make up their minds late in the election cycle. But there are few undecided voters: in most states, only 3% or 4%. \n",
|
"- **Undecided**: Undecided voters could make up their minds late in the election cycle. But there are few undecided voters: in most states, only 3% or 4%. \n",
|
||||||
"\n",
|
"\n",
|
||||||
"- **Variance**: How much are voters changing their minds from month to month in each state? I track the standard deviation, 𝝈, of the net approval for each state over the last 18 months.\n",
|
"- **Variance**: How much are voters changing their minds from month to month in each state? I track the standard deviation, 𝝈, of the net approval for each state over the last 12 months (variance is the square of standard deviation).\n",
|
||||||
"\n",
|
"\n",
|
||||||
"- **Movement**: I define the **maximum expected movement** of approval as 1/5 of the undecided voters (i.e., assume the undecided voters broke 60/40 one way or the other) plus 2 standard deviations in the net approval over the last year. \n",
|
"- **Movement**: I define the **maximum expected movement** of approval as 1/5 of the undecided voters (i.e., assume the undecided voters broke 60/40 one way or the other) plus 2 standard deviations in the monthly net approval. \n",
|
||||||
"\n",
|
"\n",
|
||||||
"- **Swing state**: I define a swing state as one whose maximum expected movement is greater than the absolute value of the net approval. There are 16 such states now, all with net approval between +7% and -5%, and with movement greater than 5%. The swing states are shown below in **BOLD CAPS**.\n",
|
"- **Swing state**: I define a swing state as one whose maximum expected movement is greater than the absolute value of the net approval. There are **13** such states now, all with net approval between **+3% and -5%**. The swing states are shown below in **BOLD CAPS**.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"- **Margin**: If you list states in order of net approval, the key turning-point state is Pennsylvania; Trump would need to win that and every state in which he is more popular to reach 270. He currently is **7% behind in Pennsylvania**, so we say that his **margin is 7%**.\n",
|
"- **Margin**: If you list states in order of net approval, the key turning-point state is Pennsylvania; Trump would need to win that and every state in which he is more popular to reach 270. He currently is **7% behind in Pennsylvania**, so we say that his **margin is 7%**.\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -117,13 +117,13 @@
|
|||||||
"- **+**: President's current approval in state.\n",
|
"- **+**: President's current approval in state.\n",
|
||||||
"- **-**: President's current disapproval in state.\n",
|
"- **-**: President's current disapproval in state.\n",
|
||||||
"- **?**: Undecideds in state.\n",
|
"- **?**: Undecideds in state.\n",
|
||||||
"- **𝝈**: Standard deviation in net approval over the past 18 months in state.\n",
|
"- **𝝈**: Standard deviation in net approval over the past 12 months in state.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"The table shows that:\n",
|
"The table shows that:\n",
|
||||||
"- If Trump wins the states he is leading in, he gets **185** electoral votes (the **ΣEV** in the Florida row).\n",
|
"- If Trump wins the states he is leading in, he gets **185** electoral votes (the **ΣEV** in the Florida row).\n",
|
||||||
"- If he also wins all the swing states, he gets **253** electoral votes (**ΣEV** in the Ohio row). \n",
|
"- If he also wins all the swing states, he gets **253** electoral votes (**ΣEV** in the Ohio row). \n",
|
||||||
"- To get to **270**, he would also need to win Pennsylvania, or Nevada plus Virginia; he is currently at -7% net approval in all three of these satates, so I say he has a **7% margin**.\n",
|
"- To get to **270**, going in order of states with least bad net approval, he would also need to win Ohio, Nevada, and Pennsylvania. Or substitute Virginia for one of these; but he would need to win at least one state where he is currently down by **7%**, so that's the margin.\n",
|
||||||
"- Some traditional swing states currently seem out of reach for Trump: he's at -14% in Michigan and Wisconsin.\n"
|
"- Some traditional swing states currently seem out of reach for Trump: he's at **-14%** in Michigan and Wisconsin.\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -136,57 +136,57 @@
|
|||||||
"text/markdown": [
|
"text/markdown": [
|
||||||
"|State|Net|Move|EV|ΣEV|+|−|?|𝝈|\n",
|
"|State|Net|Move|EV|ΣEV|+|−|?|𝝈|\n",
|
||||||
"|-|-|-|-|-|-|-|-|-|\n",
|
"|-|-|-|-|-|-|-|-|-|\n",
|
||||||
"|Wyoming|+35%|±12%|3|3|66%|31%|3%|±5.5%\n",
|
"|Wyoming|+35%|±11%|3|3|66%|31%|3%|±5.3%\n",
|
||||||
"|Alabama|+22%|±7%|9|12|59%|37%|4%|±3.3%\n",
|
"|Alabama|+22%|±6%|9|12|59%|37%|4%|±2.5%\n",
|
||||||
"|Mississippi|+19%|±8%|6|18|57%|38%|5%|±3.4%\n",
|
"|Mississippi|+19%|±6%|6|18|57%|38%|5%|±2.7%\n",
|
||||||
"|West Virginia|+19%|±10%|5|23|58%|39%|3%|±4.6%\n",
|
"|West Virginia|+19%|±6%|5|23|58%|39%|3%|±2.7%\n",
|
||||||
"|Idaho|+18%|±6%|4|27|57%|39%|4%|±2.4%\n",
|
"|Idaho|+18%|±6%|4|27|57%|39%|4%|±2.8%\n",
|
||||||
"|Tennessee|+16%|±6%|11|38|56%|40%|4%|±2.8%\n",
|
"|Tennessee|+16%|±5%|11|38|56%|40%|4%|±2.1%\n",
|
||||||
"|Kentucky|+14%|±4%|8|46|55%|41%|4%|±1.4%\n",
|
"|Kentucky|+14%|±4%|8|46|55%|41%|4%|±1.5%\n",
|
||||||
"|**ALASKA**|**+10%**|**±11%**|3|49|53%|43%|4%|±5.3%\n",
|
"|Alaska|+10%|±7%|3|49|53%|43%|4%|±3.1%\n",
|
||||||
"|Louisiana|+10%|±9%|8|57|53%|43%|4%|±4.2%\n",
|
"|Louisiana|+10%|±7%|8|57|53%|43%|4%|±2.9%\n",
|
||||||
"|Oklahoma|+9%|±7%|7|64|53%|44%|3%|±3.3%\n",
|
"|Oklahoma|+9%|±6%|7|64|53%|44%|3%|±2.5%\n",
|
||||||
"|Arkansas|+8%|±8%|6|70|52%|44%|4%|±3.5%\n",
|
"|Arkansas|+8%|±5%|6|70|52%|44%|4%|±2.0%\n",
|
||||||
"|South Carolina|+8%|±6%|9|79|52%|44%|4%|±2.4%\n",
|
"|South Carolina|+8%|±4%|9|79|52%|44%|4%|±1.7%\n",
|
||||||
"|**KANSAS**|**+3%**|**±6%**|6|85|50%|47%|3%|±2.6%\n",
|
"|**KANSAS**|**+3%**|**±5%**|6|85|50%|47%|3%|±2.2%\n",
|
||||||
"|**MISSOURI**|**+3%**|**±6%**|10|95|50%|47%|3%|±2.8%\n",
|
"|**MISSOURI**|**+3%**|**±6%**|10|95|50%|47%|3%|±2.7%\n",
|
||||||
"|**SOUTH DAKOTA**|**+3%**|**±11%**|3|98|50%|47%|3%|±5.0%\n",
|
"|**SOUTH DAKOTA**|**+3%**|**±9%**|3|98|50%|47%|3%|±4.1%\n",
|
||||||
"|**TEXAS**|**+3%**|**±6%**|38|136|49%|46%|5%|±2.4%\n",
|
"|**TEXAS**|**+3%**|**±4%**|38|136|49%|46%|5%|±1.5%\n",
|
||||||
"|**INDIANA**|**+2%**|**±5%**|11|147|49%|47%|4%|±2.2%\n",
|
"|**INDIANA**|**+2%**|**±4%**|11|147|49%|47%|4%|±1.8%\n",
|
||||||
"|**NORTH DAKOTA**|**+2%**|**±7%**|3|150|49%|47%|4%|±3.1%\n",
|
"|**NORTH DAKOTA**|**+2%**|**±6%**|3|150|49%|47%|4%|±2.7%\n",
|
||||||
"|**UTAH**|**+2%**|**±7%**|6|156|49%|47%|4%|±3.2%\n",
|
"|**UTAH**|**+2%**|**±7%**|6|156|49%|47%|4%|±3.1%\n",
|
||||||
"|**FLORIDA**|**+1%**|**±6%**|29|185|49%|48%|3%|±2.7%\n",
|
"|**FLORIDA**|**+1%**|**±3%**|29|185|49%|48%|3%|±1.4%\n",
|
||||||
"|**MONTANA**|**-1%**|**±8%**|3|188|48%|49%|3%|±3.9%\n",
|
"|**MONTANA**|**-1%**|**±7%**|3|188|48%|49%|3%|±3.1%\n",
|
||||||
"|**NORTH CAROLINA**|**-2%**|**±5%**|15|203|47%|49%|4%|±2.2%\n",
|
"|**NORTH CAROLINA**|**-2%**|**±4%**|15|203|47%|49%|4%|±1.5%\n",
|
||||||
"|**GEORGIA**|**-3%**|**±7%**|16|219|46%|49%|5%|±2.9%\n",
|
"|**GEORGIA**|**-3%**|**±6%**|16|219|46%|49%|5%|±2.6%\n",
|
||||||
"|**ARIZONA**|**-4%**|**±7%**|11|230|46%|50%|4%|±3.0%\n",
|
"|**ARIZONA**|**-4%**|**±4%**|11|230|46%|50%|4%|±1.7%\n",
|
||||||
"|**NEBRASKA**|**-5%**|**±9%**|5|235|46%|51%|3%|±4.1%\n",
|
"|**NEBRASKA**|**-5%**|**±9%**|5|235|46%|51%|3%|±4.1%\n",
|
||||||
"|**OHIO**|**-5%**|**±5%**|18|253|46%|51%|3%|±2.2%\n",
|
"|Ohio|-5%|±3%|18|253|46%|51%|3%|±1.0%\n",
|
||||||
"|Nevada|-7%|±6%|6|259|45%|52%|3%|±2.9%\n",
|
"|Nevada|-7%|±5%|6|259|45%|52%|3%|±2.3%\n",
|
||||||
"|Pennsylvania|-7%|±3%|20|279|45%|52%|3%|±1.4%\n",
|
"|Pennsylvania|-7%|±3%|20|279|45%|52%|3%|±1.2%\n",
|
||||||
"|Virginia|-7%|±4%|13|292|45%|52%|3%|±1.7%\n",
|
"|Virginia|-7%|±4%|13|292|45%|52%|3%|±1.9%\n",
|
||||||
"|New Mexico|-9%|±6%|5|297|44%|53%|3%|±2.9%\n",
|
"|New Mexico|-9%|±7%|5|297|44%|53%|3%|±3.4%\n",
|
||||||
"|Iowa|-13%|±6%|6|303|42%|55%|3%|±2.7%\n",
|
"|Iowa|-13%|±4%|6|303|42%|55%|3%|±1.8%\n",
|
||||||
"|Maine|-13%|±8%|4|307|42%|55%|3%|±3.6%\n",
|
"|Maine|-13%|±5%|4|307|42%|55%|3%|±2.4%\n",
|
||||||
"|Minnesota|-13%|±5%|10|317|42%|55%|3%|±2.1%\n",
|
"|Minnesota|-13%|±5%|10|317|42%|55%|3%|±2.1%\n",
|
||||||
"|Michigan|-14%|±5%|16|333|41%|55%|4%|±2.0%\n",
|
"|Michigan|-14%|±4%|16|333|41%|55%|4%|±1.8%\n",
|
||||||
"|Wisconsin|-14%|±5%|10|343|41%|55%|4%|±2.2%\n",
|
"|Wisconsin|-14%|±4%|10|343|41%|55%|4%|±1.7%\n",
|
||||||
"|Colorado|-15%|±6%|9|352|41%|56%|3%|±2.5%\n",
|
"|Colorado|-15%|±5%|9|352|41%|56%|3%|±2.3%\n",
|
||||||
"|New Hampshire|-15%|±9%|4|356|41%|56%|3%|±4.3%\n",
|
"|New Hampshire|-15%|±9%|4|356|41%|56%|3%|±4.1%\n",
|
||||||
"|New Jersey|-15%|±5%|14|370|41%|56%|3%|±2.2%\n",
|
"|New Jersey|-15%|±4%|14|370|41%|56%|3%|±1.5%\n",
|
||||||
"|Delaware|-18%|±7%|3|373|39%|57%|4%|±3.2%\n",
|
"|Delaware|-18%|±8%|3|373|39%|57%|4%|±3.5%\n",
|
||||||
"|Illinois|-20%|±4%|20|393|38%|58%|4%|±1.4%\n",
|
"|Illinois|-20%|±4%|20|393|38%|58%|4%|±1.6%\n",
|
||||||
"|Connecticut|-22%|±8%|7|400|37%|59%|4%|±3.7%\n",
|
"|Connecticut|-22%|±3%|7|400|37%|59%|4%|±1.3%\n",
|
||||||
"|Rhode Island|-22%|±6%|4|404|37%|59%|4%|±2.4%\n",
|
"|Rhode Island|-22%|±4%|4|404|37%|59%|4%|±1.8%\n",
|
||||||
"|Oregon|-24%|±5%|7|411|36%|60%|4%|±2.2%\n",
|
"|Oregon|-24%|±5%|7|411|36%|60%|4%|±2.1%\n",
|
||||||
"|New York|-25%|±5%|29|440|36%|61%|3%|±2.1%\n",
|
"|New York|-25%|±3%|29|440|36%|61%|3%|±1.2%\n",
|
||||||
"|Maryland|-27%|±7%|10|450|35%|62%|3%|±3.0%\n",
|
"|Maryland|-27%|±4%|10|450|35%|62%|3%|±1.8%\n",
|
||||||
"|California|-28%|±6%|55|505|34%|62%|4%|±2.7%\n",
|
"|California|-28%|±3%|55|505|34%|62%|4%|±1.2%\n",
|
||||||
"|Massachusetts|-29%|±6%|11|516|34%|63%|3%|±2.5%\n",
|
"|Massachusetts|-29%|±4%|11|516|34%|63%|3%|±1.8%\n",
|
||||||
"|Washington|-29%|±6%|12|528|34%|63%|3%|±2.7%\n",
|
"|Washington|-29%|±5%|12|528|34%|63%|3%|±2.0%\n",
|
||||||
"|Hawaii|-35%|±10%|4|532|31%|66%|3%|±4.6%\n",
|
"|Hawaii|-35%|±9%|4|532|31%|66%|3%|±4.2%\n",
|
||||||
"|Vermont|-42%|±10%|3|535|28%|70%|2%|±5.0%\n",
|
"|Vermont|-42%|±8%|3|535|28%|70%|2%|±3.6%\n",
|
||||||
"|District of Columbia|-62%|±7%|3|538|17%|79%|4%|±3.0%"
|
"|District of Columbia|-62%|±6%|3|538|17%|79%|4%|±2.5%"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<IPython.core.display.Markdown object>"
|
"<IPython.core.display.Markdown object>"
|
||||||
@@ -216,7 +216,7 @@
|
|||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 720x504 with 1 Axes>"
|
"<Figure size 720x504 with 1 Axes>"
|
||||||
]
|
]
|
||||||
@@ -264,7 +264,7 @@
|
|||||||
"|**FLORIDA**|+5|29|-4|(+1)|-9|(-4)|+0|(+5)|+17|(+22)|\n",
|
"|**FLORIDA**|+5|29|-4|(+1)|-9|(-4)|+0|(+5)|+17|(+22)|\n",
|
||||||
"|Maryland|-23|10|-4|(-27)|-7|(-30)|+0|(-23)|+10|(-13)|\n",
|
"|Maryland|-23|10|-4|(-27)|-7|(-30)|+0|(-23)|+10|(-13)|\n",
|
||||||
"|Alabama|+27|9|-5|(+22)|-7|(+20)|+3|(+30)|+9|(+36)|\n",
|
"|Alabama|+27|9|-5|(+22)|-7|(+20)|+3|(+30)|+9|(+36)|\n",
|
||||||
"|**ALASKA**|+15|3|-5|(+10)|-14|(+1)|-14|(+1)|+9|(+24)|\n",
|
"|Alaska|+15|3|-5|(+10)|-14|(+1)|-14|(+1)|+9|(+24)|\n",
|
||||||
"|Illinois|-13|20|-7|(-20)|-10|(-23)|-8|(-21)|+22|(+9)|\n",
|
"|Illinois|-13|20|-7|(-20)|-10|(-23)|-8|(-21)|+22|(+9)|\n",
|
||||||
"|Louisiana|+17|8|-7|(+10)|-2|(+15)|+2|(+19)|+14|(+31)|\n",
|
"|Louisiana|+17|8|-7|(+10)|-2|(+15)|+2|(+19)|+14|(+31)|\n",
|
||||||
"|**NORTH CAROLINA**|+5|15|-7|(-2)|-9|(-4)|-6|(-1)|+13|(+18)|\n",
|
"|**NORTH CAROLINA**|+5|15|-7|(-2)|-9|(-4)|-6|(-1)|+13|(+18)|\n",
|
||||||
@@ -277,7 +277,7 @@
|
|||||||
"|Connecticut|-11|7|-11|(-22)|-13|(-24)|-8|(-19)|+16|(+5)|\n",
|
"|Connecticut|-11|7|-11|(-22)|-13|(-24)|-8|(-19)|+16|(+5)|\n",
|
||||||
"|Minnesota|-2|10|-11|(-13)|-16|(-18)|-12|(-14)|+5|(+3)|\n",
|
"|Minnesota|-2|10|-11|(-13)|-16|(-18)|-12|(-14)|+5|(+3)|\n",
|
||||||
"|West Virginia|+30|5|-11|(+19)|-6|(+24)|-8|(+22)|+7|(+37)|\n",
|
"|West Virginia|+30|5|-11|(+19)|-6|(+24)|-8|(+22)|+7|(+37)|\n",
|
||||||
"|**OHIO**|+7|18|-12|(-5)|-13|(-6)|-11|(-4)|+7|(+14)|\n",
|
"|Ohio|+7|18|-12|(-5)|-13|(-6)|-11|(-4)|+7|(+14)|\n",
|
||||||
"|Tennessee|+28|11|-12|(+16)|-16|(+12)|-11|(+17)|+5|(+33)|\n",
|
"|Tennessee|+28|11|-12|(+16)|-16|(+12)|-11|(+17)|+5|(+33)|\n",
|
||||||
"|Wyoming|+47|3|-12|(+35)|-17|(+30)|-22|(+25)|-7|(+40)|\n",
|
"|Wyoming|+47|3|-12|(+35)|-17|(+30)|-22|(+25)|-7|(+40)|\n",
|
||||||
"|**ARIZONA**|+9|11|-13|(-4)|-17|(-8)|-12|(-3)|+11|(+20)|\n",
|
"|**ARIZONA**|+9|11|-13|(-4)|-17|(-8)|-12|(-3)|+11|(+20)|\n",
|
||||||
@@ -315,13 +315,6 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"show_parp()"
|
"show_parp()"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -100,8 +100,8 @@
|
|||||||
" 'August 2017': -19, 'August 2018': -12, 'August 2019': -10, \n",
|
" 'August 2017': -19, 'August 2018': -12, 'August 2019': -10, \n",
|
||||||
" 'September 2017': -20, 'September 2018': -14, 'September 2019': -13, \n",
|
" 'September 2017': -20, 'September 2018': -14, 'September 2019': -13, \n",
|
||||||
" 'October 2017': -17, 'October 2018': -11, 'October 2019': -13, \n",
|
" 'October 2017': -17, 'October 2018': -11, 'October 2019': -13, \n",
|
||||||
" 'November 2017': -19, 'November 2018': -11, 'November 2019': -10,\n",
|
" 'November 2017': -19, 'November 2018': -11, 'November 2019': -13,\n",
|
||||||
" 'December 2017': -18, 'December 2018': -10\n",
|
" 'December 2017': -18, 'December 2018': -10, 'December 2019': -12,\n",
|
||||||
" }"
|
" }"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -151,64 +151,10 @@
|
|||||||
"def net(state, date=now) -> int: return state.approvals[date] - state.disapprovals[date]\n",
|
"def net(state, date=now) -> int: return state.approvals[date] - state.disapprovals[date]\n",
|
||||||
"def undecided(state, date=now) -> int: return 100 - state.approvals[date] - state.disapprovals[date]\n",
|
"def undecided(state, date=now) -> int: return 100 - state.approvals[date] - state.disapprovals[date]\n",
|
||||||
"def movement(state, date=now) -> float: return undecided(state, date) / 5 + 2 * 𝝈(state)\n",
|
"def movement(state, date=now) -> float: return undecided(state, date) / 5 + 2 * 𝝈(state)\n",
|
||||||
"def 𝝈(state, recent=dates[-18:]) -> float: return stdev(net(state, d) for d in recent)\n",
|
"def 𝝈(state, recent=dates[-12:]) -> float: return stdev(net(state, d) for d in recent)\n",
|
||||||
"def is_swing(state) -> bool: return abs(net(state)) < movement(state)"
|
"def is_swing(state) -> bool: return abs(net(state)) < movement(state)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 5,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"['January 2017',\n",
|
|
||||||
" 'February 2017',\n",
|
|
||||||
" 'March 2017',\n",
|
|
||||||
" 'April 2017',\n",
|
|
||||||
" 'May 2017',\n",
|
|
||||||
" 'June 2017',\n",
|
|
||||||
" 'July 2017',\n",
|
|
||||||
" 'August 2017',\n",
|
|
||||||
" 'September 2017',\n",
|
|
||||||
" 'October 2017',\n",
|
|
||||||
" 'November 2017',\n",
|
|
||||||
" 'December 2017',\n",
|
|
||||||
" 'January 2018',\n",
|
|
||||||
" 'February 2018',\n",
|
|
||||||
" 'March 2018',\n",
|
|
||||||
" 'April 2018',\n",
|
|
||||||
" 'May 2018',\n",
|
|
||||||
" 'June 2018',\n",
|
|
||||||
" 'July 2018',\n",
|
|
||||||
" 'August 2018',\n",
|
|
||||||
" 'September 2018',\n",
|
|
||||||
" 'October 2018',\n",
|
|
||||||
" 'November 2018',\n",
|
|
||||||
" 'December 2018',\n",
|
|
||||||
" 'January 2019',\n",
|
|
||||||
" 'February 2019',\n",
|
|
||||||
" 'March 2019',\n",
|
|
||||||
" 'April 2019',\n",
|
|
||||||
" 'May 2019',\n",
|
|
||||||
" 'June 2019',\n",
|
|
||||||
" 'July 2019',\n",
|
|
||||||
" 'August 2019',\n",
|
|
||||||
" 'September 2019',\n",
|
|
||||||
" 'October 2019',\n",
|
|
||||||
" 'November 2019']"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"execution_count": 5,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
|
||||||
"dates"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|||||||
Reference in new issue
Block a user