This commit is contained in:
moT01 2020-09-29 09:50:39 -05:00
commit e4811795bd
7 changed files with 314 additions and 0 deletions

28
README.md Normal file
View File

@ -0,0 +1,28 @@
### Assignment
You will anaylize a dataset of the global average sea level change since 1880. You will use the data to predict the sea level change through year 2050.
Use the data to complete the following tasks:
* Use Pandas to import the data from `epa-sea-level.csv`.
* Use matplotlib to create a scatter plot using the "Year" column as the x-axis and the "CSIRO Adjusted Sea Level" column as the y-axix.
* Use the `linregress` function from `scipi.stats` to get the slope and y-intercept of the line of best fit. Plot the line of best fit over the top of the scatter plot. Make the line go through the year 2050 to predict the sea level rise in 2050.
* Plot a new line of best fit just using the data from year 2000 through the most recent year in the dataset. Make the line also go through the year 2050 to predict the sea level rise in 2050 if the rate of rise continues as it has since the year 2000.
* The x label should be "Year", the y label should be "Sea Level (inches)", and the title should be "Rise in Sea Level".
Unit tests are written for you under `test_module.py`.
### Development
For development, you can use `main.py` to test your functions. Click the "run" button and `main.py` will run.
### Testing
We imported the tests from `test_module.py` to `main.py` for your convenience. The tests will run automatically whenever you hit the "run" button.
### Submitting
Copy your project's URL and submit it to freeCodeCamp.
### Data Source
Global Average Absolute Sea Level Change, 1880-2014 from the US Environmental Protection Agency using data from CSIRO, 2015; NOAA, 2015.
https://datahub.io/core/sea-level-rise

135
epa-sea-level.csv Normal file
View File

@ -0,0 +1,135 @@
Year,CSIRO Adjusted Sea Level,Lower Error Bound,Upper Error Bound,NOAA Adjusted Sea Level
1880,0,-0.952755905,0.952755905,
1881,0.220472441,-0.732283464,1.173228345,
1882,-0.440944881,-1.346456692,0.464566929,
1883,-0.232283464,-1.129921259,0.66535433,
1884,0.590551181,-0.283464567,1.464566928,
1885,0.531496062,-0.330708661,1.393700786,
1886,0.437007874,-0.381889763,1.255905511,
1887,0.216535433,-0.602362204,1.03543307,
1888,0.299212598,-0.519685039,1.118110235,
1889,0.362204724,-0.456692913,1.181102361,
1890,0.440944881,-0.374015748,1.255905511,
1891,0.374015748,-0.440944881,1.188976377,
1892,0.499999999,-0.31496063,1.314960629,
1893,0.685039369,-0.114173228,1.484251967,
1894,0.303149606,-0.547244094,1.153543306,
1895,0.767716535,-0.082677165,1.618110235,
1896,0.468503937,-0.366141732,1.303149605,
1897,0.673228346,-0.145669291,1.492125983,
1898,1.043307086,0.267716535,1.818897636,
1899,1.338582676,0.574803149,2.102362203,
1900,1.125984251,0.405511811,1.846456691,
1901,1.110236219,0.417322834,1.803149604,
1902,1.291338581,0.61023622,1.972440943,
1903,1.606299211,0.937007873,2.275590549,
1904,1.2007874,0.53543307,1.86614173,
1905,0.984251968,0.377952756,1.590551179,
1906,1.251968503,0.673228346,1.83070866,
1907,1.196850392,0.61023622,1.783464565,
1908,1.098425196,0.527559055,1.669291337,
1909,1.27559055,0.700787401,1.850393699,
1910,1.271653542,0.696850393,1.846456691,
1911,1.598425195,1.039370078,2.157480313,
1912,1.476377951,0.917322834,2.035433069,
1913,1.547244093,0.992125983,2.102362203,
1914,1.795275589,1.251968503,2.338582675,
1915,2.10629921,1.57086614,2.641732281,
1916,2.031496061,1.519685038,2.543307084,
1917,1.854330707,1.350393699,2.358267714,
1918,1.791338581,1.291338581,2.29133858,
1919,1.854330707,1.354330707,2.354330706,
1920,1.905511809,1.393700786,2.417322832,
1921,1.988188974,1.472440943,2.503937005,
1922,1.952755904,1.433070865,2.472440942,
1923,1.999999998,1.488188975,2.511811021,
1924,1.712598423,1.196850392,2.228346454,
1925,1.791338581,1.255905511,2.326771651,
1926,2.047244092,1.507874014,2.586614171,
1927,2.003937006,1.496062991,2.511811021,
1928,1.850393699,1.366141731,2.334645667,
1929,1.905511809,1.429133857,2.381889761,
1930,2.062992124,1.590551179,2.535433068,
1931,2.047244092,1.566929132,2.527559053,
1932,2.271653541,1.803149604,2.740157478,
1933,2.440944879,1.976377951,2.905511808,
1934,2.228346454,1.759842518,2.696850391,
1935,2.448818895,1.980314959,2.917322832,
1936,2.295275588,1.83070866,2.759842517,
1937,2.519685037,2.055118108,2.984251965,
1938,2.622047241,2.157480313,3.08661417,
1939,2.826771651,2.346456691,3.307086611,
1940,2.618110234,2.18110236,3.055118107,
1941,3.098425194,2.673228344,3.523622044,
1942,3.098425194,2.673228344,3.523622044,
1943,3.098425194,2.673228344,3.523622044,
1944,2.84645669,2.425196848,3.267716532,
1945,2.95669291,2.535433068,3.377952752,
1946,3.251968501,2.834645666,3.669291335,
1947,3.374015745,2.996062989,3.7519685,
1948,3.562992122,3.19685039,3.929133854,
1949,3.51181102,3.181102359,3.842519681,
1950,3.598425193,3.287401571,3.909448815,
1951,3.972440941,3.665354327,4.279527555,
1952,3.870078736,3.56692913,4.173228342,
1953,4.043307082,3.748031492,4.338582673,
1954,3.929133854,3.64173228,4.216535429,
1955,3.964566925,3.685039366,4.244094484,
1956,3.763779524,3.488188973,4.039370075,
1957,4.291338578,4.019685035,4.562992121,
1958,4.346456688,4.086614169,4.606299208,
1959,4.358267712,4.102362201,4.614173224,
1960,4.503937003,4.244094484,4.763779523,
1961,4.748031491,4.488188972,5.007874011,
1962,4.543307082,4.283464563,4.803149601,
1963,4.480314956,4.220472437,4.740157475,
1964,4.169291334,3.905511807,4.433070862,
1965,4.610236216,4.346456688,4.874015743,
1966,4.397637791,4.137795271,4.65748031,
1967,4.452755901,4.196850389,4.708661413,
1968,4.484251964,4.220472437,4.748031491,
1969,4.751968499,4.476377948,5.02755905,
1970,4.67716535,4.401574799,4.9527559,
1971,4.881889759,4.610236216,5.153543302,
1972,5.240157475,4.968503932,5.511811018,
1973,5.003937003,4.736220468,5.271653538,
1974,5.472440939,5.204724404,5.740157474,
1975,5.409448813,5.145669286,5.673228341,
1976,5.370078735,5.1023622,5.63779527,
1977,5.303149601,5.043307081,5.56299212,
1978,5.555118105,5.291338577,5.818897632,
1979,5.362204719,5.098425192,5.625984246,
1980,5.598425191,5.34251968,5.854330703,
1981,6.086614167,5.830708655,6.342519679,
1982,5.858267711,5.610236215,6.106299206,
1983,6.188976372,5.93307086,6.444881883,
1984,6.153543301,5.905511805,6.401574797,
1985,5.74803149,5.499999994,5.996062986,
1986,5.771653537,5.523622042,6.019685033,
1987,5.795275585,5.551181097,6.039370073,
1988,5.980314955,5.732283459,6.22834645,
1989,6.157480309,5.905511805,6.409448812,
1990,6.232283458,5.972440939,6.492125978,
1991,6.334645663,6.074803143,6.594488182,
1992,6.35826771,6.094488183,6.622047237,
1993,6.291338576,6.027559049,6.555118104,6.297493046
1994,6.499999993,6.236220466,6.763779521,6.310933553
1995,6.618110229,6.354330702,6.881889757,6.452568661
1996,6.787401568,6.523622041,7.051181095,6.62763131
1997,7.066929127,6.803149599,7.330708654,6.733920367
1998,6.665354324,6.393700781,6.937007867,6.865806069
1999,7.011811016,6.736220466,7.287401567,6.848689771
2000,7.062992119,6.791338576,7.334645662,6.920582014
2001,7.287401567,7.019685032,7.555118103,7.087460011
2002,7.381889756,7.110236213,7.653543299,7.319697525
2003,7.759842512,7.484251961,8.035433063,7.488352718
2004,7.740157472,7.464566922,8.015748023,7.507932839
2005,7.74409448,7.472440937,8.015748023,7.644563144
2006,7.917322827,7.645669284,8.18897637,7.697420009
2007,7.996062984,7.712598417,8.279527551,7.70214715
2008,8.350393692,8.078740149,8.622047235,7.90736541
2009,8.586614164,8.311023614,8.862204715,8.04635409
2010,8.901574794,8.618110227,9.185039361,8.122972567
2011,8.96456692,8.661417314,9.267716526,8.053065004
2012,9.326771644,8.992125975,9.661417313,8.457057629
2013,8.980314951,8.622047235,9.338582668,8.546648227
1 Year CSIRO Adjusted Sea Level Lower Error Bound Upper Error Bound NOAA Adjusted Sea Level
2 1880 0 -0.952755905 0.952755905
3 1881 0.220472441 -0.732283464 1.173228345
4 1882 -0.440944881 -1.346456692 0.464566929
5 1883 -0.232283464 -1.129921259 0.66535433
6 1884 0.590551181 -0.283464567 1.464566928
7 1885 0.531496062 -0.330708661 1.393700786
8 1886 0.437007874 -0.381889763 1.255905511
9 1887 0.216535433 -0.602362204 1.03543307
10 1888 0.299212598 -0.519685039 1.118110235
11 1889 0.362204724 -0.456692913 1.181102361
12 1890 0.440944881 -0.374015748 1.255905511
13 1891 0.374015748 -0.440944881 1.188976377
14 1892 0.499999999 -0.31496063 1.314960629
15 1893 0.685039369 -0.114173228 1.484251967
16 1894 0.303149606 -0.547244094 1.153543306
17 1895 0.767716535 -0.082677165 1.618110235
18 1896 0.468503937 -0.366141732 1.303149605
19 1897 0.673228346 -0.145669291 1.492125983
20 1898 1.043307086 0.267716535 1.818897636
21 1899 1.338582676 0.574803149 2.102362203
22 1900 1.125984251 0.405511811 1.846456691
23 1901 1.110236219 0.417322834 1.803149604
24 1902 1.291338581 0.61023622 1.972440943
25 1903 1.606299211 0.937007873 2.275590549
26 1904 1.2007874 0.53543307 1.86614173
27 1905 0.984251968 0.377952756 1.590551179
28 1906 1.251968503 0.673228346 1.83070866
29 1907 1.196850392 0.61023622 1.783464565
30 1908 1.098425196 0.527559055 1.669291337
31 1909 1.27559055 0.700787401 1.850393699
32 1910 1.271653542 0.696850393 1.846456691
33 1911 1.598425195 1.039370078 2.157480313
34 1912 1.476377951 0.917322834 2.035433069
35 1913 1.547244093 0.992125983 2.102362203
36 1914 1.795275589 1.251968503 2.338582675
37 1915 2.10629921 1.57086614 2.641732281
38 1916 2.031496061 1.519685038 2.543307084
39 1917 1.854330707 1.350393699 2.358267714
40 1918 1.791338581 1.291338581 2.29133858
41 1919 1.854330707 1.354330707 2.354330706
42 1920 1.905511809 1.393700786 2.417322832
43 1921 1.988188974 1.472440943 2.503937005
44 1922 1.952755904 1.433070865 2.472440942
45 1923 1.999999998 1.488188975 2.511811021
46 1924 1.712598423 1.196850392 2.228346454
47 1925 1.791338581 1.255905511 2.326771651
48 1926 2.047244092 1.507874014 2.586614171
49 1927 2.003937006 1.496062991 2.511811021
50 1928 1.850393699 1.366141731 2.334645667
51 1929 1.905511809 1.429133857 2.381889761
52 1930 2.062992124 1.590551179 2.535433068
53 1931 2.047244092 1.566929132 2.527559053
54 1932 2.271653541 1.803149604 2.740157478
55 1933 2.440944879 1.976377951 2.905511808
56 1934 2.228346454 1.759842518 2.696850391
57 1935 2.448818895 1.980314959 2.917322832
58 1936 2.295275588 1.83070866 2.759842517
59 1937 2.519685037 2.055118108 2.984251965
60 1938 2.622047241 2.157480313 3.08661417
61 1939 2.826771651 2.346456691 3.307086611
62 1940 2.618110234 2.18110236 3.055118107
63 1941 3.098425194 2.673228344 3.523622044
64 1942 3.098425194 2.673228344 3.523622044
65 1943 3.098425194 2.673228344 3.523622044
66 1944 2.84645669 2.425196848 3.267716532
67 1945 2.95669291 2.535433068 3.377952752
68 1946 3.251968501 2.834645666 3.669291335
69 1947 3.374015745 2.996062989 3.7519685
70 1948 3.562992122 3.19685039 3.929133854
71 1949 3.51181102 3.181102359 3.842519681
72 1950 3.598425193 3.287401571 3.909448815
73 1951 3.972440941 3.665354327 4.279527555
74 1952 3.870078736 3.56692913 4.173228342
75 1953 4.043307082 3.748031492 4.338582673
76 1954 3.929133854 3.64173228 4.216535429
77 1955 3.964566925 3.685039366 4.244094484
78 1956 3.763779524 3.488188973 4.039370075
79 1957 4.291338578 4.019685035 4.562992121
80 1958 4.346456688 4.086614169 4.606299208
81 1959 4.358267712 4.102362201 4.614173224
82 1960 4.503937003 4.244094484 4.763779523
83 1961 4.748031491 4.488188972 5.007874011
84 1962 4.543307082 4.283464563 4.803149601
85 1963 4.480314956 4.220472437 4.740157475
86 1964 4.169291334 3.905511807 4.433070862
87 1965 4.610236216 4.346456688 4.874015743
88 1966 4.397637791 4.137795271 4.65748031
89 1967 4.452755901 4.196850389 4.708661413
90 1968 4.484251964 4.220472437 4.748031491
91 1969 4.751968499 4.476377948 5.02755905
92 1970 4.67716535 4.401574799 4.9527559
93 1971 4.881889759 4.610236216 5.153543302
94 1972 5.240157475 4.968503932 5.511811018
95 1973 5.003937003 4.736220468 5.271653538
96 1974 5.472440939 5.204724404 5.740157474
97 1975 5.409448813 5.145669286 5.673228341
98 1976 5.370078735 5.1023622 5.63779527
99 1977 5.303149601 5.043307081 5.56299212
100 1978 5.555118105 5.291338577 5.818897632
101 1979 5.362204719 5.098425192 5.625984246
102 1980 5.598425191 5.34251968 5.854330703
103 1981 6.086614167 5.830708655 6.342519679
104 1982 5.858267711 5.610236215 6.106299206
105 1983 6.188976372 5.93307086 6.444881883
106 1984 6.153543301 5.905511805 6.401574797
107 1985 5.74803149 5.499999994 5.996062986
108 1986 5.771653537 5.523622042 6.019685033
109 1987 5.795275585 5.551181097 6.039370073
110 1988 5.980314955 5.732283459 6.22834645
111 1989 6.157480309 5.905511805 6.409448812
112 1990 6.232283458 5.972440939 6.492125978
113 1991 6.334645663 6.074803143 6.594488182
114 1992 6.35826771 6.094488183 6.622047237
115 1993 6.291338576 6.027559049 6.555118104 6.297493046
116 1994 6.499999993 6.236220466 6.763779521 6.310933553
117 1995 6.618110229 6.354330702 6.881889757 6.452568661
118 1996 6.787401568 6.523622041 7.051181095 6.62763131
119 1997 7.066929127 6.803149599 7.330708654 6.733920367
120 1998 6.665354324 6.393700781 6.937007867 6.865806069
121 1999 7.011811016 6.736220466 7.287401567 6.848689771
122 2000 7.062992119 6.791338576 7.334645662 6.920582014
123 2001 7.287401567 7.019685032 7.555118103 7.087460011
124 2002 7.381889756 7.110236213 7.653543299 7.319697525
125 2003 7.759842512 7.484251961 8.035433063 7.488352718
126 2004 7.740157472 7.464566922 8.015748023 7.507932839
127 2005 7.74409448 7.472440937 8.015748023 7.644563144
128 2006 7.917322827 7.645669284 8.18897637 7.697420009
129 2007 7.996062984 7.712598417 8.279527551 7.70214715
130 2008 8.350393692 8.078740149 8.622047235 7.90736541
131 2009 8.586614164 8.311023614 8.862204715 8.04635409
132 2010 8.901574794 8.618110227 9.185039361 8.122972567
133 2011 8.96456692 8.661417314 9.267716526 8.053065004
134 2012 9.326771644 8.992125975 9.661417313 8.457057629
135 2013 8.980314951 8.622047235 9.338582668 8.546648227

9
main.py Normal file
View File

@ -0,0 +1,9 @@
# This entrypoint file to be used in development. Start by reading README.md
import sea_level_predictor
from unittest import main
# Test your function by calling it here
sea_level_predictor.draw_plot()
# Run unit tests automatically
main(module='test_module', exit=False)

70
poetry.lock generated Normal file
View File

@ -0,0 +1,70 @@
[[package]]
category = "main"
description = "NumPy is the fundamental package for array computing with Python."
name = "numpy"
optional = false
python-versions = ">=3.5"
version = "1.17.4"
[[package]]
category = "main"
description = "Powerful data structures for data analysis, time series, and statistics"
name = "pandas"
optional = false
python-versions = ">=3.5.3"
version = "0.25.3"
[package.dependencies]
numpy = ">=1.13.3"
python-dateutil = ">=2.6.1"
pytz = ">=2017.2"
[[package]]
category = "main"
description = "Extensions to the standard Python datetime module"
name = "python-dateutil"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
version = "2.8.1"
[package.dependencies]
six = ">=1.5"
[[package]]
category = "main"
description = "World timezone definitions, modern and historical"
name = "pytz"
optional = false
python-versions = "*"
version = "2019.3"
[[package]]
category = "main"
description = "SciPy: Scientific Library for Python"
name = "scipy"
optional = false
python-versions = ">=3.5"
version = "1.4.1"
[package.dependencies]
numpy = ">=1.13.3"
[[package]]
category = "main"
description = "Python 2 and 3 compatibility utilities"
name = "six"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*"
version = "1.13.0"
[metadata]
content-hash = "2b7d90476e9a0bb8e18181af41a4cac15addc5d71a9834f08f8fae9eb3711690"
python-versions = "^3.7"
[metadata.hashes]
numpy = ["0a7a1dd123aecc9f0076934288ceed7fd9a81ba3919f11a855a7887cbe82a02f", "0c0763787133dfeec19904c22c7e358b231c87ba3206b211652f8cbe1241deb6", "3d52298d0be333583739f1aec9026f3b09fdfe3ddf7c7028cb16d9d2af1cca7e", "43bb4b70585f1c2d153e45323a886839f98af8bfa810f7014b20be714c37c447", "475963c5b9e116c38ad7347e154e5651d05a2286d86455671f5b1eebba5feb76", "64874913367f18eb3013b16123c9fed113962e75d809fca5b78ebfbb73ed93ba", "683828e50c339fc9e68720396f2de14253992c495fdddef77a1e17de55f1decc", "6ca4000c4a6f95a78c33c7dadbb9495c10880be9c89316aa536eac359ab820ae", "75fd817b7061f6378e4659dd792c84c0b60533e867f83e0d1e52d5d8e53df88c", "7d81d784bdbed30137aca242ab307f3e65c8d93f4c7b7d8f322110b2e90177f9", "8d0af8d3664f142414fd5b15cabfd3b6cc3ef242a3c7a7493257025be5a6955f", "9679831005fb16c6df3dd35d17aa31dc0d4d7573d84f0b44cc481490a65c7725", "a8f67ebfae9f575d85fa859b54d3bdecaeece74e3274b0b5c5f804d7ca789fe1", "acbf5c52db4adb366c064d0b7c7899e3e778d89db585feadd23b06b587d64761", "ada4805ed51f5bcaa3a06d3dd94939351869c095e30a2b54264f5a5004b52170", "c7354e8f0eca5c110b7e978034cd86ed98a7a5ffcf69ca97535445a595e07b8e", "e2e9d8c87120ba2c591f60e32736b82b67f72c37ba88a4c23c81b5b8fa49c018", "e467c57121fe1b78a8f68dd9255fbb3bb3f4f7547c6b9e109f31d14569f490c3", "ede47b98de79565fcd7f2decb475e2dcc85ee4097743e551fe26cfc7eb3ff143", "f58913e9227400f1395c7b800503ebfdb0772f1c33ff8cb4d6451c06cabdf316", "fe39f5fd4103ec4ca3cb8600b19216cd1ff316b4990f4c0b6057ad982c0a34d5"]
pandas = ["00dff3a8e337f5ed7ad295d98a31821d3d0fe7792da82d78d7fd79b89c03ea9d", "22361b1597c8c2ffd697aa9bf85423afa9e1fcfa6b1ea821054a244d5f24d75e", "255920e63850dc512ce356233081098554d641ba99c3767dde9e9f35630f994b", "26382aab9c119735908d94d2c5c08020a4a0a82969b7e5eefb92f902b3b30ad7", "33970f4cacdd9a0ddb8f21e151bfb9f178afb7c36eb7c25b9094c02876f385c2", "4545467a637e0e1393f7d05d61dace89689ad6d6f66f267f86fff737b702cce9", "52da74df8a9c9a103af0a72c9d5fdc8e0183a90884278db7f386b5692a2220a4", "61741f5aeb252f39c3031d11405305b6d10ce663c53bc3112705d7ad66c013d0", "6a3ac2c87e4e32a969921d1428525f09462770c349147aa8e9ab95f88c71ec71", "7458c48e3d15b8aaa7d575be60e1e4dd70348efcd9376656b72fecd55c59a4c3", "78bf638993219311377ce9836b3dc05f627a666d0dbc8cec37c0ff3c9ada673b", "8153705d6545fd9eb6dd2bc79301bff08825d2e2f716d5dced48daafc2d0b81f", "975c461accd14e89d71772e89108a050fa824c0b87a67d34cedf245f6681fc17", "9962957a27bfb70ab64103d0a7b42fa59c642fb4ed4cb75d0227b7bb9228535d", "adc3d3a3f9e59a38d923e90e20c4922fc62d1e5a03d083440468c6d8f3f1ae0a", "bbe3eb765a0b1e578833d243e2814b60c825b7fdbf4cdfe8e8aae8a08ed56ecf", "df8864824b1fe488cf778c3650ee59c3a0d8f42e53707de167ba6b4f7d35f133", "e45055c30a608076e31a9fcd780a956ed3b1fa20db61561b8d88b79259f526f7", "ee50c2142cdcf41995655d499a157d0a812fce55c97d9aad13bc1eef837ed36c"]
python-dateutil = ["73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", "75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"]
pytz = ["1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d", "b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"]
scipy = ["00af72998a46c25bdb5824d2b729e7dabec0c765f9deb0b504f928591f5ff9d4", "0902a620a381f101e184a958459b36d3ee50f5effd186db76e131cbefcbb96f7", "1e3190466d669d658233e8a583b854f6386dd62d655539b77b3fa25bfb2abb70", "2cce3f9847a1a51019e8c5b47620da93950e58ebc611f13e0d11f4980ca5fecb", "3092857f36b690a321a662fe5496cb816a7f4eecd875e1d36793d92d3f884073", "386086e2972ed2db17cebf88610aab7d7f6e2c0ca30042dc9a89cf18dcc363fa", "71eb180f22c49066f25d6df16f8709f215723317cc951d99e54dc88020ea57be", "770254a280d741dd3436919d47e35712fb081a6ff8bafc0f319382b954b77802", "787cc50cab3020a865640aba3485e9fbd161d4d3b0d03a967df1a2881320512d", "8a07760d5c7f3a92e440ad3aedcc98891e915ce857664282ae3c0220f3301eb6", "8d3bc3993b8e4be7eade6dcc6fd59a412d96d3a33fa42b0fa45dc9e24495ede9", "9508a7c628a165c2c835f2497837bf6ac80eb25291055f56c129df3c943cbaf8", "a144811318853a23d32a07bc7fd5561ff0cac5da643d96ed94a4ffe967d89672", "a1aae70d52d0b074d8121333bc807a485f9f1e6a69742010b33780df2e60cfe0", "a2d6df9eb074af7f08866598e4ef068a2b310d98f87dc23bd1b90ec7bdcec802", "bb517872058a1f087c4528e7429b4a44533a902644987e7b2fe35ecc223bc408", "c5cac0c0387272ee0e789e94a570ac51deb01c796b37fb2aad1fb13f85e2f97d", "cc971a82ea1170e677443108703a2ec9ff0f70752258d0e9f5433d00dda01f59", "dba8306f6da99e37ea08c08fef6e274b5bf8567bb094d1dbe86a20e532aca088", "dc60bb302f48acf6da8ca4444cfa17d52c63c5415302a9ee77b3b21618090521", "dee1bbf3a6c8f73b6b218cb28eed8dd13347ea2f87d572ce19b289d6fd3fbc59"]
six = ["1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd", "30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"]

9
pyproject.toml Normal file
View File

@ -0,0 +1,9 @@
[tool]
[tool.poetry]
authors = ["Your Name <you@example.com>"]
name = "root"
version = "0.0.0"
[tool.poetry.dependencies]
pandas = "*"
python = "^3.7"
scipy = "*"

23
sea_level_predictor.py Normal file
View File

@ -0,0 +1,23 @@
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import linregress
def draw_plot():
# Read data from file
# Create scatter plot
# Create first line of best fit
# Create second line of best fit
# Add labels and title
# Save plot and return data for testing (DO NOT MODIFY)
plt.savefig('sea_level_plot.png')
return plt.gca()

40
test_module.py Normal file
View File

@ -0,0 +1,40 @@
import unittest
import sea_level_predictor
import matplotlib as mpl
# the test case
class LinePlotTestCase(unittest.TestCase):
def setUp(self):
self.ax = sea_level_predictor.draw_plot()
def test_plot_title(self):
actual = self.ax.get_title()
expected = "Rise in Sea Level"
self.assertEqual(actual, expected, "Expected line plot title to be 'Rise in Sea Level'")
def test_plot_labels(self):
actual = self.ax.get_xlabel()
expected = "Year"
self.assertEqual(actual, expected, "Expected line plot xlabel to be 'Year'")
actual = self.ax.get_ylabel()
expected = "Sea Level (inches)"
self.assertEqual(actual, expected, "Expected line plot ylabel to be 'Sea Level (inches)'")
actual = self.ax.get_xticks().tolist()
expected = [1850.0, 1875.0, 1900.0, 1925.0, 1950.0, 1975.0, 2000.0, 2025.0, 2050.0, 2075.0]
self.assertEqual(actual, expected, "Expected x tick labels to be '1850.0, 1875.0, 1900.0, 1925.0, 1950.0, 1975.0, 2000.0, 2025.0, 2050.0, 2075.0'")
def test_plot_data_points(self):
actual = self.ax.get_children()[0].get_offsets().data.tolist()
expected = [[1880.0, 0.0], [1881.0, 0.22047244100000002], [1882.0, -0.440944881], [1883.0, -0.232283464], [1884.0, 0.590551181], [1885.0, 0.531496062], [1886.0, 0.43700787399999996], [1887.0, 0.216535433], [1888.0, 0.299212598], [1889.0, 0.362204724], [1890.0, 0.440944881], [1891.0, 0.374015748], [1892.0, 0.499999999], [1893.0, 0.6850393690000001], [1894.0, 0.303149606], [1895.0, 0.767716535], [1896.0, 0.46850393700000004], [1897.0, 0.6732283459999999], [1898.0, 1.043307086], [1899.0, 1.338582676], [1900.0, 1.125984251], [1901.0, 1.1102362190000001], [1902.0, 1.291338581], [1903.0, 1.6062992109999998], [1904.0, 1.2007874], [1905.0, 0.9842519679999999], [1906.0, 1.251968503], [1907.0, 1.196850392], [1908.0, 1.098425196], [1909.0, 1.27559055], [1910.0, 1.2716535420000001], [1911.0, 1.598425195], [1912.0, 1.476377951], [1913.0, 1.5472440930000002], [1914.0, 1.795275589], [1915.0, 2.10629921], [1916.0, 2.031496061], [1917.0, 1.854330707], [1918.0, 1.791338581], [1919.0, 1.854330707], [1920.0, 1.905511809], [1921.0, 1.988188974], [1922.0, 1.952755904], [1923.0, 1.999999998], [1924.0, 1.7125984230000002], [1925.0, 1.791338581], [1926.0, 2.0472440919999997], [1927.0, 2.003937006], [1928.0, 1.850393699], [1929.0, 1.905511809], [1930.0, 2.062992124], [1931.0, 2.0472440919999997], [1932.0, 2.271653541], [1933.0, 2.440944879], [1934.0, 2.228346454], [1935.0, 2.448818895], [1936.0, 2.295275588], [1937.0, 2.519685037], [1938.0, 2.6220472409999998], [1939.0, 2.826771651], [1940.0, 2.618110234], [1941.0, 3.098425194], [1942.0, 3.098425194], [1943.0, 3.098425194], [1944.0, 2.84645669], [1945.0, 2.95669291], [1946.0, 3.2519685010000003], [1947.0, 3.374015745], [1948.0, 3.562992122], [1949.0, 3.51181102], [1950.0, 3.598425193], [1951.0, 3.9724409410000003], [1952.0, 3.8700787360000004], [1953.0, 4.043307082], [1954.0, 3.929133854], [1955.0, 3.964566925], [1956.0, 3.763779524], [1957.0, 4.291338578], [1958.0, 4.346456688], [1959.0, 4.358267712], [1960.0, 4.503937003], [1961.0, 4.748031491], [1962.0, 4.543307082], [1963.0, 4.480314956], [1964.0, 4.1692913339999995], [1965.0, 4.6102362160000006], [1966.0, 4.397637791], [1967.0, 4.452755901000001], [1968.0, 4.484251963999999], [1969.0, 4.751968499], [1970.0, 4.67716535], [1971.0, 4.881889759], [1972.0, 5.240157475], [1973.0, 5.003937003], [1974.0, 5.472440939], [1975.0, 5.409448812999999], [1976.0, 5.370078735], [1977.0, 5.303149601], [1978.0, 5.555118105], [1979.0, 5.362204719], [1980.0, 5.5984251910000005], [1981.0, 6.0866141670000005], [1982.0, 5.858267711], [1983.0, 6.188976372000001], [1984.0, 6.153543301], [1985.0, 5.74803149], [1986.0, 5.771653537000001], [1987.0, 5.795275585], [1988.0, 5.980314955], [1989.0, 6.157480308999999], [1990.0, 6.2322834579999995], [1991.0, 6.334645663], [1992.0, 6.35826771], [1993.0, 6.291338576], [1994.0, 6.499999992999999], [1995.0, 6.618110229], [1996.0, 6.787401568], [1997.0, 7.066929127000001], [1998.0, 6.665354324], [1999.0, 7.011811016], [2000.0, 7.062992119], [2001.0, 7.287401567000001], [2002.0, 7.3818897560000005], [2003.0, 7.7598425120000005], [2004.0, 7.740157472000001], [2005.0, 7.74409448], [2006.0, 7.9173228270000005], [2007.0, 7.996062984], [2008.0, 8.350393692], [2009.0, 8.586614164], [2010.0, 8.901574794], [2011.0, 8.96456692], [2012.0, 9.326771643999999], [2013.0, 8.980314951]]
self.assertEqual(actual, expected, "Expected different data points in scatter plot.")
def test_plot_lines(self):
actual = self.ax.get_lines()[0].get_ydata().tolist()
expected = [-0.5421240249263661, -0.4790794409142336, -0.41603485690208686, -0.3529902728899543, -0.2899456888778218, -0.22690110486568926, -0.16385652085355673, -0.1008119368414242, -0.037767352829277456, 0.025277231182855076, 0.08832181519498761, 0.15136639920712014, 0.21441098321925267, 0.2774555672313852, 0.34050015124351773, 0.4035447352556645, 0.466589319267797, 0.5296339032799295, 0.5926784872920621, 0.6557230713041946, 0.7187676553163271, 0.7818122393284739, 0.8448568233406064, 0.9079014073527389, 0.9709459913648715, 1.033990575377004, 1.0970351593891365, 1.1600797434012833, 1.2231243274134158, 1.2861689114255483, 1.3492134954376809, 1.4122580794498134, 1.475302663461946, 1.5383472474740927, 1.6013918314862252, 1.6644364154983577, 1.7274809995104903, 1.7905255835226228, 1.8535701675347553, 1.9166147515468879, 1.9796593355590346, 2.042703919571167, 2.1057485035832997, 2.168793087595432, 2.2318376716075647, 2.2948822556196973, 2.357926839631844, 2.4209714236439766, 2.484016007656109, 2.5470605916682416, 2.610105175680374, 2.6731497596925067, 2.7361943437046534, 2.799238927716786, 2.8622835117289185, 2.925328095741051, 2.9883726797531835, 3.051417263765316, 3.1144618477774486, 3.1775064317895954, 3.240551015801728, 3.3035955998138604, 3.366640183825993, 3.4296847678381255, 3.492729351850258, 3.5557739358624048, 3.6188185198745373, 3.68186310388667, 3.7449076878988024, 3.807952271910935, 3.8709968559230674, 3.934041439935214, 3.9970860239473467, 4.060130607959479, 4.123175191971612, 4.186219775983744, 4.249264359995877, 4.312308944008024, 4.375353528020156, 4.438398112032289, 4.501442696044421, 4.564487280056554, 4.627531864068686, 4.690576448080819, 4.7536210320929655, 4.816665616105098, 4.879710200117231, 4.942754784129363, 5.005799368141496, 5.068843952153628, 5.131888536165775, 5.194933120177907, 5.25797770419004, 5.3210222882021725, 5.384066872214305, 5.4471114562264376, 5.510156040238584, 5.573200624250717, 5.636245208262849, 5.699289792274982, 5.762334376287114, 5.825378960299247, 5.8884235443113795, 5.951468128323526, 6.014512712335659, 6.077557296347791, 6.140601880359924, 6.203646464372056, 6.266691048384189, 6.329735632396336, 6.392780216408468, 6.455824800420601, 6.518869384432733, 6.581913968444866, 6.644958552456998, 6.708003136469145, 6.771047720481278, 6.83409230449341, 6.897136888505543, 6.960181472517675, 7.023226056529808, 7.086270640541954, 7.149315224554087, 7.2123598085662195, 7.275404392578352, 7.338448976590485, 7.401493560602617, 7.46453814461475, 7.527582728626896, 7.590627312639029, 7.653671896651161, 7.716716480663294, 7.7797610646754265, 7.842805648687559, 7.905850232699706, 7.968894816711838, 8.03193940072397, 8.094983984736103, 8.158028568748236, 8.221073152760368, 8.284117736772515, 8.347162320784648, 8.41020690479678, 8.473251488808913, 8.536296072821045, 8.599340656833178, 8.66238524084531, 8.725429824857457, 8.78847440886959, 8.851518992881722, 8.914563576893855, 8.977608160905987, 9.040652744918134, 9.103697328930252, 9.166741912942399, 9.229786496954517, 9.292831080966664, 9.35587566497881, 9.41892024899093, 9.481964833003076, 9.545009417015194, 9.608054001027341, 9.671098585039488, 9.734143169051606, 9.797187753063753, 9.860232337075871, 9.923276921088018, 9.986321505100136, 10.049366089112283, 10.11241067312443]
self.assertEqual(actual, expected, "Expected different line for first line of best fit.")
actual = self.ax.get_lines()[1].get_ydata().tolist()
expected = [7.06107985777146, 7.227507131103323, 7.393934404435242, 7.560361677767105, 7.726788951098968, 7.89321622443083, 8.059643497762693, 8.226070771094555, 8.392498044426418, 8.55892531775828, 8.725352591090143, 8.891779864422006, 9.058207137753925, 9.224634411085788, 9.39106168441765, 9.557488957749513, 9.723916231081375, 9.890343504413238, 10.0567707777451, 10.223198051076963, 10.389625324408826, 10.556052597740688, 10.72247987107255, 10.88890714440447, 11.055334417736333, 11.221761691068195, 11.388188964400058, 11.55461623773192, 11.721043511063783, 11.887470784395646, 12.053898057727508, 12.220325331059371, 12.386752604391233, 12.553179877723153, 12.719607151055015, 12.886034424386878, 13.05246169771874, 13.218888971050603, 13.385316244382466, 13.551743517714328, 13.718170791046191, 13.884598064378054, 14.051025337709916, 14.217452611041836, 14.383879884373698, 14.55030715770556, 14.716734431037423, 14.883161704369286, 15.049588977701148, 15.216016251033011]
self.assertEqual(actual, expected, "Expected different line for second line of best fit.")
if __name__ == "__main__":
unittest.main()