This tutorial explores the pvlib.pvsystem
module. The module has functions for importing PV module and inverter data and functions for modeling module and inverter performance.
%matplotlib inline
import matplotlib.pyplot as plt
try:
import seaborn as sns
except ImportError:
pass
# built in python modules
import datetime
import logging
import os
import inspect
try:
from importlib import reload
except:
pass
# python add-ons
import numpy as np
import pandas as pd
import pvlib
from pvlib import pvsystem
pvlib
can import TMY2 and TMY3 data. Here, we import the example files.
pvlib_abspath = os.path.dirname(os.path.abspath(inspect.getfile(pvlib)))
tmy3_data, tmy3_metadata = pvlib.tmy.readtmy3(os.path.join(pvlib_abspath, 'data', '703165TY.csv'))
tmy2_data, tmy2_metadata = pvlib.tmy.readtmy2(os.path.join(pvlib_abspath, 'data', '12839.tm2'))
pvlib.pvsystem.systemdef(tmy3_metadata, 0, 0, .1, 5, 5)
{'albedo': 0.1, 'altitude': 7.0, 'latitude': 55.317, 'longitude': -160.517, 'name': '"SAND POINT"', 'parallel_modules': 5, 'series_modules': 5, 'surface_azimuth': 0, 'surface_tilt': 0, 'tz': -9.0}
pvlib.pvsystem.systemdef(tmy2_metadata, 0, 0, .1, 5, 5)
{'albedo': 0.1, 'altitude': 2.0, 'latitude': 25.8, 'longitude': -80.26666666666667, 'name': 'MIAMI', 'parallel_modules': 5, 'series_modules': 5, 'surface_azimuth': 0, 'surface_tilt': 0, 'tz': -5}
angles = np.linspace(-180,180,3601)
ashraeiam = pd.Series(pvsystem.ashraeiam(.05, angles), index=angles)
ashraeiam.plot()
plt.ylabel('ASHRAE modifier')
plt.xlabel('input angle (deg)')
<matplotlib.text.Text at 0x7f77f2200390>
angles = np.linspace(-180,180,3601)
physicaliam = pd.Series(pvsystem.physicaliam(4, 0.002, 1.526, angles), index=angles)
physicaliam.plot()
plt.ylabel('physical modifier')
plt.xlabel('input index')
<matplotlib.text.Text at 0x7f77bb521390>
plt.figure()
ashraeiam.plot(label='ASHRAE')
physicaliam.plot(label='physical')
plt.ylabel('modifier')
plt.xlabel('input angle (deg)')
plt.legend()
<matplotlib.legend.Legend at 0x7f77bb2d1590>
PV system efficiency can vary by up to 0.5% per degree C, so it's important to accurately model cell and module temperature. The sapm_celltemp
function uses plane of array irradiance, ambient temperature, wind speed, and module and racking type to calculate cell and module temperatures. From King et. al. (2004):
The $a$, $b$, and $\Delta T$ parameters depend on the module and racking type. The default parameter set is open_rack_cell_glassback
.
sapm_celltemp
works with either scalar or vector inputs, but always returns a pandas DataFrame.
# scalar inputs
pvsystem.sapm_celltemp(900, 5, 20) # irrad, wind, temp
temp_cell | temp_module | |
---|---|---|
0 | 43.509191 | 40.809191 |
# vector inputs
times = pd.DatetimeIndex(start='2015-01-01', end='2015-01-02', freq='12H')
temps = pd.Series([0, 10, 5], index=times)
irrads = pd.Series([0, 500, 0], index=times)
winds = pd.Series([10, 5, 0], index=times)
pvtemps = pvsystem.sapm_celltemp(irrads, winds, temps)
pvtemps.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f77bb415250>
Cell and module temperature as a function of wind speed.
wind = np.linspace(0,20,21)
temps = pd.DataFrame(pvsystem.sapm_celltemp(900, wind, 20), index=wind)
temps.plot()
plt.legend()
plt.xlabel('wind speed (m/s)')
plt.ylabel('temperature (deg C)')
<matplotlib.text.Text at 0x7f77bb198550>
Cell and module temperature as a function of ambient temperature.
atemp = np.linspace(-20,50,71)
temps = pvsystem.sapm_celltemp(900, 2, atemp).set_index(atemp)
temps.plot()
plt.legend()
plt.xlabel('ambient temperature (deg C)')
plt.ylabel('temperature (deg C)')
<matplotlib.text.Text at 0x7f77bb1502d0>
Cell and module temperature as a function of incident irradiance.
irrad = np.linspace(0,1000,101)
temps = pvsystem.sapm_celltemp(irrad, 2, 20).set_index(irrad)
temps.plot()
plt.legend()
plt.xlabel('incident irradiance (W/m**2)')
plt.ylabel('temperature (deg C)')
<matplotlib.text.Text at 0x7f77bb0bd810>
Cell and module temperature for different module and racking types.
models = ['open_rack_cell_glassback',
'roof_mount_cell_glassback',
'open_rack_cell_polymerback',
'insulated_back_polymerback',
'open_rack_polymer_thinfilm_steel',
'22x_concentrator_tracker']
temps = pd.DataFrame(index=['temp_cell','temp_module'])
for model in models:
temps[model] = pd.Series(pvsystem.sapm_celltemp(1000, 5, 20, model=model).ix[0])
temps.T.plot(kind='bar') # try removing the transpose operation and replotting
plt.legend()
plt.ylabel('temperature (deg C)')
<matplotlib.text.Text at 0x7f77baf1f050>
inverters = pvsystem.retrieve_sam('sandiainverter')
inverters
ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_ | ABB__MICRO_0_25_I_OUTD_US_240_240V__CEC_2014_ | ABB__MICRO_0_3HV_I_OUTD_US_208_208V__CEC_2014_ | ABB__MICRO_0_3HV_I_OUTD_US_240_240V__CEC_2014_ | ABB__MICRO_0_3_I_OUTD_US_208_208V__CEC_2014_ | ABB__MICRO_0_3_I_OUTD_US_240_240V__CEC_2014_ | Ablerex_Electronics_Co___Ltd___ES_2200_US_240__240_Vac__240V__CEC_2011_ | Ablerex_Electronics_Co___Ltd___ES_3300_US_240__240_Vac__240V__CEC_2011_ | Ablerex_Electronics_Co___Ltd___ES_4200_US_240__240_Vac__240V__CEC_2011_ | Ablerex_Electronics_Co___Ltd___ES_5000_US_240__240_Vac__240V__CEC_2011_ | ... | Yes!_Solar_Inc___ES5000__240V__240V__CEC_2009_ | Yes!_Solar_Inc___ES5300__208V__208V__CEC_2009_ | Yes!_Solar_Inc___ES5300__240V__240V__CEC_2009_ | Zhejiang_Yuhui_Solar_Energy_Source__Replus_250A_240V__CEC_2012_ | Zhejiang_Yuhui_Solar_Energy_Source__Replus_250B_208V__CEC_2012_ | Zigor__Sunzet_2_TL_US_240V__CEC_2011_ | Zigor__Sunzet_3_TL_US_240V__CEC_2011_ | Zigor__Sunzet_4_TL_US_240V__CEC_2011_ | Zigor__Sunzet_5_TL_US_240V__CEC_2011_ | Zigor__SUNZET4_USA_240V__CEC_2011_ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Vac | 208.000000 | 240.000000 | 208.000000 | 240.000000 | 208.000000 | 240.000000 | 240.000000 | 240.000000 | 240.000000 | 240.000000 | ... | 240.000000 | 208.000000 | 240.000000 | 2.400000e+02 | 208.000000 | 240.000000 | 240.000000 | 240.000000 | 240.000000 | 240.000000 |
Paco | 250.000000 | 250.000000 | 300.000000 | 300.000000 | 300.000000 | 300.000000 | 2110.000000 | 3180.000000 | 4160.000000 | 5240.000000 | ... | 4900.000000 | 4600.000000 | 5300.000000 | 2.251900e+02 | 213.830000 | 2110.000000 | 3180.000000 | 4160.000000 | 5240.000000 | 4030.000000 |
Pdco | 259.522000 | 259.553000 | 312.523000 | 312.022000 | 311.715000 | 311.505000 | 2191.830000 | 3313.680000 | 4342.410000 | 5495.830000 | ... | 5135.580000 | 4829.420000 | 5571.180000 | 2.348420e+02 | 225.563000 | 2191.830000 | 3313.680000 | 4342.410000 | 5495.830000 | 4267.480000 |
Vdco | 40.242600 | 39.982200 | 45.259400 | 45.495000 | 40.227100 | 40.136100 | 399.207000 | 389.513000 | 388.562000 | 386.083000 | ... | 275.000000 | 275.000000 | 274.900000 | 2.846840e+01 | 28.632600 | 399.207000 | 389.513000 | 388.562000 | 386.083000 | 302.852000 |
Pso | 1.771610 | 1.931190 | 1.882620 | 1.928590 | 1.971050 | 1.991340 | 30.843700 | 31.265000 | 31.601700 | 32.450800 | ... | 29.358900 | 26.071500 | 28.519000 | 1.646710e+00 | 1.845030 | 30.843700 | 31.265000 | 31.601700 | 32.450800 | 37.372800 |
C0 | -0.000025 | -0.000027 | -0.000049 | -0.000035 | -0.000036 | -0.000031 | -0.000004 | -0.000006 | -0.000004 | -0.000005 | ... | -0.000006 | -0.000006 | -0.000006 | -3.859730e-07 | -0.000121 | -0.000004 | -0.000006 | -0.000004 | -0.000005 | -0.000009 |
C1 | -0.000090 | -0.000158 | -0.000241 | -0.000228 | -0.000256 | -0.000289 | -0.000077 | -0.000095 | -0.000079 | -0.000097 | ... | 0.000020 | 0.000024 | 0.000019 | -3.578480e-04 | -0.000533 | -0.000077 | -0.000095 | -0.000079 | -0.000097 | -0.000029 |
C2 | 0.000669 | 0.001476 | 0.000975 | -0.000224 | -0.000833 | -0.002113 | 0.000502 | 0.000261 | 0.000213 | -0.000251 | ... | 0.001868 | 0.002618 | 0.001630 | -1.345040e-02 | 0.025867 | 0.000502 | 0.000261 | 0.000213 | -0.000251 | 0.002147 |
C3 | -0.018881 | -0.034601 | -0.027563 | -0.039636 | -0.039102 | -0.049515 | -0.003258 | -0.001956 | -0.001867 | -0.002337 | ... | -0.000276 | 0.000468 | -0.000371 | -3.350680e+01 | -0.066826 | -0.003258 | -0.001956 | -0.001867 | -0.002337 | -0.001897 |
Pnt | 0.020000 | 0.050000 | 0.060000 | 0.060000 | 0.020000 | 0.050000 | 0.250000 | 0.250000 | 0.200000 | 0.200000 | ... | 0.500000 | 0.500000 | 0.500000 | 1.700000e-01 | 0.170000 | 0.250000 | 0.250000 | 0.200000 | 0.200000 | 0.190000 |
Vdcmax | 65.000000 | 65.000000 | 79.000000 | 79.000000 | 65.000000 | 65.000000 | 500.000000 | 500.000000 | 500.000000 | 500.000000 | ... | 600.000000 | 600.000000 | 600.000000 | 5.500000e+01 | 55.000000 | 500.000000 | 500.000000 | 500.000000 | 500.000000 | 600.000000 |
Idcmax | 10.000000 | 10.000000 | 10.500000 | 10.500000 | 10.000000 | 10.000000 | 14.600000 | 22.000000 | 28.000000 | 35.300000 | ... | 25.000000 | 25.000000 | 25.000000 | 1.400000e+01 | 14.000000 | 14.600000 | 22.000000 | 28.000000 | 35.300000 | 20.000000 |
Mppt_low | 20.000000 | 20.000000 | 30.000000 | 30.000000 | 30.000000 | 30.000000 | 150.000000 | 150.000000 | 150.000000 | 150.000000 | ... | 200.000000 | 200.000000 | 200.000000 | 2.200000e+01 | 22.000000 | 150.000000 | 150.000000 | 150.000000 | 150.000000 | 240.000000 |
Mppt_high | 50.000000 | 50.000000 | 75.000000 | 75.000000 | 50.000000 | 50.000000 | 450.000000 | 450.000000 | 450.000000 | 450.000000 | ... | 550.000000 | 550.000000 | 550.000000 | 4.500000e+01 | 45.000000 | 450.000000 | 450.000000 | 450.000000 | 450.000000 | 480.000000 |
14 rows × 1398 columns
vdcs = pd.Series(np.linspace(0,50,51))
idcs = pd.Series(np.linspace(0,11,110))
pdcs = idcs * vdcs
pacs = pvsystem.snlinverter(inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'], vdcs, pdcs)
#pacs.plot()
plt.plot(pacs, pdcs)
plt.ylabel('ac power')
plt.xlabel('dc power')
<matplotlib.text.Text at 0x7f77baedab90>
Need to put more effort into describing this function.
The CEC module database.
cec_modules = pvsystem.retrieve_sam('cecmod')
cec_modules
BEoptCA_Default_Module | Example_Module | 1Soltech_1STH_215_P | 1Soltech_1STH_220_P | 1Soltech_1STH_225_P | 1Soltech_1STH_230_P | 1Soltech_1STH_235_WH | 1Soltech_1STH_240_WH | 1Soltech_1STH_245_WH | 1Soltech_1STH_FRL_4H_245_M60_BLK | ... | Znshine_PV_Tech_ZXM6_72_315_M | Znshine_PV_Tech_ZXP6_72_315_P | Znshine_PV_Tech_ZXM6_72_320_M | Znshine_PV_Tech_ZXM6_72_325_M | Znshine_PV_Tech_ZXM6_72_330_M | Zytech_Engineering_Technology_ZT170S | Zytech_Engineering_Technology_ZT175S | Zytech_Engineering_Technology_ZT180S | Zytech_Engineering_Technology_ZT185S | Zytech_Engineering_Technology_ZT190S | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
T_noct | 65 | 65 | 47.4 | 47.4 | 47.4 | 47.4 | 49.9 | 49.9 | 49.9 | 48.3 | ... | 47 | 47 | 47 | 47 | 47 | 46 | 46 | 46.8 | 46.8 | 46.8 |
A_c | 0.67 | 0.67 | 1.567 | 1.567 | 1.567 | 1.567 | 1.635 | 1.635 | 1.635 | 1.668 | ... | 1.941 | 1.941 | 1.941 | 1.941 | 1.941 | 1.277 | 1.277 | 1.277 | 1.277 | 1.277 |
N_s | 18 | 18 | 60 | 60 | 60 | 60 | 60 | 60 | 60 | 60 | ... | 72 | 72 | 72 | 72 | 72 | 72 | 72 | 72 | 72 | 72 |
I_sc_ref | 7.5 | 7.5 | 7.84 | 7.97 | 8.09 | 8.18 | 8.54 | 8.58 | 8.62 | 8.81 | ... | 8.91 | 8.95 | 8.99 | 9.09 | 9.19 | 4.98 | 5.36 | 5.21 | 5.3 | 5.5 |
V_oc_ref | 10.4 | 10.4 | 36.3 | 36.6 | 36.9 | 37.1 | 37 | 37.1 | 37.2 | 38.3 | ... | 46.45 | 45.22 | 46.54 | 46.63 | 46.72 | 44.21 | 44.57 | 44.71 | 45 | 44.86 |
I_mp_ref | 6.6 | 6.6 | 7.35 | 7.47 | 7.58 | 7.65 | 8.02 | 8.07 | 8.1 | 8.06 | ... | 8.32 | 8.45 | 8.43 | 8.54 | 8.65 | 4.63 | 4.7 | 4.79 | 4.87 | 5.04 |
V_mp_ref | 8.4 | 8.4 | 29 | 29.3 | 29.6 | 29.9 | 29.3 | 29.7 | 30.2 | 30.2 | ... | 37.86 | 37.28 | 37.96 | 38.06 | 38.15 | 36.72 | 37.22 | 37.58 | 38.09 | 37.73 |
Alpha_sc | 0.003 | 0.003 | 0.007997 | 0.008129 | 0.008252 | 0.008344 | 0.00743 | 0.007465 | 0.007499 | 0.006167 | ... | 0.00499 | 0.00546 | 0.005034 | 0.00509 | 0.005146 | 0.003735 | 0.00402 | 0.005314 | 0.005406 | 0.00561 |
Beta_oc | -0.04 | -0.04 | -0.13104 | -0.13213 | -0.13321 | -0.13393 | -0.13653 | -0.1369 | -0.13727 | -0.13635 | ... | -0.14864 | -0.16686 | -0.14893 | -0.14922 | -0.1495 | -0.16579 | -0.16714 | -0.16274 | -0.1638 | -0.16329 |
A_ref | 0.473 | 0.473 | 1.6413 | 1.6572 | 1.6732 | 1.6888 | 1.6292 | 1.6425 | 1.6617 | 1.6351 | ... | 1.9594 | 1.9767 | 1.9592 | 1.9616 | 1.9638 | 2.0618 | 2.1732 | 2.0685 | 2.0917 | 2.0806 |
I_l_ref | 7.545 | 7.545 | 7.843 | 7.974 | 8.094 | 8.185 | 8.543 | 8.582 | 8.623 | 8.844 | ... | 8.921 | 8.952 | 8.998 | 9.096 | 9.195 | 4.984 | 5.372 | 5.215 | 5.303 | 5.505 |
I_o_ref | 1.943e-09 | 1.943e-09 | 1.936e-09 | 2.03e-09 | 2.126e-09 | 2.332e-09 | 1.166e-09 | 1.325e-09 | 1.623e-09 | 5.7e-10 | ... | 4.43e-10 | 1.04e-09 | 4.28e-10 | 4.27e-10 | 4.24e-10 | 2.378e-09 | 6.055e-09 | 2.062e-09 | 2.317e-09 | 2.286e-09 |
R_s | 0.094 | 0.094 | 0.359 | 0.346 | 0.334 | 0.311 | 0.383 | 0.335 | 0.272 | 0.421 | ... | 0.338 | 0.253 | 0.332 | 0.326 | 0.321 | 0.322 | 0.204 | 0.213 | 0.145 | 0.195 |
R_sh_ref | 15.72 | 15.72 | 839.4 | 751.03 | 670.65 | 462.56 | 1257.84 | 1463.82 | 724.06 | 109.31 | ... | 285.83 | 1425.11 | 396.81 | 478.07 | 602.26 | 437.19 | 92.28 | 237.77 | 228.17 | 203.6 |
Adjust | 10.6 | 10.6 | 16.5 | 16.8 | 17.1 | 17.9 | 8.7 | 9.8 | 11.6 | 6.502 | ... | 16.21 | 7.696 | 15.79 | 15.64 | 15.48 | 18.7 | 27.7 | 20.2 | 21.2 | 20.7 |
Gamma_r | -0.5 | -0.5 | -0.495 | -0.495 | -0.495 | -0.495 | -0.482 | -0.482 | -0.482 | -0.453 | ... | -0.453 | -0.476 | -0.453 | -0.453 | -0.453 | -0.517 | -0.517 | -0.47 | -0.47 | -0.47 |
Source | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Mono-c-Si | Mono-c-Si | Mono-c-Si | Mono-c-Si | ... | Mono-c-Si | Multi-c-Si | Mono-c-Si | Mono-c-Si | Mono-c-Si | Mono-c-Si | Mono-c-Si | Mono-c-Si | Mono-c-Si | Mono-c-Si |
17 rows × 11589 columns
cecmodule = cec_modules.Example_Module
cecmodule
T_noct 65 A_c 0.67 N_s 18 I_sc_ref 7.5 V_oc_ref 10.4 I_mp_ref 6.6 V_mp_ref 8.4 Alpha_sc 0.003 Beta_oc -0.04 A_ref 0.473 I_l_ref 7.545 I_o_ref 1.943e-09 R_s 0.094 R_sh_ref 15.72 Adjust 10.6 Gamma_r -0.5 Source Multi-c-Si Name: Example_Module, dtype: object
The Sandia module database.
sandia_modules = pvsystem.retrieve_sam(name='SandiaMod')
sandia_modules
Advent_Solar_AS160___2006_ | Advent_Solar_Ventura_210___2008_ | Advent_Solar_Ventura_215___2009_ | Aleo_S03_160__2007__E__ | Aleo_S03_165__2007__E__ | Aleo_S16_165__2007__E__ | Aleo_S16_170__2007__E__ | Aleo_S16_175__2007__E__ | Aleo_S16_180__2007__E__ | Aleo_S16_185__2007__E__ | ... | Uni_Solar_US_64__1997__E__ | Uni_Solar_US_64__2005__E__ | Uni_Solar_USF_11__2003__E__ | Uni_Solar_USF_32__2003__E__ | Uni_Solar_USF_5__2003__E__ | Yingli_Solar_YL220_Module___2008_ | Yingli_Solar_YL220_Module__2008__E__ | Yingli_Solar_YL230_29b_Module___2009_ | Yingli_Solar_YL230_29b_Module__2009__E__ | Yingli_YL210__2008__E__ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Vintage | 2006 | 2008 | 2009 | 2007 (E) | 2007 (E) | 2007 (E) | 2007 (E) | 2007 (E) | 2007 (E) | 2007 (E) | ... | 1997 (E) | 2005 (E) | 2003 (E) | 2003 (E) | 2003 (E) | 2008 | 2008 (E) | 2009 | 2009 (E) | 2008 (E) |
Area | 1.312 | 1.646 | 1.646 | 1.28 | 1.28 | 1.378 | 1.378 | 1.378 | 1.378 | 1.378 | ... | 1.012 | 1.012 | 0.235 | 0.606 | 0.136 | 1.7 | 1.7 | 1.634 | 1.634 | 1.7 |
Material | mc-Si | mc-Si | mc-Si | c-Si | c-Si | mc-Si | mc-Si | mc-Si | mc-Si | mc-Si | ... | 3-a-Si | 3-a-Si | 3-a-Si | 3-a-Si | 3-a-Si | mc-Si | mc-Si | mc-Si | mc-Si | mc-Si |
#Series | 72 | 60 | 60 | 72 | 72 | 50 | 50 | 50 | 50 | 50 | ... | 11 | 11 | 11 | 11 | 11 | 60 | 60 | 60 | 60 | 60 |
#Parallel | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ... | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Isco | 5.564 | 8.34 | 8.49 | 5.1 | 5.2 | 7.9 | 7.95 | 8.1 | 8.15 | 8.2 | ... | 5.1 | 4.8 | 0.78 | 2.4 | 0.37 | 8.163 | 8.1 | 8.222 | 8.4 | 7.8 |
Voco | 42.832 | 35.31 | 35.92 | 43.5 | 43.6 | 30 | 30.1 | 30.2 | 30.3 | 30.5 | ... | 21.3 | 23.8 | 23.8 | 23.8 | 23.8 | 36.871 | 36.6 | 37.28 | 37 | 36 |
Impo | 5.028 | 7.49 | 7.74 | 4.55 | 4.65 | 7.08 | 7.23 | 7.38 | 7.53 | 7.67 | ... | 4.1 | 3.88 | 0.62 | 1.94 | 0.3 | 7.388 | 7.4 | 7.727 | 7.8 | 7.2 |
Vmpo | 32.41 | 27.61 | 27.92 | 35.6 | 35.8 | 23.3 | 23.5 | 23.7 | 23.9 | 24.1 | ... | 15.6 | 16.5 | 16.5 | 16.5 | 16.5 | 28.633 | 30 | 29.886 | 29.5 | 29.5 |
Aisc | 0.000537 | 0.00077 | 0.00082 | 0.0003 | 0.0003 | 0.0008 | 0.0008 | 0.0008 | 0.0008 | 0.0008 | ... | 0.001 | 0.001 | 0.001 | 0.001 | 0.001 | 0.000436 | 0.000436 | 0.000746 | 0.000746 | 0.001 |
Aimp | -0.000491 | -0.00015 | -0.00013 | -0.00025 | -0.00025 | -0.0003 | -0.0003 | -0.0003 | -0.0003 | -0.0003 | ... | 0.001 | 0.001 | 0.001 | 0.001 | 0.001 | -0.000176 | -0.000176 | 0.000176 | 0.000176 | -0.0002 |
C0 | 1.0233 | 0.937 | 1.015 | 0.99 | 0.99 | 0.99 | 0.99 | 0.99 | 0.99 | 0.99 | ... | 1.121 | 1.121 | 1.096 | 1.096 | 1.096 | 0.9877 | 0.9877 | 0.9993 | 0.9993 | 0.977 |
C1 | -0.0233 | 0.063 | -0.015 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | ... | -0.121 | -0.121 | -0.096 | -0.096 | -0.096 | 0.0123 | 0.0123 | 0.0007 | 0.0007 | 0.023 |
Bvoco | -0.1703 | -0.133 | -0.135 | -0.152 | -0.152 | -0.11 | -0.11 | -0.11 | -0.11 | -0.11 | ... | -0.088 | -0.088 | -0.088 | -0.088 | -0.088 | -0.1378 | -0.1378 | -0.1294 | -0.1294 | -0.133 |
Mbvoc | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bvmpo | -0.1731 | -0.135 | -0.136 | -0.158 | -0.158 | -0.115 | -0.115 | -0.115 | -0.115 | -0.115 | ... | -0.051 | -0.051 | -0.051 | -0.051 | -0.051 | -0.1421 | -0.1421 | -0.137 | -0.137 | -0.133 |
Mbvmp | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
N | 1.174 | 1.495 | 1.373 | 1.25 | 1.25 | 1.35 | 1.35 | 1.35 | 1.35 | 1.35 | ... | 3.51 | 3.51 | 3.77 | 3.77 | 3.77 | 1.442 | 1.442 | 1.263 | 1.263 | 1.384 |
C2 | -0.76444 | 0.0182 | 0.0036 | -0.15 | -0.15 | -0.12 | -0.12 | -0.12 | -0.12 | -0.12 | ... | -1.24058 | -1.24058 | -1.14162 | -1.14162 | -1.14162 | -0.050321 | -0.050321 | -0.058706 | -0.058706 | -0.3872 |
C3 | -15.5087 | -10.758 | -7.2509 | -8.96 | -8.96 | -11.08 | -11.08 | -11.08 | -11.08 | -11.08 | ... | -3.91126 | -3.91126 | -2.89115 | -2.89115 | -2.89115 | -8.81507 | -8.81507 | -8.35334 | -8.35334 | -9.5542 |
A0 | 0.9281 | 0.9067 | 0.9323 | 0.938 | 0.938 | 0.924 | 0.924 | 0.924 | 0.924 | 0.924 | ... | 1.047 | 1.047 | 1.047 | 1.047 | 1.047 | 0.9407 | 0.9219 | 0.9011 | 0.9219 | 0.9219 |
A1 | 0.06615 | 0.09573 | 0.06526 | 0.05422 | 0.05422 | 0.06749 | 0.06749 | 0.06749 | 0.06749 | 0.06749 | ... | 0.00082115 | 0.00082115 | 0.00082115 | 0.00082115 | 0.00082115 | 0.05086 | 0.0709 | 0.1021 | 0.0709 | 0.07089 |
A2 | -0.01384 | -0.0266 | -0.01567 | -0.009903 | -0.009903 | -0.012549 | -0.012549 | -0.012549 | -0.012549 | -0.012549 | ... | -0.0259 | -0.0259 | -0.0259 | -0.0259 | -0.0259 | -0.008095 | -0.0143 | -0.02942 | -0.0143 | -0.01427 |
A3 | 0.001298 | 0.00343 | 0.00193 | 0.0007297 | 0.0007297 | 0.0010049 | 0.0010049 | 0.0010049 | 0.0010049 | 0.0010049 | ... | 0.0031736 | 0.0031736 | 0.0031736 | 0.0031736 | 0.0031736 | 0.0003498 | 0.0012 | 0.00397 | 0.0012 | 0.00117 |
A4 | -4.6e-05 | -0.0001794 | -9.81e-05 | -1.907e-05 | -1.907e-05 | -2.8797e-05 | -2.8797e-05 | -2.8797e-05 | -2.8797e-05 | -2.8797e-05 | ... | -0.00011026 | -0.00011026 | -0.00011026 | -0.00011026 | -0.00011026 | 8.85e-06 | -3e-05 | -0.0002105 | -3e-05 | -3.37e-05 |
B0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ... | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
B1 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | ... | -0.00502 | -0.00502 | -0.00502 | -0.00502 | -0.00502 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 |
B2 | 0.0003103 | 0.00031 | 0.00031 | 0.0003103 | 0.0003103 | 0.0003103 | 0.0003103 | 0.0003103 | 0.0003103 | 0.0003103 | ... | 0.0005842 | 0.0005842 | 0.0005842 | 0.0005842 | 0.0005842 | 0.0003103 | 0.0003103 | 0.0003103 | 0.0003103 | 0.00031 |
B3 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | ... | -2.3e-05 | -2.3e-05 | -2.3e-05 | -2.3e-05 | -2.3e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 |
B4 | 2.112e-07 | 2.112e-07 | 2.112e-07 | 2.112e-07 | 2.112e-07 | 2.112e-07 | 2.112e-07 | 2.112e-07 | 2.112e-07 | 2.112e-07 | ... | 3.826e-07 | 3.826e-07 | 3.826e-07 | 3.826e-07 | 3.826e-07 | 2.112e-07 | 2.112e-07 | 2.112e-07 | 2.112e-07 | 2.112e-07 |
B5 | -1.359e-09 | -1.359e-09 | -1.359e-09 | -1.359e-09 | -1.359e-09 | -1.359e-09 | -1.359e-09 | -1.359e-09 | -1.359e-09 | -1.359e-09 | ... | -2.31e-09 | -2.31e-09 | -2.31e-09 | -2.31e-09 | -2.31e-09 | -1.359e-09 | -1.359e-09 | -1.359e-09 | -1.359e-09 | -1.359e-09 |
DTC | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | ... | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
FD | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ... | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
A | -3.35 | -3.45 | -3.47 | -3.56 | -3.56 | -3.56 | -3.56 | -3.56 | -3.56 | -3.56 | ... | -3.581 | -3.581 | -3.581 | -3.581 | -3.581 | -3.303 | -3.303 | -3.348 | -3.348 | -3.54 |
B | -0.1161 | -0.077 | -0.087 | -0.075 | -0.075 | -0.075 | -0.075 | -0.075 | -0.075 | -0.075 | ... | -0.113 | -0.113 | -0.113 | -0.113 | -0.113 | -0.1012 | -0.1012 | -0.09143 | -0.09143 | -0.072 |
C4 | 0.9974 | 0.972 | 0.989 | 0.995 | 0.995 | 0.995 | 0.995 | 0.995 | 0.995 | 0.995 | ... | 1.059 | 1.059 | 1.0515 | 1.0515 | 1.0515 | 0.9892 | 0.9892 | 0.995 | 0.995 | 0.985 |
C5 | 0.0026 | 0.028 | 0.012 | 0.005 | 0.005 | 0.005 | 0.005 | 0.005 | 0.005 | 0.005 | ... | -0.059 | -0.059 | -0.0515 | -0.0515 | -0.0515 | 0.0108 | 0.0108 | 0.005 | 0.005 | 0.015 |
IXO | 5.54 | 8.25 | 8.49 | 5.04 | 5.14 | 7.8 | 7.85 | 8 | 8.05 | 8.1 | ... | 4.73 | 4.44 | 0.71 | 2.22 | 0.342 | 8.0491 | 8.29 | 8.1509 | 8.31 | 7.65 |
IXXO | 3.56 | 5.2 | 5.45 | 3.16 | 3.25 | 4.92 | 5.08 | 5.18 | 5.39 | 5.54 | ... | 2.87 | 2.74 | 0.438 | 1.37 | 0.212 | 5.1339 | 5.1339 | 5.5099 | 5.57 | 5.06 |
C6 | 1.173 | 1.067 | 1.137 | 1.15 | 1.15 | 1.15 | 1.15 | 1.15 | 1.15 | 1.15 | ... | 1.159 | 1.159 | 1.13 | 1.13 | 1.13 | 1.1335 | 1.1335 | 1.1325 | 1.1325 | 1.113 |
C7 | -0.173 | -0.067 | -0.137 | -0.15 | -0.15 | -0.15 | -0.15 | -0.15 | -0.15 | -0.15 | ... | -0.159 | -0.159 | -0.13 | -0.13 | -0.13 | -0.1335 | -0.1335 | -0.1325 | -0.1325 | -0.113 |
Notes | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | ... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... |
42 rows × 513 columns
sandia_module = sandia_modules.Canadian_Solar_CS5P_220M___2009_
sandia_module
Vintage 2009 Area 1.701 Material c-Si #Series 96 #Parallel 1 Isco 5.09115 Voco 59.2608 Impo 4.54629 Vmpo 48.3156 Aisc 0.000397 Aimp 0.000181 C0 1.01284 C1 -0.0128398 Bvoco -0.21696 Mbvoc 0 Bvmpo -0.235488 Mbvmp 0 N 1.4032 C2 0.279317 C3 -7.24463 A0 0.928385 A1 0.068093 A2 -0.0157738 A3 0.0016606 A4 -6.93035e-05 B0 1 B1 -0.002438 B2 0.0003103 B3 -1.246e-05 B4 2.112e-07 B5 -1.359e-09 DTC 3 FD 1 A -3.40641 B -0.0842075 C4 0.996446 C5 0.003554 IXO 4.97599 IXXO 3.18803 C6 1.15535 C7 -0.155353 Notes Source: Sandia National Laboratories Updated 9... Name: Canadian_Solar_CS5P_220M___2009_, dtype: object
Generate some irradiance data for modeling.
from pvlib import clearsky
from pvlib import irradiance
from pvlib import atmosphere
from pvlib.location import Location
tus = Location(32.2, -111, 'US/Arizona', 700, 'Tucson')
times = pd.date_range(start=datetime.datetime(2014,4,1), end=datetime.datetime(2014,4,2), freq='30s')
ephem_data = pvlib.solarposition.get_solarposition(times, tus)
irrad_data = clearsky.ineichen(times, tus)
#irrad_data.plot()
aoi = irradiance.aoi(0, 0, ephem_data['apparent_zenith'], ephem_data['azimuth'])
#plt.figure()
#aoi.plot()
am = atmosphere.relativeairmass(ephem_data['apparent_zenith'])
# a hot, sunny spring day in the desert.
temps = pvsystem.sapm_celltemp(irrad_data['GHI'], 0, 30)
Now we can run the module parameters and the irradiance data through the SAPM function.
sapm_1 = pvsystem.sapm(sandia_module, irrad_data['DNI']*np.cos(np.radians(aoi)),
irrad_data['DHI'], temps['temp_cell'], am, aoi)
sapm_1.head()
i_sc | i_mp | v_oc | v_mp | p_mp | i_x | i_xx | effective_irradiance | |
---|---|---|---|---|---|---|---|---|
2014-04-01 00:00:00-07:00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
2014-04-01 00:00:30-07:00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
2014-04-01 00:01:00-07:00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
2014-04-01 00:01:30-07:00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
2014-04-01 00:02:00-07:00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
def plot_sapm(sapm_data):
"""
Makes a nice figure with the SAPM data.
Parameters
----------
sapm_data : DataFrame
The output of ``pvsystem.sapm``
"""
fig, axes = plt.subplots(2, 3, figsize=(16,10), sharex=False, sharey=False, squeeze=False)
plt.subplots_adjust(wspace=.2, hspace=.3)
ax = axes[0,0]
sapm_data.filter(like='i').plot(ax=ax)
ax.set_ylabel('Current (A)')
ax = axes[0,1]
sapm_data.filter(like='v').plot(ax=ax)
ax.set_ylabel('Voltage (V)')
ax = axes[0,2]
sapm_data.filter(like='p').plot(ax=ax)
ax.set_ylabel('Power (W)')
ax = axes[1,0]
[ax.plot(sapm_data['effective_irradiance'], current, label=name) for name, current in
sapm_data.filter(like='i').iteritems()]
ax.set_ylabel('Current (A)')
ax.set_xlabel('Effective Irradiance')
ax.legend(loc=2)
ax = axes[1,1]
[ax.plot(sapm_data['effective_irradiance'], voltage, label=name) for name, voltage in
sapm_data.filter(like='v').iteritems()]
ax.set_ylabel('Voltage (V)')
ax.set_xlabel('Effective Irradiance')
ax.legend(loc=4)
ax = axes[1,2]
ax.plot(sapm_data['effective_irradiance'], sapm_data['p_mp'], label='p_mp')
ax.set_ylabel('Power (W)')
ax.set_xlabel('Effective Irradiance')
ax.legend(loc=2)
# needed to show the time ticks
for ax in axes.flatten():
for tk in ax.get_xticklabels():
tk.set_visible(True)
plot_sapm(sapm_1)
For comparison, here's the SAPM for a sunny, windy, cold version of the same day.
temps = pvsystem.sapm_celltemp(irrad_data['GHI'], 10, 5)
sapm_2 = pvsystem.sapm(sandia_module, irrad_data['DNI']*np.cos(np.radians(aoi)),
irrad_data['DHI'], temps['temp_cell'], am, aoi)
plot_sapm(sapm_2)
sapm_1['p_mp'].plot(label='30 C, 0 m/s')
sapm_2['p_mp'].plot(label=' 5 C, 10 m/s')
plt.legend()
plt.ylabel('Pmp')
plt.title('Comparison of a hot, calm day and a cold, windy day')
<matplotlib.text.Text at 0x7f77ba87e850>
import warnings
warnings.simplefilter('ignore', np.RankWarning)
def sapm_to_ivframe(sapm_row):
pnt = sapm_row.T.ix[:,0]
ivframe = {'Isc': (pnt['i_sc'], 0),
'Pmp': (pnt['i_mp'], pnt['v_mp']),
'Ix': (pnt['i_x'], 0.5*pnt['v_oc']),
'Ixx': (pnt['i_xx'], 0.5*(pnt['v_oc']+pnt['v_mp'])),
'Voc': (0, pnt['v_oc'])}
ivframe = pd.DataFrame(ivframe, index=['current', 'voltage']).T
ivframe = ivframe.sort('voltage')
return ivframe
def ivframe_to_ivcurve(ivframe, points=100):
ivfit_coefs = np.polyfit(ivframe['voltage'], ivframe['current'], 30)
fit_voltages = np.linspace(0, ivframe.ix['Voc', 'voltage'], points)
fit_currents = np.polyval(ivfit_coefs, fit_voltages)
return fit_voltages, fit_currents
sapm_to_ivframe(sapm_1['2014-04-01 10:00:00'])
current | voltage | |
---|---|---|
Isc | 3.943111 | 0.000000 |
Ix | 3.850701 | 25.734151 |
Pmp | 3.508231 | 40.603933 |
Ixx | 2.559264 | 46.036117 |
Voc | 0.000000 | 51.468302 |
times = ['2014-04-01 07:00:00', '2014-04-01 08:00:00', '2014-04-01 09:00:00',
'2014-04-01 10:00:00', '2014-04-01 11:00:00', '2014-04-01 12:00:00']
times.reverse()
fig, ax = plt.subplots(1, 1, figsize=(12,8))
for time in times:
ivframe = sapm_to_ivframe(sapm_1[time])
fit_voltages, fit_currents = ivframe_to_ivcurve(ivframe)
ax.plot(fit_voltages, fit_currents, label=time)
ax.plot(ivframe['voltage'], ivframe['current'], 'ko')
ax.set_xlabel('Voltage (V)')
ax.set_ylabel('Current (A)')
ax.set_ylim(0, None)
ax.set_title('IV curves at multiple times')
ax.legend()
<matplotlib.legend.Legend at 0x7f77b3964ed0>
The same data run through the desoto model.
photocurrent, saturation_current, resistance_series, resistance_shunt, nNsVth = (
pvsystem.calcparams_desoto(irrad_data.GHI,
temp_cell=temps['temp_cell'],
alpha_isc=cecmodule['Alpha_sc'],
module_parameters=cecmodule,
EgRef=1.121,
dEgdT=-0.0002677) )
photocurrent.plot()
plt.ylabel('Light current I_L (A)')
<matplotlib.text.Text at 0x7f77b3ba1250>
saturation_current.plot()
plt.ylabel('Saturation current I_0 (A)')
<matplotlib.text.Text at 0x7f77b8041f10>
resistance_series
0.094
resistance_shunt.plot()
plt.ylabel('Shunt resistance (ohms)')
plt.ylim(0,100)
(0, 100)
nNsVth.plot()
plt.ylabel('nNsVth')
<matplotlib.text.Text at 0x7f77b3a8f150>
pvsystem = reload(pvsystem)
single_diode_out = pvsystem.singlediode(cecmodule, photocurrent, saturation_current,
resistance_series, resistance_shunt, nNsVth)
single_diode_out
i_mp | i_sc | i_x | i_xx | p_mp | v_mp | v_oc | |
---|---|---|---|---|---|---|---|
2014-04-01 00:00:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:00:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:01:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:01:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:02:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:02:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:03:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:03:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:04:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:04:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:05:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:05:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:06:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:06:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:07:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:07:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:08:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:08:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:09:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:09:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:10:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:10:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:11:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:11:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:12:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:12:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:13:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:13:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:14:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 00:14:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
... | ... | ... | ... | ... | ... | ... | ... |
2014-04-01 23:45:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:46:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:46:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:47:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:47:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:48:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:48:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:49:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:49:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:50:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:50:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:51:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:51:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:52:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:52:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:53:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:53:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:54:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:54:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:55:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:55:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:56:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:56:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:57:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:57:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:58:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:58:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:59:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-01 23:59:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2014-04-02 00:00:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2881 rows × 7 columns
single_diode_out['i_sc'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f77b3560a90>
single_diode_out['v_oc'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f77b33d1690>
single_diode_out['p_mp'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f77b38ba610>