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 [ ]: