In [1]:
# import data
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import linear_model
from sklearn.model_selection import train_test_split
In [2]:
# read data
data = pd.read_csv("CA.csv")
print(data)
Unnamed: 0 Year HYTCP WYTCP SOEGP NUETP \
0 0 1960.0 17445.000000 0.000000 0.000000 0.000000
1 1 1961.0 15368.000000 5.000000 0.000000 0.000000
2 2 1962.0 22835.000000 7.000000 0.000000 0.000000
3 3 1963.0 25334.000000 193.000000 0.000000 0.000000
4 4 1964.0 22098.000000 367.000000 0.000000 0.000000
5 5 1965.0 30523.000000 270.000000 0.000000 0.000000
6 6 1966.0 26236.000000 163.000000 0.000000 0.000000
7 7 1967.0 35277.000000 563.000000 0.000000 0.000000
8 8 1968.0 27175.000000 1505.000000 0.000000 0.000000
9 9 1969.0 40418.000000 2458.000000 0.000000 0.000000
10 10 1970.0 38082.000000 3132.000000 0.000000 0.000000
11 11 1971.0 39018.000000 3519.000000 0.000000 0.000000
12 12 1972.0 31755.000000 3175.000000 0.000000 0.000000
13 13 1973.0 38754.000000 2631.000000 0.000000 0.000000
14 14 1974.0 46422.000000 3698.000000 0.000000 0.000000
15 15 1975.0 40103.000000 6071.000000 0.000000 0.000000
16 16 1976.0 23193.000000 4807.000000 0.000000 0.000000
17 17 1977.0 14251.000000 8115.000000 0.000000 0.000000
18 18 1978.0 37206.000000 7659.000000 0.000000 0.000000
19 19 1979.0 33920.000000 8762.000000 0.000000 0.000000
20 20 1980.0 40780.000000 4920.000000 0.000000 0.000000
21 21 1981.0 29764.000000 3206.000000 0.000000 0.000000
22 22 1982.0 50226.000000 3735.000000 0.000000 0.000000
23 23 1983.0 56885.000000 5613.000000 0.000000 1.000000
24 24 1984.0 43159.000000 14144.000000 5.000000 4.000000
25 25 1985.0 31717.000000 19729.000000 11.000000 3.000000
26 26 1986.0 41459.000000 26215.000000 14.000000 3.000000
27 27 1987.0 24564.000000 30387.000000 10.000000 4.000000
28 28 1988.0 23474.000000 30863.000000 9.000000 1.000000
29 29 1989.0 30801.000000 32519.000000 250.000000 2079.000000
.. ... ... ... ... ... ...
31 31 1991.0 21957.000000 31542.000000 471.000000 2915.000000
32 32 1992.0 20167.000000 35244.000000 399.000000 2864.000000
33 33 1993.0 40493.000000 31581.000000 462.000000 2984.000000
34 34 1994.0 23013.000000 33752.000000 486.000000 3387.000000
35 35 1995.0 48033.000000 30246.000000 497.000000 3087.000000
36 36 1996.0 44751.000000 34097.000000 521.000000 3079.000000
37 37 1997.0 41055.000000 30512.000000 511.000000 3137.000000
38 38 1998.0 49548.000000 34594.000000 502.000000 2758.000000
39 39 1999.0 40737.000000 33372.000000 495.000000 3230.000000
40 40 2000.0 38334.000000 35176.000000 493.000000 3518.000000
41 41 2001.0 25542.000000 33220.000000 542.000000 3500.000000
42 42 2002.0 31141.000000 34352.000000 554.000000 3803.000000
43 43 2003.0 36371.000000 35594.000000 534.000000 3895.000000
44 44 2004.0 34141.000000 30268.000000 571.000000 4306.000000
45 45 2005.0 39632.000000 36155.000000 537.000000 4262.000000
46 46 2006.0 48047.000000 31959.000000 495.000000 4883.000000
47 47 2007.0 27328.000000 35792.000000 557.000000 5585.000000
48 48 2008.0 24128.000000 32482.000000 670.000000 5385.000000
49 49 2009.0 27888.000000 31764.000000 647.000000 5840.000000
50 50 2010.0 33431.000000 32201.000000 765.000000 6079.000000
51 51 2011.0 42557.000000 36663.000000 861.000000 7752.000000
52 52 2012.0 26837.000000 18507.000000 1328.000000 9754.000000
53 53 2013.0 23755.000000 17912.000000 3727.000000 12822.000000
54 54 2014.0 16531.000000 16986.000000 9834.000000 12992.000000
55 55 2015.0 27433.387251 41136.625744 1329.570911 6585.553266
56 56 2016.0 35877.820708 39976.353424 1404.752885 6538.859714
57 57 2017.0 37564.060147 42686.196015 1305.139609 7060.181502
58 58 2018.0 35110.462185 42140.851188 1778.132417 7699.009108
59 59 2019.0 32503.255386 41843.585874 2177.124532 8143.807623
60 60 2020.0 29832.331316 40892.412003 2635.171669 8622.665452
GDP CLPRB EMFDB ENPRP NGMPB \
0 5.143560e+04 0.000000 0.000000 0.000000 589695.145060
1 5.689940e+04 0.000000 0.000000 0.000000 633797.940590
2 6.236320e+04 0.000000 0.000000 0.000000 642889.456260
3 6.780900e+04 0.000000 0.000000 0.000000 736625.842790
4 7.351300e+04 0.000000 0.000000 0.000000 756639.938890
5 7.825300e+04 0.000000 0.000000 0.000000 752461.647380
6 8.462700e+04 0.000000 0.000000 0.000000 785759.223820
7 8.957100e+04 0.000000 0.000000 0.000000 776043.300260
8 9.872100e+04 0.000000 0.000000 0.000000 814570.862530
9 1.066290e+05 0.000000 0.000000 0.000000 772179.491550
10 1.119850e+05 0.000000 0.000000 0.000000 739623.684340
11 1.203720e+05 0.000000 0.000000 0.000000 700449.587690
12 1.331430e+05 0.000000 0.000000 0.000000 561777.951740
13 1.472310e+05 0.000000 0.000000 0.000000 507133.068650
14 1.618150e+05 0.000000 0.000000 0.000000 419143.681910
15 1.783940e+05 0.000000 0.000000 0.000000 365212.133350
16 1.973470e+05 0.000000 0.000000 0.000000 400198.670770
17 2.295920e+05 0.000000 0.000000 0.000000 353544.214460
18 2.628030e+05 0.000000 0.000000 0.000000 352083.582160
19 2.934910e+05 0.000000 0.000000 0.000000 282281.173410
20 3.279580e+05 0.000000 0.000000 0.000000 342208.328920
21 3.688080e+05 0.000000 0.000000 0.000000 414770.715990
22 3.937880e+05 0.000000 0.000000 0.000000 432487.213510
23 4.261430e+05 0.000000 0.000000 0.000000 463384.589870
24 4.821660e+05 0.000000 0.000000 0.000000 526963.163720
25 5.239060e+05 852.000000 578.033290 91.176730 546052.751980
26 5.630820e+05 0.000000 610.944910 96.713330 511410.722250
27 6.153590e+05 552.000000 667.850100 106.099830 468677.761570
28 6.715750e+05 648.000000 669.909760 106.810560 444232.977320
29 7.229790e+05 492.000000 631.336660 101.022230 404557.660430
.. ... ... ... ... ...
31 7.900460e+05 684.000000 618.236050 99.628730 414017.142190
32 8.073580e+05 1236.000000 651.364350 105.350780 402191.760080
33 8.264470e+05 0.000000 686.467180 111.416690 352455.970670
34 8.613600e+05 0.000000 753.990230 122.825320 340053.118510
35 9.115770e+05 0.000000 724.953310 118.511420 308223.983960
36 9.641860e+05 0.000000 297.700520 48.838590 320465.715730
37 1.037091e+06 0.000000 526.367570 86.658560 313734.335920
38 1.151119e+06 0.000000 620.437570 102.509640 349864.265080
39 1.248006e+06 0.000000 575.600310 95.240350 410698.817710
40 1.362995e+06 0.000000 691.267920 114.527590 390975.455400
41 1.376163e+06 0.000000 758.043380 125.754130 408479.078050
42 1.431267e+06 0.000000 1032.953090 171.582900 394507.109550
43 1.523473e+06 0.000000 1213.083940 202.393840 373313.527210
44 1.645084e+06 0.000000 1102.974250 184.838880 356231.719530
45 1.766693e+06 0.000000 2155.600700 362.789470 353819.535400
46 1.879520e+06 0.000000 5534.308260 935.595310 351100.499310
47 1.956523e+06 0.000000 12532.827110 2128.240820 339526.550440
48 1.983926e+06 0.000000 13309.875940 2270.016060 331492.568970
49 1.912115e+06 0.000000 6861.251470 1177.514910 309834.883070
50 1.965886e+06 76.270489 6625.601172 1137.323720 270557.609868
51 2.036297e+06 114.654193 6462.703992 1109.617441 244453.061373
52 2.131199e+06 134.308225 6359.118192 1091.691303 225563.599155
53 2.223958e+06 145.090308 6304.281471 1081.915282 210625.372980
54 2.350807e+06 151.436417 6288.444013 1078.659354 197851.727459
55 1.972377e+06 155.318094 6304.293457 1081.108508 186263.343209
56 2.031505e+06 158.214000 6346.142410 1088.447732 175324.552241
57 2.073136e+06 160.617019 6409.115963 1099.047002 164741.230111
58 2.115467e+06 162.527153 6489.151694 1112.906320 154352.895510
59 2.157770e+06 164.437286 6582.999665 1128.395660 144070.818157
60 2.200074e+06 166.347419 6687.409935 1146.330036 133847.346607
PAPRB PCP ZNDX Nominal Price \
0 1.771042e+06 21.770000 -4.360000 2.910000
1 1.737732e+06 16.530000 -6.810000 2.850000
2 1.720222e+06 22.100000 -0.680000 2.850000
3 1.745266e+06 24.740000 9.900000 2.910000
4 1.740052e+06 22.270000 2.690000 3.000000
5 1.835282e+06 21.980000 4.630000 3.010000
6 2.002711e+06 18.720000 -9.290000 3.100000
7 2.083470e+06 23.750000 7.100000 3.120000
8 2.177877e+06 20.370000 -4.320000 3.180000
9 2.176688e+06 30.600000 9.410000 3.320000
10 2.158708e+06 27.810000 4.120000 3.390000
11 2.079207e+06 18.240000 2.830000 3.600000
12 2.012728e+06 17.210000 -6.130000 3.600000
13 1.949235e+06 28.930000 4.810000 4.750000
14 1.873417e+06 21.350000 -1.410000 9.350000
15 1.868754e+06 20.940000 0.790000 12.210000
16 1.890922e+06 11.750000 -18.290000 13.100000
17 2.027732e+06 17.530000 -17.110000 14.400000
18 2.013650e+06 28.860000 9.300000 14.950000
19 2.043154e+06 24.630000 2.510000 25.100000
20 2.070153e+06 24.120000 2.600000 37.420000
21 2.232756e+06 26.240000 0.960000 35.750000
22 2.329118e+06 31.990000 20.000000 31.830000
23 2.347190e+06 42.460000 30.010000 29.080000
24 2.389716e+06 18.320000 -3.280000 28.750000
25 2.458487e+06 14.700000 -11.920000 26.920000
26 2.358657e+06 24.250000 -0.720000 14.440000
27 2.295060e+06 19.710000 -11.870000 17.750000
28 2.238875e+06 17.100000 -5.790000 14.870000
29 2.112650e+06 14.950000 -9.010000 18.330000
.. ... ... ... ...
31 2.035893e+06 19.790000 -5.360000 20.200000
32 2.018632e+06 23.230000 -7.910000 19.250000
33 1.993628e+06 26.700000 7.270000 16.750000
34 1.992700e+06 17.540000 -8.860000 15.660000
35 2.033979e+06 35.200000 20.590000 16.750000
36 2.011602e+06 32.510000 12.480000 20.460000
37 1.967981e+06 20.600000 -6.670000 18.640000
38 1.913188e+06 36.410000 29.060000 11.910000
39 1.813770e+06 17.630000 -5.380000 16.560000
40 1.775519e+06 21.430000 -4.560000 27.390000
41 1.692243e+06 23.020000 -7.580000 23.000000
42 1.669199e+06 18.680000 -10.150000 22.810000
43 1.624000e+06 21.630000 -0.900000 27.690000
44 1.550108e+06 21.760000 -6.820000 37.660000
45 1.489718e+06 30.100000 16.070000 50.040000
46 1.447460e+06 23.610000 -0.670000 58.300000
47 1.399992e+06 13.840000 -18.640000 64.200000
48 1.384408e+06 17.850000 -14.240000 91.480000
49 1.328165e+06 17.050000 -10.550000 53.480000
50 1.470517e+06 31.180000 13.930000 71.210000
51 1.536844e+06 18.790000 2.910000 87.040000
52 1.564214e+06 23.450000 -3.950000 86.460000
53 1.571620e+06 7.930000 -22.270000 91.170000
54 1.568798e+06 19.900000 -20.260000 85.600000
55 1.560733e+06 15.050000 -16.660000 41.850000
56 1.549981e+06 26.040000 1.290000 46.123463
57 1.537854e+06 21.873908 0.618620 50.270318
58 1.525021e+06 20.711858 -2.385896 53.639684
59 1.511826e+06 20.381871 -5.337564 56.231562
60 1.498447e+06 20.405636 -7.963284 58.823440
Inflation Adjusted Price
0 23.720000
1 22.960000
2 22.690000
3 22.900000
4 23.300000
5 23.000000
6 23.010000
7 22.530000
8 21.990000
9 21.810000
10 21.040000
11 21.420000
12 20.740000
13 25.560000
14 45.600000
15 54.610000
16 55.460000
17 57.200000
18 55.240000
19 82.510000
20 109.510000
21 94.830000
22 79.500000
23 70.340000
24 66.670000
25 60.270000
26 31.720000
27 37.620000
28 30.330000
29 35.600000
.. ...
31 35.730000
32 33.040000
33 27.940000
34 25.440000
35 26.480000
36 31.400000
37 27.980000
38 17.600000
39 23.890000
40 38.290000
41 31.300000
42 30.520000
43 36.260000
44 47.980000
45 61.650000
46 69.640000
47 74.440000
48 102.000000
49 59.930000
50 78.650000
51 93.210000
52 90.720000
53 94.250000
54 87.050000
55 42.530000
56 45.343343
57 47.865574
58 49.564252
59 51.262929
60 52.961607
[61 rows x 16 columns]
In [3]:
# let other 10 features be predictors X, solar be Y
all_x = data[['GDP','CLPRB','EMFDB','ENPRP','NGMPB','PAPRB','PCP','ZNDX','Nominal Price', 'Inflation Adjusted Price']]
all_y = data[['SOEGP']]
year = data[['Year']]
In [4]:
plt.plot(year[0:55], all_y[0:55], color = 'b')
plt.plot(year[-6:], all_y[-6:], color = 'r')
plt.legend(['Solar Real', 'Solar Pred'], bbox_to_anchor=(1.45, 1))
plt.show()
In [ ]:
Content source: uwkejia/Clean-Energy-Outlook
Similar notebooks: