├── .gitignore ├── Readme.md ├── data ├── global-temp-monthly.csv └── global_CO2_emissions.csv ├── notebooks ├── PostgreSQL_to_Pandas.ipynb ├── Psycopg2_Bulk_Insert_Speed_Benchmark.ipynb ├── Psycopg2_Bulk_Insert_copy_from.ipynb ├── Psycopg2_Bulk_Insert_execute_mogrify.ipynb ├── Psycopg2_Bulk_Insert_execute_values.ipynb ├── SimpleInsertExample.ipynb ├── all_insert_strategies.png └── benchmark.png ├── requirements.txt └── src ├── bulk_insert_execute_values.py └── single_insert.py /.gitignore: -------------------------------------------------------------------------------- 1 | env3 2 | .ipynb_checkpoints/ 3 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # From Pandas Dataframe To SQL Table using Psycopg2 2 | 3 | Full functionning example associated to my [blog post](https://naysan.ca/2019/11/02/from-pandas-dataframe-to-sql-table-using-psycopg2). 4 | The data for this tutorial is freely available from the World Bank website https://data.worldbank.org/indicator/en.atm.co2e.pc. The version stored in the data/ directory of this repo is a simplified version of that zip file. 5 | 6 | ## Step-by-step Jupyter notebook 7 | 8 | See notebooks/CompleteExample.ipynb 9 | 10 | ## Running the code 11 | 12 | (Optional) Setup your Python 3 virtualenv. For step by step instructions on Linux click [here](https://naysan.ca/2019/08/05/install-python-3-virtualenv-on-ubuntu). 13 | 14 | 15 | Install the required libraries using pip. 16 | 17 | ``` 18 | pip install -r requirements.txt 19 | ``` 20 | 21 | Run the main program 22 | 23 | ``` 24 | python src/main.py 25 | ``` 26 | 27 | 28 | ## Author 29 | 30 | * **Naysan Saran** - [Link to my blog](https://naysan.ca/#/blog) 31 | 32 | ## License 33 | 34 | This project is licensed under the GPL V3 licence. 35 | 36 | 37 | -------------------------------------------------------------------------------- /data/global-temp-monthly.csv: -------------------------------------------------------------------------------- 1 | Source,Date,Mean 2 | GCAG,2016-12-06,0.7895 3 | GISTEMP,2016-12-06,0.81 4 | GCAG,2016-11-06,0.7504 5 | GISTEMP,2016-11-06,0.93 6 | GCAG,2016-10-06,0.7292 7 | GISTEMP,2016-10-06,0.89 8 | GCAG,2016-09-06,0.8767 9 | GISTEMP,2016-09-06,0.87 10 | GCAG,2016-08-06,0.8998 11 | GISTEMP,2016-08-06,0.98 12 | GCAG,2016-07-06,0.8687 13 | GISTEMP,2016-07-06,0.83 14 | GCAG,2016-06-06,0.9006 15 | GISTEMP,2016-06-06,0.76 16 | GCAG,2016-05-06,0.8738 17 | GISTEMP,2016-05-06,0.93 18 | GCAG,2016-04-06,1.0733 19 | GISTEMP,2016-04-06,1.09 20 | GCAG,2016-03-06,1.2245 21 | GISTEMP,2016-03-06,1.3 22 | GCAG,2016-02-06,1.1921 23 | GISTEMP,2016-02-06,1.35 24 | GCAG,2016-01-06,1.0569 25 | GISTEMP,2016-01-06,1.17 26 | GCAG,2015-12-06,1.1219 27 | GISTEMP,2015-12-06,1.11 28 | GCAG,2015-11-06,0.9655 29 | GISTEMP,2015-11-06,1.04 30 | GCAG,2015-10-06,0.9913 31 | GISTEMP,2015-10-06,1.06 32 | GCAG,2015-09-06,0.9260 33 | GISTEMP,2015-09-06,0.81 34 | GCAG,2015-08-06,0.8746 35 | GISTEMP,2015-08-06,0.78 36 | GCAG,2015-07-06,0.8072 37 | GISTEMP,2015-07-06,0.71 38 | GCAG,2015-06-06,0.8835 39 | GISTEMP,2015-06-06,0.78 40 | GCAG,2015-05-06,0.8584 41 | GISTEMP,2015-05-06,0.78 42 | GCAG,2015-04-06,0.7741 43 | GISTEMP,2015-04-06,0.74 44 | GCAG,2015-03-06,0.8969 45 | GISTEMP,2015-03-06,0.9 46 | GCAG,2015-02-06,0.8843 47 | GISTEMP,2015-02-06,0.86 48 | GCAG,2015-01-06,0.8141 49 | GISTEMP,2015-01-06,0.81 50 | GCAG,2014-12-06,0.8308 51 | GISTEMP,2014-12-06,0.79 52 | GCAG,2014-11-06,0.6895 53 | GISTEMP,2014-11-06,0.67 54 | GCAG,2014-10-06,0.7851 55 | GISTEMP,2014-10-06,0.85 56 | GCAG,2014-09-06,0.7872 57 | GISTEMP,2014-09-06,0.9 58 | GCAG,2014-08-06,0.7986 59 | GISTEMP,2014-08-06,0.82 60 | GCAG,2014-07-06,0.6988 61 | GISTEMP,2014-07-06,0.57 62 | GCAG,2014-06-06,0.7623 63 | GISTEMP,2014-06-06,0.66 64 | GCAG,2014-05-06,0.7938 65 | GISTEMP,2014-05-06,0.87 66 | GCAG,2014-04-06,0.8006 67 | GISTEMP,2014-04-06,0.78 68 | GCAG,2014-03-06,0.7695 69 | GISTEMP,2014-03-06,0.77 70 | GCAG,2014-02-06,0.4800 71 | GISTEMP,2014-02-06,0.51 72 | GCAG,2014-01-06,0.6936 73 | GISTEMP,2014-01-06,0.73 74 | GCAG,2013-12-06,0.6981 75 | GISTEMP,2013-12-06,0.67 76 | GCAG,2013-11-06,0.8293 77 | GISTEMP,2013-11-06,0.81 78 | GCAG,2013-10-06,0.6787 79 | GISTEMP,2013-10-06,0.69 80 | GCAG,2013-09-06,0.6857 81 | GISTEMP,2013-09-06,0.78 82 | GCAG,2013-08-06,0.6605 83 | GISTEMP,2013-08-06,0.66 84 | GCAG,2013-07-06,0.6662 85 | GISTEMP,2013-07-06,0.59 86 | GCAG,2013-06-06,0.6838 87 | GISTEMP,2013-06-06,0.65 88 | GCAG,2013-05-06,0.7141 89 | GISTEMP,2013-05-06,0.61 90 | GCAG,2013-04-06,0.5610 91 | GISTEMP,2013-04-06,0.52 92 | GCAG,2013-03-06,0.6139 93 | GISTEMP,2013-03-06,0.66 94 | GCAG,2013-02-06,0.6357 95 | GISTEMP,2013-02-06,0.55 96 | GCAG,2013-01-06,0.5873 97 | GISTEMP,2013-01-06,0.68 98 | GCAG,2012-12-06,0.4655 99 | GISTEMP,2012-12-06,0.53 100 | GCAG,2012-11-06,0.7087 101 | GISTEMP,2012-11-06,0.75 102 | GCAG,2012-10-06,0.7022 103 | GISTEMP,2012-10-06,0.78 104 | GCAG,2012-09-06,0.7266 105 | GISTEMP,2012-09-06,0.76 106 | GCAG,2012-08-06,0.6694 107 | GISTEMP,2012-08-06,0.63 108 | GCAG,2012-07-06,0.6884 109 | GISTEMP,2012-07-06,0.57 110 | GCAG,2012-06-06,0.7039 111 | GISTEMP,2012-06-06,0.62 112 | GCAG,2012-05-06,0.7221 113 | GISTEMP,2012-05-06,0.76 114 | GCAG,2012-04-06,0.7335 115 | GISTEMP,2012-04-06,0.69 116 | GCAG,2012-03-06,0.5218 117 | GISTEMP,2012-03-06,0.58 118 | GCAG,2012-02-06,0.4235 119 | GISTEMP,2012-02-06,0.49 120 | GCAG,2012-01-06,0.4228 121 | GISTEMP,2012-01-06,0.46 122 | GCAG,2011-12-06,0.5485 123 | GISTEMP,2011-12-06,0.54 124 | GCAG,2011-11-06,0.4857 125 | GISTEMP,2011-11-06,0.56 126 | GCAG,2011-10-06,0.6349 127 | GISTEMP,2011-10-06,0.66 128 | GCAG,2011-09-06,0.5998 129 | GISTEMP,2011-09-06,0.56 130 | GCAG,2011-08-06,0.6160 131 | GISTEMP,2011-08-06,0.73 132 | GCAG,2011-07-06,0.6282 133 | GISTEMP,2011-07-06,0.73 134 | GCAG,2011-06-06,0.6465 135 | GISTEMP,2011-06-06,0.59 136 | GCAG,2011-05-06,0.5741 137 | GISTEMP,2011-05-06,0.53 138 | GCAG,2011-04-06,0.6522 139 | GISTEMP,2011-04-06,0.65 140 | GCAG,2011-03-06,0.5915 141 | GISTEMP,2011-03-06,0.64 142 | GCAG,2011-02-06,0.4976 143 | GISTEMP,2011-02-06,0.53 144 | GCAG,2011-01-06,0.4706 145 | GISTEMP,2011-01-06,0.51 146 | GCAG,2010-12-06,0.4894 147 | GISTEMP,2010-12-06,0.49 148 | GCAG,2010-11-06,0.7682 149 | GISTEMP,2010-11-06,0.79 150 | GCAG,2010-10-06,0.6268 151 | GISTEMP,2010-10-06,0.71 152 | GCAG,2010-09-06,0.5724 153 | GISTEMP,2010-09-06,0.61 154 | GCAG,2010-08-06,0.6595 155 | GISTEMP,2010-08-06,0.65 156 | GCAG,2010-07-06,0.7287 157 | GISTEMP,2010-07-06,0.62 158 | GCAG,2010-06-06,0.7339 159 | GISTEMP,2010-06-06,0.64 160 | GCAG,2010-05-06,0.7582 161 | GISTEMP,2010-05-06,0.75 162 | GCAG,2010-04-06,0.8287 163 | GISTEMP,2010-04-06,0.87 164 | GCAG,2010-03-06,0.8470 165 | GISTEMP,2010-03-06,0.92 166 | GCAG,2010-02-06,0.7080 167 | GISTEMP,2010-02-06,0.78 168 | GCAG,2010-01-06,0.6958 169 | GISTEMP,2010-01-06,0.73 170 | GCAG,2009-12-06,0.6176 171 | GISTEMP,2009-12-06,0.65 172 | GCAG,2009-11-06,0.6716 173 | GISTEMP,2009-11-06,0.77 174 | GCAG,2009-10-06,0.6418 175 | GISTEMP,2009-10-06,0.64 176 | GCAG,2009-09-06,0.7083 177 | GISTEMP,2009-09-06,0.7 178 | GCAG,2009-08-06,0.6998 179 | GISTEMP,2009-08-06,0.66 180 | GCAG,2009-07-06,0.6439 181 | GISTEMP,2009-07-06,0.72 182 | GCAG,2009-06-06,0.6741 183 | GISTEMP,2009-06-06,0.65 184 | GCAG,2009-05-06,0.5868 185 | GISTEMP,2009-05-06,0.65 186 | GCAG,2009-04-06,0.6539 187 | GISTEMP,2009-04-06,0.61 188 | GCAG,2009-03-06,0.5794 189 | GISTEMP,2009-03-06,0.53 190 | GCAG,2009-02-06,0.5679 191 | GISTEMP,2009-02-06,0.53 192 | GCAG,2009-01-06,0.5955 193 | GISTEMP,2009-01-06,0.62 194 | GCAG,2008-12-06,0.5635 195 | GISTEMP,2008-12-06,0.54 196 | GCAG,2008-11-06,0.6703 197 | GISTEMP,2008-11-06,0.66 198 | GCAG,2008-10-06,0.6690 199 | GISTEMP,2008-10-06,0.67 200 | GCAG,2008-09-06,0.5318 201 | GISTEMP,2008-09-06,0.65 202 | GCAG,2008-08-06,0.5594 203 | GISTEMP,2008-08-06,0.44 204 | GCAG,2008-07-06,0.5796 205 | GISTEMP,2008-07-06,0.6 206 | GCAG,2008-06-06,0.5314 207 | GISTEMP,2008-06-06,0.48 208 | GCAG,2008-05-06,0.5011 209 | GISTEMP,2008-05-06,0.51 210 | GCAG,2008-04-06,0.4827 211 | GISTEMP,2008-04-06,0.53 212 | GCAG,2008-03-06,0.7625 213 | GISTEMP,2008-03-06,0.73 214 | GCAG,2008-02-06,0.3774 215 | GISTEMP,2008-02-06,0.36 216 | GCAG,2008-01-06,0.2746 217 | GISTEMP,2008-01-06,0.24 218 | GCAG,2007-12-06,0.4872 219 | GISTEMP,2007-12-06,0.5 220 | GCAG,2007-11-06,0.5172 221 | GISTEMP,2007-11-06,0.57 222 | GCAG,2007-10-06,0.5670 223 | GISTEMP,2007-10-06,0.6 224 | GCAG,2007-09-06,0.5775 225 | GISTEMP,2007-09-06,0.64 226 | GCAG,2007-08-06,0.5509 227 | GISTEMP,2007-08-06,0.6 228 | GCAG,2007-07-06,0.5286 229 | GISTEMP,2007-07-06,0.62 230 | GCAG,2007-06-06,0.5374 231 | GISTEMP,2007-06-06,0.58 232 | GCAG,2007-05-06,0.6090 233 | GISTEMP,2007-05-06,0.67 234 | GCAG,2007-04-06,0.7336 235 | GISTEMP,2007-04-06,0.76 236 | GCAG,2007-03-06,0.6668 237 | GISTEMP,2007-03-06,0.7 238 | GCAG,2007-02-06,0.6609 239 | GISTEMP,2007-02-06,0.7 240 | GCAG,2007-01-06,0.8839 241 | GISTEMP,2007-01-06,0.96 242 | GCAG,2006-12-06,0.7692 243 | GISTEMP,2006-12-06,0.77 244 | GCAG,2006-11-06,0.6449 245 | GISTEMP,2006-11-06,0.72 246 | GCAG,2006-10-06,0.6774 247 | GISTEMP,2006-10-06,0.69 248 | GCAG,2006-09-06,0.6337 249 | GISTEMP,2006-09-06,0.64 250 | GCAG,2006-08-06,0.6231 251 | GISTEMP,2006-08-06,0.72 252 | GCAG,2006-07-06,0.6218 253 | GISTEMP,2006-07-06,0.54 254 | GCAG,2006-06-06,0.6399 255 | GISTEMP,2006-06-06,0.64 256 | GCAG,2006-05-06,0.5499 257 | GISTEMP,2006-05-06,0.47 258 | GCAG,2006-04-06,0.5177 259 | GISTEMP,2006-04-06,0.5 260 | GCAG,2006-03-06,0.5931 261 | GISTEMP,2006-03-06,0.63 262 | GCAG,2006-02-06,0.6221 263 | GISTEMP,2006-02-06,0.7 264 | GCAG,2006-01-06,0.4567 265 | GISTEMP,2006-01-06,0.57 266 | GCAG,2005-12-06,0.6235 267 | GISTEMP,2005-12-06,0.68 268 | GCAG,2005-11-06,0.7280 269 | GISTEMP,2005-11-06,0.76 270 | GCAG,2005-10-06,0.6930 271 | GISTEMP,2005-10-06,0.8 272 | GCAG,2005-09-06,0.6867 273 | GISTEMP,2005-09-06,0.78 274 | GCAG,2005-08-06,0.6247 275 | GISTEMP,2005-08-06,0.63 276 | GCAG,2005-07-06,0.6572 277 | GISTEMP,2005-07-06,0.66 278 | GCAG,2005-06-06,0.6722 279 | GISTEMP,2005-06-06,0.67 280 | GCAG,2005-05-06,0.6573 281 | GISTEMP,2005-05-06,0.65 282 | GCAG,2005-04-06,0.7314 283 | GISTEMP,2005-04-06,0.69 284 | GCAG,2005-03-06,0.6918 285 | GISTEMP,2005-03-06,0.69 286 | GCAG,2005-02-06,0.5143 287 | GISTEMP,2005-02-06,0.58 288 | GCAG,2005-01-06,0.6223 289 | GISTEMP,2005-01-06,0.72 290 | GCAG,2004-12-06,0.5081 291 | GISTEMP,2004-12-06,0.52 292 | GCAG,2004-11-06,0.7601 293 | GISTEMP,2004-11-06,0.72 294 | GCAG,2004-10-06,0.6177 295 | GISTEMP,2004-10-06,0.66 296 | GCAG,2004-09-06,0.5331 297 | GISTEMP,2004-09-06,0.53 298 | GCAG,2004-08-06,0.5141 299 | GISTEMP,2004-08-06,0.45 300 | GCAG,2004-07-06,0.4806 301 | GISTEMP,2004-07-06,0.26 302 | GCAG,2004-06-06,0.4707 303 | GISTEMP,2004-06-06,0.43 304 | GCAG,2004-05-06,0.4442 305 | GISTEMP,2004-05-06,0.42 306 | GCAG,2004-04-06,0.5940 307 | GISTEMP,2004-04-06,0.62 308 | GCAG,2004-03-06,0.6964 309 | GISTEMP,2004-03-06,0.64 310 | GCAG,2004-02-06,0.7232 311 | GISTEMP,2004-02-06,0.71 312 | GCAG,2004-01-06,0.5979 313 | GISTEMP,2004-01-06,0.59 314 | GCAG,2003-12-06,0.7361 315 | GISTEMP,2003-12-06,0.75 316 | GCAG,2003-11-06,0.5784 317 | GISTEMP,2003-11-06,0.55 318 | GCAG,2003-10-06,0.7271 319 | GISTEMP,2003-10-06,0.75 320 | GCAG,2003-09-06,0.6412 321 | GISTEMP,2003-09-06,0.66 322 | GCAG,2003-08-06,0.6202 323 | GISTEMP,2003-08-06,0.66 324 | GCAG,2003-07-06,0.5408 325 | GISTEMP,2003-07-06,0.55 326 | GCAG,2003-06-06,0.5381 327 | GISTEMP,2003-06-06,0.49 328 | GCAG,2003-05-06,0.5954 329 | GISTEMP,2003-05-06,0.62 330 | GCAG,2003-04-06,0.5601 331 | GISTEMP,2003-04-06,0.55 332 | GCAG,2003-03-06,0.5702 333 | GISTEMP,2003-03-06,0.57 334 | GCAG,2003-02-06,0.5626 335 | GISTEMP,2003-02-06,0.55 336 | GCAG,2003-01-06,0.6907 337 | GISTEMP,2003-01-06,0.73 338 | GCAG,2002-12-06,0.4366 339 | GISTEMP,2002-12-06,0.43 340 | GCAG,2002-11-06,0.5918 341 | GISTEMP,2002-11-06,0.59 342 | GCAG,2002-10-06,0.4773 343 | GISTEMP,2002-10-06,0.57 344 | GCAG,2002-09-06,0.5661 345 | GISTEMP,2002-09-06,0.65 346 | GCAG,2002-08-06,0.5359 347 | GISTEMP,2002-08-06,0.55 348 | GCAG,2002-07-06,0.6229 349 | GISTEMP,2002-07-06,0.62 350 | GCAG,2002-06-06,0.5890 351 | GISTEMP,2002-06-06,0.54 352 | GCAG,2002-05-06,0.5656 353 | GISTEMP,2002-05-06,0.65 354 | GCAG,2002-04-06,0.5725 355 | GISTEMP,2002-04-06,0.58 356 | GCAG,2002-03-06,0.7887 357 | GISTEMP,2002-03-06,0.91 358 | GCAG,2002-02-06,0.7846 359 | GISTEMP,2002-02-06,0.76 360 | GCAG,2002-01-06,0.6962 361 | GISTEMP,2002-01-06,0.75 362 | GCAG,2001-12-06,0.5128 363 | GISTEMP,2001-12-06,0.55 364 | GCAG,2001-11-06,0.6880 365 | GISTEMP,2001-11-06,0.7 366 | GCAG,2001-10-06,0.5006 367 | GISTEMP,2001-10-06,0.52 368 | GCAG,2001-09-06,0.5050 369 | GISTEMP,2001-09-06,0.56 370 | GCAG,2001-08-06,0.6032 371 | GISTEMP,2001-08-06,0.49 372 | GCAG,2001-07-06,0.5586 373 | GISTEMP,2001-07-06,0.61 374 | GCAG,2001-06-06,0.5373 375 | GISTEMP,2001-06-06,0.55 376 | GCAG,2001-05-06,0.5997 377 | GISTEMP,2001-05-06,0.59 378 | GCAG,2001-04-06,0.5666 379 | GISTEMP,2001-04-06,0.52 380 | GCAG,2001-03-06,0.6293 381 | GISTEMP,2001-03-06,0.58 382 | GCAG,2001-02-06,0.3946 383 | GISTEMP,2001-02-06,0.46 384 | GCAG,2001-01-06,0.4720 385 | GISTEMP,2001-01-06,0.44 386 | GCAG,2000-12-06,0.3192 387 | GISTEMP,2000-12-06,0.3 388 | GCAG,2000-11-06,0.2557 389 | GISTEMP,2000-11-06,0.34 390 | GCAG,2000-10-06,0.3027 391 | GISTEMP,2000-10-06,0.3 392 | GCAG,2000-09-06,0.4384 393 | GISTEMP,2000-09-06,0.42 394 | GCAG,2000-08-06,0.4557 395 | GISTEMP,2000-08-06,0.43 396 | GCAG,2000-07-06,0.3919 397 | GISTEMP,2000-07-06,0.42 398 | GCAG,2000-06-06,0.4076 399 | GISTEMP,2000-06-06,0.44 400 | GCAG,2000-05-06,0.4657 401 | GISTEMP,2000-05-06,0.4 402 | GCAG,2000-04-06,0.6311 403 | GISTEMP,2000-04-06,0.59 404 | GCAG,2000-03-06,0.5561 405 | GISTEMP,2000-03-06,0.6 406 | GCAG,2000-02-06,0.5439 407 | GISTEMP,2000-02-06,0.58 408 | GCAG,2000-01-06,0.3467 409 | GISTEMP,2000-01-06,0.26 410 | GCAG,1999-12-06,0.5779 411 | GISTEMP,1999-12-06,0.46 412 | GCAG,1999-11-06,0.3688 413 | GISTEMP,1999-11-06,0.42 414 | GCAG,1999-10-06,0.3773 415 | GISTEMP,1999-10-06,0.43 416 | GCAG,1999-09-06,0.3976 417 | GISTEMP,1999-09-06,0.43 418 | GCAG,1999-08-06,0.3695 419 | GISTEMP,1999-08-06,0.34 420 | GCAG,1999-07-06,0.4029 421 | GISTEMP,1999-07-06,0.41 422 | GCAG,1999-06-06,0.4203 423 | GISTEMP,1999-06-06,0.37 424 | GCAG,1999-05-06,0.4086 425 | GISTEMP,1999-05-06,0.33 426 | GCAG,1999-04-06,0.4590 427 | GISTEMP,1999-04-06,0.34 428 | GCAG,1999-03-06,0.3702 429 | GISTEMP,1999-03-06,0.34 430 | GCAG,1999-02-06,0.6733 431 | GISTEMP,1999-02-06,0.66 432 | GCAG,1999-01-06,0.5007 433 | GISTEMP,1999-01-06,0.48 434 | GCAG,1998-12-06,0.5796 435 | GISTEMP,1998-12-06,0.56 436 | GCAG,1998-11-06,0.4132 437 | GISTEMP,1998-11-06,0.5 438 | GCAG,1998-10-06,0.4965 439 | GISTEMP,1998-10-06,0.47 440 | GCAG,1998-09-06,0.5271 441 | GISTEMP,1998-09-06,0.45 442 | GCAG,1998-08-06,0.6816 443 | GISTEMP,1998-08-06,0.68 444 | GCAG,1998-07-06,0.7358 445 | GISTEMP,1998-07-06,0.71 446 | GCAG,1998-06-06,0.6657 447 | GISTEMP,1998-06-06,0.78 448 | GCAG,1998-05-06,0.6679 449 | GISTEMP,1998-05-06,0.71 450 | GCAG,1998-04-06,0.7358 451 | GISTEMP,1998-04-06,0.64 452 | GCAG,1998-03-06,0.6396 453 | GISTEMP,1998-03-06,0.63 454 | GCAG,1998-02-06,0.8660 455 | GISTEMP,1998-02-06,0.9 456 | GCAG,1998-01-06,0.6042 457 | GISTEMP,1998-01-06,0.61 458 | GCAG,1997-12-06,0.6302 459 | GISTEMP,1997-12-06,0.6 460 | GCAG,1997-11-06,0.5865 461 | GISTEMP,1997-11-06,0.66 462 | GCAG,1997-10-06,0.6487 463 | GISTEMP,1997-10-06,0.64 464 | GCAG,1997-09-06,0.6250 465 | GISTEMP,1997-09-06,0.56 466 | GCAG,1997-08-06,0.5491 467 | GISTEMP,1997-08-06,0.43 468 | GCAG,1997-07-06,0.5101 469 | GISTEMP,1997-07-06,0.35 470 | GCAG,1997-06-06,0.5308 471 | GISTEMP,1997-06-06,0.55 472 | GCAG,1997-05-06,0.4235 473 | GISTEMP,1997-05-06,0.39 474 | GCAG,1997-04-06,0.4551 475 | GISTEMP,1997-04-06,0.38 476 | GCAG,1997-03-06,0.4617 477 | GISTEMP,1997-03-06,0.52 478 | GCAG,1997-02-06,0.4288 479 | GISTEMP,1997-02-06,0.37 480 | GCAG,1997-01-06,0.3746 481 | GISTEMP,1997-01-06,0.33 482 | GCAG,1996-12-06,0.3893 483 | GISTEMP,1996-12-06,0.41 484 | GCAG,1996-11-06,0.2816 485 | GISTEMP,1996-11-06,0.42 486 | GCAG,1996-10-06,0.2276 487 | GISTEMP,1996-10-06,0.2 488 | GCAG,1996-09-06,0.2696 489 | GISTEMP,1996-09-06,0.27 490 | GCAG,1996-08-06,0.3206 491 | GISTEMP,1996-08-06,0.49 492 | GCAG,1996-07-06,0.3238 493 | GISTEMP,1996-07-06,0.37 494 | GCAG,1996-06-06,0.3547 495 | GISTEMP,1996-06-06,0.27 496 | GCAG,1996-05-06,0.3908 497 | GISTEMP,1996-05-06,0.3 498 | GCAG,1996-04-06,0.2725 499 | GISTEMP,1996-04-06,0.38 500 | GCAG,1996-03-06,0.3242 501 | GISTEMP,1996-03-06,0.34 502 | GCAG,1996-02-06,0.4562 503 | GISTEMP,1996-02-06,0.5 504 | GCAG,1996-01-06,0.2625 505 | GISTEMP,1996-01-06,0.27 506 | GCAG,1995-12-06,0.3477 507 | GISTEMP,1995-12-06,0.3 508 | GCAG,1995-11-06,0.4550 509 | GISTEMP,1995-11-06,0.45 510 | GCAG,1995-10-06,0.4376 511 | GISTEMP,1995-10-06,0.49 512 | GCAG,1995-09-06,0.3865 513 | GISTEMP,1995-09-06,0.34 514 | GCAG,1995-08-06,0.5056 515 | GISTEMP,1995-08-06,0.48 516 | GCAG,1995-07-06,0.4295 517 | GISTEMP,1995-07-06,0.49 518 | GCAG,1995-06-06,0.4657 519 | GISTEMP,1995-06-06,0.45 520 | GCAG,1995-05-06,0.3537 521 | GISTEMP,1995-05-06,0.29 522 | GCAG,1995-04-06,0.4097 523 | GISTEMP,1995-04-06,0.47 524 | GCAG,1995-03-06,0.4637 525 | GISTEMP,1995-03-06,0.45 526 | GCAG,1995-02-06,0.6895 527 | GISTEMP,1995-02-06,0.77 528 | GCAG,1995-01-06,0.5487 529 | GISTEMP,1995-01-06,0.5 530 | GCAG,1994-12-06,0.4009 531 | GISTEMP,1994-12-06,0.36 532 | GCAG,1994-11-06,0.4530 533 | GISTEMP,1994-11-06,0.46 534 | GCAG,1994-10-06,0.4273 535 | GISTEMP,1994-10-06,0.42 536 | GCAG,1994-09-06,0.3300 537 | GISTEMP,1994-09-06,0.32 538 | GCAG,1994-08-06,0.3119 539 | GISTEMP,1994-08-06,0.23 540 | GCAG,1994-07-06,0.3155 541 | GISTEMP,1994-07-06,0.32 542 | GCAG,1994-06-06,0.3870 543 | GISTEMP,1994-06-06,0.42 544 | GCAG,1994-05-06,0.3819 545 | GISTEMP,1994-05-06,0.29 546 | GCAG,1994-04-06,0.3568 547 | GISTEMP,1994-04-06,0.41 548 | GCAG,1994-03-06,0.3568 549 | GISTEMP,1994-03-06,0.26 550 | GCAG,1994-02-06,0.0791 551 | GISTEMP,1994-02-06,0.04 552 | GCAG,1994-01-06,0.2902 553 | GISTEMP,1994-01-06,0.3 554 | GCAG,1993-12-06,0.3188 555 | GISTEMP,1993-12-06,0.19 556 | GCAG,1993-11-06,0.0920 557 | GISTEMP,1993-11-06,0.07 558 | GCAG,1993-10-06,0.2442 559 | GISTEMP,1993-10-06,0.24 560 | GCAG,1993-09-06,0.1692 561 | GISTEMP,1993-09-06,0.11 562 | GCAG,1993-08-06,0.2118 563 | GISTEMP,1993-08-06,0.13 564 | GCAG,1993-07-06,0.2336 565 | GISTEMP,1993-07-06,0.28 566 | GCAG,1993-06-06,0.2930 567 | GISTEMP,1993-06-06,0.24 568 | GCAG,1993-05-06,0.3438 569 | GISTEMP,1993-05-06,0.26 570 | GCAG,1993-04-06,0.3155 571 | GISTEMP,1993-04-06,0.28 572 | GCAG,1993-03-06,0.4208 573 | GISTEMP,1993-03-06,0.36 574 | GCAG,1993-02-06,0.3967 575 | GISTEMP,1993-02-06,0.39 576 | GCAG,1993-01-06,0.3840 577 | GISTEMP,1993-01-06,0.37 578 | GCAG,1992-12-06,0.2833 579 | GISTEMP,1992-12-06,0.22 580 | GCAG,1992-11-06,0.0943 581 | GISTEMP,1992-11-06,0.04 582 | GCAG,1992-10-06,0.1154 583 | GISTEMP,1992-10-06,0.11 584 | GCAG,1992-09-06,0.0588 585 | GISTEMP,1992-09-06,0.01 586 | GCAG,1992-08-06,0.1405 587 | GISTEMP,1992-08-06,0.1 588 | GCAG,1992-07-06,0.1359 589 | GISTEMP,1992-07-06,0.13 590 | GCAG,1992-06-06,0.2821 591 | GISTEMP,1992-06-06,0.24 592 | GCAG,1992-05-06,0.3276 593 | GISTEMP,1992-05-06,0.32 594 | GCAG,1992-04-06,0.2936 595 | GISTEMP,1992-04-06,0.24 596 | GCAG,1992-03-06,0.4333 597 | GISTEMP,1992-03-06,0.47 598 | GCAG,1992-02-06,0.4485 599 | GISTEMP,1992-02-06,0.42 600 | GCAG,1992-01-06,0.4721 601 | GISTEMP,1992-01-06,0.45 602 | GCAG,1991-12-06,0.3064 603 | GISTEMP,1991-12-06,0.33 604 | GCAG,1991-11-06,0.3175 605 | GISTEMP,1991-11-06,0.31 606 | GCAG,1991-10-06,0.3292 607 | GISTEMP,1991-10-06,0.32 608 | GCAG,1991-09-06,0.3863 609 | GISTEMP,1991-09-06,0.5 610 | GCAG,1991-08-06,0.3880 611 | GISTEMP,1991-08-06,0.42 612 | GCAG,1991-07-06,0.4462 613 | GISTEMP,1991-07-06,0.51 614 | GCAG,1991-06-06,0.4813 615 | GISTEMP,1991-06-06,0.54 616 | GCAG,1991-05-06,0.4107 617 | GISTEMP,1991-05-06,0.39 618 | GCAG,1991-04-06,0.5168 619 | GISTEMP,1991-04-06,0.53 620 | GCAG,1991-03-06,0.3658 621 | GISTEMP,1991-03-06,0.36 622 | GCAG,1991-02-06,0.4661 623 | GISTEMP,1991-02-06,0.51 624 | GCAG,1991-01-06,0.4512 625 | GISTEMP,1991-01-06,0.42 626 | GCAG,1990-12-06,0.4481 627 | GISTEMP,1990-12-06,0.42 628 | GCAG,1990-11-06,0.4797 629 | GISTEMP,1990-11-06,0.46 630 | GCAG,1990-10-06,0.4277 631 | GISTEMP,1990-10-06,0.43 632 | GCAG,1990-09-06,0.3144 633 | GISTEMP,1990-09-06,0.3 634 | GCAG,1990-08-06,0.3479 635 | GISTEMP,1990-08-06,0.3 636 | GCAG,1990-07-06,0.3453 637 | GISTEMP,1990-07-06,0.44 638 | GCAG,1990-06-06,0.4114 639 | GISTEMP,1990-06-06,0.38 640 | GCAG,1990-05-06,0.4274 641 | GISTEMP,1990-05-06,0.46 642 | GCAG,1990-04-06,0.4907 643 | GISTEMP,1990-04-06,0.55 644 | GCAG,1990-03-06,0.7328 645 | GISTEMP,1990-03-06,0.76 646 | GCAG,1990-02-06,0.4072 647 | GISTEMP,1990-02-06,0.41 648 | GCAG,1990-01-06,0.3613 649 | GISTEMP,1990-01-06,0.41 650 | GCAG,1989-12-06,0.4013 651 | GISTEMP,1989-12-06,0.37 652 | GCAG,1989-11-06,0.2541 653 | GISTEMP,1989-11-06,0.21 654 | GCAG,1989-10-06,0.3044 655 | GISTEMP,1989-10-06,0.32 656 | GCAG,1989-09-06,0.3019 657 | GISTEMP,1989-09-06,0.37 658 | GCAG,1989-08-06,0.3021 659 | GISTEMP,1989-08-06,0.36 660 | GCAG,1989-07-06,0.3016 661 | GISTEMP,1989-07-06,0.34 662 | GCAG,1989-06-06,0.2727 663 | GISTEMP,1989-06-06,0.15 664 | GCAG,1989-05-06,0.2779 665 | GISTEMP,1989-05-06,0.17 666 | GCAG,1989-04-06,0.2891 667 | GISTEMP,1989-04-06,0.33 668 | GCAG,1989-03-06,0.3360 669 | GISTEMP,1989-03-06,0.36 670 | GCAG,1989-02-06,0.3072 671 | GISTEMP,1989-02-06,0.35 672 | GCAG,1989-01-06,0.2157 673 | GISTEMP,1989-01-06,0.16 674 | GCAG,1988-12-06,0.3626 675 | GISTEMP,1988-12-06,0.34 676 | GCAG,1988-11-06,0.2291 677 | GISTEMP,1988-11-06,0.13 678 | GCAG,1988-10-06,0.3009 679 | GISTEMP,1988-10-06,0.4 680 | GCAG,1988-09-06,0.3211 681 | GISTEMP,1988-09-06,0.42 682 | GCAG,1988-08-06,0.3199 683 | GISTEMP,1988-08-06,0.46 684 | GCAG,1988-07-06,0.3431 685 | GISTEMP,1988-07-06,0.35 686 | GCAG,1988-06-06,0.3865 687 | GISTEMP,1988-06-06,0.42 688 | GCAG,1988-05-06,0.3811 689 | GISTEMP,1988-05-06,0.44 690 | GCAG,1988-04-06,0.4426 691 | GISTEMP,1988-04-06,0.45 692 | GCAG,1988-03-06,0.4828 693 | GISTEMP,1988-03-06,0.49 694 | GCAG,1988-02-06,0.3901 695 | GISTEMP,1988-02-06,0.42 696 | GCAG,1988-01-06,0.5487 697 | GISTEMP,1988-01-06,0.57 698 | GCAG,1987-12-06,0.5316 699 | GISTEMP,1987-12-06,0.47 700 | GCAG,1987-11-06,0.3306 701 | GISTEMP,1987-11-06,0.25 702 | GCAG,1987-10-06,0.3347 703 | GISTEMP,1987-10-06,0.32 704 | GCAG,1987-09-06,0.4321 705 | GISTEMP,1987-09-06,0.39 706 | GCAG,1987-08-06,0.3832 707 | GISTEMP,1987-08-06,0.28 708 | GCAG,1987-07-06,0.4182 709 | GISTEMP,1987-07-06,0.46 710 | GCAG,1987-06-06,0.3013 711 | GISTEMP,1987-06-06,0.36 712 | GCAG,1987-05-06,0.3339 713 | GISTEMP,1987-05-06,0.26 714 | GCAG,1987-04-06,0.3009 715 | GISTEMP,1987-04-06,0.24 716 | GCAG,1987-03-06,0.2541 717 | GISTEMP,1987-03-06,0.17 718 | GCAG,1987-02-06,0.5028 719 | GISTEMP,1987-02-06,0.46 720 | GCAG,1987-01-06,0.3115 721 | GISTEMP,1987-01-06,0.36 722 | GCAG,1986-12-06,0.2179 723 | GISTEMP,1986-12-06,0.16 724 | GCAG,1986-11-06,0.1548 725 | GISTEMP,1986-11-06,0.11 726 | GCAG,1986-10-06,0.2066 727 | GISTEMP,1986-10-06,0.14 728 | GCAG,1986-09-06,0.1716 729 | GISTEMP,1986-09-06,0.02 730 | GCAG,1986-08-06,0.1698 731 | GISTEMP,1986-08-06,0.12 732 | GCAG,1986-07-06,0.1686 733 | GISTEMP,1986-07-06,0.13 734 | GCAG,1986-06-06,0.2534 735 | GISTEMP,1986-06-06,0.12 736 | GCAG,1986-05-06,0.2507 737 | GISTEMP,1986-05-06,0.26 738 | GCAG,1986-04-06,0.2613 739 | GISTEMP,1986-04-06,0.26 740 | GCAG,1986-03-06,0.2966 741 | GISTEMP,1986-03-06,0.29 742 | GCAG,1986-02-06,0.2788 743 | GISTEMP,1986-02-06,0.39 744 | GCAG,1986-01-06,0.3249 745 | GISTEMP,1986-01-06,0.3 746 | GCAG,1985-12-06,0.1978 747 | GISTEMP,1985-12-06,0.15 748 | GCAG,1985-11-06,0.1181 749 | GISTEMP,1985-11-06,0.09 750 | GCAG,1985-10-06,0.1303 751 | GISTEMP,1985-10-06,0.11 752 | GCAG,1985-09-06,0.1010 753 | GISTEMP,1985-09-06,0.14 754 | GCAG,1985-08-06,0.1287 755 | GISTEMP,1985-08-06,0.15 756 | GCAG,1985-07-06,0.0779 757 | GISTEMP,1985-07-06,0.0 758 | GCAG,1985-06-06,0.1290 759 | GISTEMP,1985-06-06,0.17 760 | GCAG,1985-05-06,0.1959 761 | GISTEMP,1985-05-06,0.17 762 | GCAG,1985-04-06,0.1488 763 | GISTEMP,1985-04-06,0.11 764 | GCAG,1985-03-06,0.1875 765 | GISTEMP,1985-03-06,0.17 766 | GCAG,1985-02-06,0.0176 767 | GISTEMP,1985-02-06,-0.06 768 | GCAG,1985-01-06,0.1783 769 | GISTEMP,1985-01-06,0.21 770 | GCAG,1984-12-06,-0.0926 771 | GISTEMP,1984-12-06,-0.06 772 | GCAG,1984-11-06,0.0365 773 | GISTEMP,1984-11-06,0.04 774 | GCAG,1984-10-06,0.1187 775 | GISTEMP,1984-10-06,0.15 776 | GCAG,1984-09-06,0.1431 777 | GISTEMP,1984-09-06,0.2 778 | GCAG,1984-08-06,0.1687 779 | GISTEMP,1984-08-06,0.15 780 | GCAG,1984-07-06,0.1193 781 | GISTEMP,1984-07-06,0.16 782 | GCAG,1984-06-06,0.1306 783 | GISTEMP,1984-06-06,0.04 784 | GCAG,1984-05-06,0.2834 785 | GISTEMP,1984-05-06,0.33 786 | GCAG,1984-04-06,0.1503 787 | GISTEMP,1984-04-06,0.08 788 | GCAG,1984-03-06,0.2720 789 | GISTEMP,1984-03-06,0.29 790 | GCAG,1984-02-06,0.1753 791 | GISTEMP,1984-02-06,0.17 792 | GCAG,1984-01-06,0.2831 793 | GISTEMP,1984-01-06,0.3 794 | GCAG,1983-12-06,0.2748 795 | GISTEMP,1983-12-06,0.17 796 | GCAG,1983-11-06,0.4313 797 | GISTEMP,1983-11-06,0.3 798 | GCAG,1983-10-06,0.2113 799 | GISTEMP,1983-10-06,0.15 800 | GCAG,1983-09-06,0.3175 801 | GISTEMP,1983-09-06,0.38 802 | GCAG,1983-08-06,0.3228 803 | GISTEMP,1983-08-06,0.3 804 | GCAG,1983-07-06,0.2663 805 | GISTEMP,1983-07-06,0.15 806 | GCAG,1983-06-06,0.2629 807 | GISTEMP,1983-06-06,0.18 808 | GCAG,1983-05-06,0.2881 809 | GISTEMP,1983-05-06,0.35 810 | GCAG,1983-04-06,0.2918 811 | GISTEMP,1983-04-06,0.3 812 | GCAG,1983-03-06,0.4256 813 | GISTEMP,1983-03-06,0.42 814 | GCAG,1983-02-06,0.4834 815 | GISTEMP,1983-02-06,0.4 816 | GCAG,1983-01-06,0.5169 817 | GISTEMP,1983-01-06,0.52 818 | GCAG,1982-12-06,0.4355 819 | GISTEMP,1982-12-06,0.43 820 | GCAG,1982-11-06,0.1510 821 | GISTEMP,1982-11-06,0.14 822 | GCAG,1982-10-06,0.1771 823 | GISTEMP,1982-10-06,0.13 824 | GCAG,1982-09-06,0.2330 825 | GISTEMP,1982-09-06,0.15 826 | GCAG,1982-08-06,0.1406 827 | GISTEMP,1982-08-06,0.08 828 | GCAG,1982-07-06,0.1436 829 | GISTEMP,1982-07-06,0.13 830 | GCAG,1982-06-06,0.1231 831 | GISTEMP,1982-06-06,0.05 832 | GCAG,1982-05-06,0.1923 833 | GISTEMP,1982-05-06,0.16 834 | GCAG,1982-04-06,0.2054 835 | GISTEMP,1982-04-06,0.1 836 | GCAG,1982-03-06,0.0833 837 | GISTEMP,1982-03-06,-0.01 838 | GCAG,1982-02-06,0.1593 839 | GISTEMP,1982-02-06,0.14 840 | GCAG,1982-01-06,0.1342 841 | GISTEMP,1982-01-06,0.09 842 | GCAG,1981-12-06,0.4200 843 | GISTEMP,1981-12-06,0.4 844 | GCAG,1981-11-06,0.2119 845 | GISTEMP,1981-11-06,0.21 846 | GCAG,1981-10-06,0.1687 847 | GISTEMP,1981-10-06,0.13 848 | GCAG,1981-09-06,0.1860 849 | GISTEMP,1981-09-06,0.17 850 | GCAG,1981-08-06,0.2428 851 | GISTEMP,1981-08-06,0.35 852 | GCAG,1981-07-06,0.2268 853 | GISTEMP,1981-07-06,0.35 854 | GCAG,1981-06-06,0.2853 855 | GISTEMP,1981-06-06,0.31 856 | GCAG,1981-05-06,0.2620 857 | GISTEMP,1981-05-06,0.25 858 | GCAG,1981-04-06,0.3579 859 | GISTEMP,1981-04-06,0.32 860 | GCAG,1981-03-06,0.4083 861 | GISTEMP,1981-03-06,0.48 862 | GCAG,1981-02-06,0.3629 863 | GISTEMP,1981-02-06,0.41 864 | GCAG,1981-01-06,0.4656 865 | GISTEMP,1981-01-06,0.56 866 | GCAG,1980-12-06,0.2674 867 | GISTEMP,1980-12-06,0.21 868 | GCAG,1980-11-06,0.3319 869 | GISTEMP,1980-11-06,0.3 870 | GCAG,1980-10-06,0.1821 871 | GISTEMP,1980-10-06,0.2 872 | GCAG,1980-09-06,0.2008 873 | GISTEMP,1980-09-06,0.21 874 | GCAG,1980-08-06,0.1957 875 | GISTEMP,1980-08-06,0.24 876 | GCAG,1980-07-06,0.2172 877 | GISTEMP,1980-07-06,0.28 878 | GCAG,1980-06-06,0.2474 879 | GISTEMP,1980-06-06,0.16 880 | GCAG,1980-05-06,0.3160 881 | GISTEMP,1980-05-06,0.34 882 | GCAG,1980-04-06,0.3082 883 | GISTEMP,1980-04-06,0.32 884 | GCAG,1980-03-06,0.2389 885 | GISTEMP,1980-03-06,0.29 886 | GCAG,1980-02-06,0.3506 887 | GISTEMP,1980-02-06,0.42 888 | GCAG,1980-01-06,0.3080 889 | GISTEMP,1980-01-06,0.3 890 | GCAG,1979-12-06,0.5032 891 | GISTEMP,1979-12-06,0.47 892 | GCAG,1979-11-06,0.2953 893 | GISTEMP,1979-11-06,0.29 894 | GCAG,1979-10-06,0.2945 895 | GISTEMP,1979-10-06,0.26 896 | GCAG,1979-09-06,0.2519 897 | GISTEMP,1979-09-06,0.27 898 | GCAG,1979-08-06,0.2263 899 | GISTEMP,1979-08-06,0.14 900 | GCAG,1979-07-06,0.1746 901 | GISTEMP,1979-07-06,0.03 902 | GCAG,1979-06-06,0.2183 903 | GISTEMP,1979-06-06,0.14 904 | GCAG,1979-05-06,0.1569 905 | GISTEMP,1979-05-06,0.06 906 | GCAG,1979-04-06,0.1112 907 | GISTEMP,1979-04-06,0.13 908 | GCAG,1979-03-06,0.2430 909 | GISTEMP,1979-03-06,0.19 910 | GCAG,1979-02-06,0.0922 911 | GISTEMP,1979-02-06,-0.09 912 | GCAG,1979-01-06,0.1602 913 | GISTEMP,1979-01-06,0.14 914 | GCAG,1978-12-06,0.1512 915 | GISTEMP,1978-12-06,0.11 916 | GCAG,1978-11-06,0.2245 917 | GISTEMP,1978-11-06,0.16 918 | GCAG,1978-10-06,0.0646 919 | GISTEMP,1978-10-06,0.0 920 | GCAG,1978-09-06,0.0748 921 | GISTEMP,1978-09-06,0.05 922 | GCAG,1978-08-06,0.0033 923 | GISTEMP,1978-08-06,-0.18 924 | GCAG,1978-07-06,0.0699 925 | GISTEMP,1978-07-06,0.07 926 | GCAG,1978-06-06,0.0532 927 | GISTEMP,1978-06-06,-0.03 928 | GCAG,1978-05-06,0.0596 929 | GISTEMP,1978-05-06,0.07 930 | GCAG,1978-04-06,0.1324 931 | GISTEMP,1978-04-06,0.15 932 | GCAG,1978-03-06,0.2228 933 | GISTEMP,1978-03-06,0.21 934 | GCAG,1978-02-06,0.1306 935 | GISTEMP,1978-02-06,0.14 936 | GCAG,1978-01-06,0.1606 937 | GISTEMP,1978-01-06,0.08 938 | GCAG,1977-12-06,0.1124 939 | GISTEMP,1977-12-06,0.05 940 | GCAG,1977-11-06,0.2603 941 | GISTEMP,1977-11-06,0.2 942 | GCAG,1977-10-06,0.1189 943 | GISTEMP,1977-10-06,0.04 944 | GCAG,1977-09-06,0.1867 945 | GISTEMP,1977-09-06,0.02 946 | GCAG,1977-08-06,0.1418 947 | GISTEMP,1977-08-06,0.19 948 | GCAG,1977-07-06,0.1737 949 | GISTEMP,1977-07-06,0.23 950 | GCAG,1977-06-06,0.2474 951 | GISTEMP,1977-06-06,0.25 952 | GCAG,1977-05-06,0.2368 953 | GISTEMP,1977-05-06,0.3 954 | GCAG,1977-04-06,0.2820 955 | GISTEMP,1977-04-06,0.27 956 | GCAG,1977-03-06,0.3109 957 | GISTEMP,1977-03-06,0.25 958 | GCAG,1977-02-06,0.2384 959 | GISTEMP,1977-02-06,0.2 960 | GCAG,1977-01-06,0.0639 961 | GISTEMP,1977-01-06,0.18 962 | GCAG,1976-12-06,0.0906 963 | GISTEMP,1976-12-06,0.09 964 | GCAG,1976-11-06,-0.0432 965 | GISTEMP,1976-11-06,-0.06 966 | GCAG,1976-10-06,-0.1821 967 | GISTEMP,1976-10-06,-0.26 968 | GCAG,1976-09-06,-0.0426 969 | GISTEMP,1976-09-06,-0.09 970 | GCAG,1976-08-06,-0.0894 971 | GISTEMP,1976-08-06,-0.18 972 | GCAG,1976-07-06,-0.0846 973 | GISTEMP,1976-07-06,-0.12 974 | GCAG,1976-06-06,-0.0740 975 | GISTEMP,1976-06-06,-0.15 976 | GCAG,1976-05-06,-0.1228 977 | GISTEMP,1976-05-06,-0.23 978 | GCAG,1976-04-06,-0.0223 979 | GISTEMP,1976-04-06,-0.1 980 | GCAG,1976-03-06,-0.2394 981 | GISTEMP,1976-03-06,-0.21 982 | GCAG,1976-02-06,-0.1221 983 | GISTEMP,1976-02-06,-0.06 984 | GCAG,1976-01-06,-0.0181 985 | GISTEMP,1976-01-06,0.0 986 | GCAG,1975-12-06,-0.0895 987 | GISTEMP,1975-12-06,-0.17 988 | GCAG,1975-11-06,-0.1450 989 | GISTEMP,1975-11-06,-0.16 990 | GCAG,1975-10-06,-0.1236 991 | GISTEMP,1975-10-06,-0.09 992 | GCAG,1975-09-06,0.0170 993 | GISTEMP,1975-09-06,-0.03 994 | GCAG,1975-08-06,-0.0671 995 | GISTEMP,1975-08-06,-0.2 996 | GCAG,1975-07-06,0.0055 997 | GISTEMP,1975-07-06,-0.03 998 | GCAG,1975-06-06,0.0342 999 | GISTEMP,1975-06-06,-0.02 1000 | GCAG,1975-05-06,0.0693 1001 | GISTEMP,1975-05-06,0.16 1002 | GCAG,1975-04-06,0.0779 1003 | GISTEMP,1975-04-06,0.06 1004 | GCAG,1975-03-06,0.1096 1005 | GISTEMP,1975-03-06,0.14 1006 | GCAG,1975-02-06,0.0326 1007 | GISTEMP,1975-02-06,0.07 1008 | GCAG,1975-01-06,0.1201 1009 | GISTEMP,1975-01-06,0.07 1010 | GCAG,1974-12-06,-0.0976 1011 | GISTEMP,1974-12-06,-0.09 1012 | GCAG,1974-11-06,-0.0671 1013 | GISTEMP,1974-11-06,-0.07 1014 | GCAG,1974-10-06,-0.0831 1015 | GISTEMP,1974-10-06,-0.07 1016 | GCAG,1974-09-06,-0.0428 1017 | GISTEMP,1974-09-06,-0.12 1018 | GCAG,1974-08-06,0.0131 1019 | GISTEMP,1974-08-06,0.12 1020 | GCAG,1974-07-06,0.0195 1021 | GISTEMP,1974-07-06,-0.03 1022 | GCAG,1974-06-06,-0.0375 1023 | GISTEMP,1974-06-06,-0.05 1024 | GCAG,1974-05-06,-0.0246 1025 | GISTEMP,1974-05-06,-0.01 1026 | GCAG,1974-04-06,-0.0420 1027 | GISTEMP,1974-04-06,-0.1 1028 | GCAG,1974-03-06,-0.0509 1029 | GISTEMP,1974-03-06,-0.05 1030 | GCAG,1974-02-06,-0.2548 1031 | GISTEMP,1974-02-06,-0.28 1032 | GCAG,1974-01-06,-0.1953 1033 | GISTEMP,1974-01-06,-0.14 1034 | GCAG,1973-12-06,0.0277 1035 | GISTEMP,1973-12-06,-0.06 1036 | GCAG,1973-11-06,0.0220 1037 | GISTEMP,1973-11-06,0.06 1038 | GCAG,1973-10-06,0.0446 1039 | GISTEMP,1973-10-06,0.12 1040 | GCAG,1973-09-06,0.0563 1041 | GISTEMP,1973-09-06,0.06 1042 | GCAG,1973-08-06,0.0774 1043 | GISTEMP,1973-08-06,0.02 1044 | GCAG,1973-07-06,0.1163 1045 | GISTEMP,1973-07-06,0.09 1046 | GCAG,1973-06-06,0.1972 1047 | GISTEMP,1973-06-06,0.16 1048 | GCAG,1973-05-06,0.2152 1049 | GISTEMP,1973-05-06,0.26 1050 | GCAG,1973-04-06,0.2502 1051 | GISTEMP,1973-04-06,0.25 1052 | GCAG,1973-03-06,0.3305 1053 | GISTEMP,1973-03-06,0.26 1054 | GCAG,1973-02-06,0.3722 1055 | GISTEMP,1973-02-06,0.3 1056 | GCAG,1973-01-06,0.2590 1057 | GISTEMP,1973-01-06,0.28 1058 | GCAG,1972-12-06,0.2529 1059 | GISTEMP,1972-12-06,0.18 1060 | GCAG,1972-11-06,0.0799 1061 | GISTEMP,1972-11-06,0.03 1062 | GCAG,1972-10-06,0.0891 1063 | GISTEMP,1972-10-06,0.09 1064 | GCAG,1972-09-06,0.0207 1065 | GISTEMP,1972-09-06,0.03 1066 | GCAG,1972-08-06,0.0863 1067 | GISTEMP,1972-08-06,0.18 1068 | GCAG,1972-07-06,0.0639 1069 | GISTEMP,1972-07-06,0.02 1070 | GCAG,1972-06-06,0.0765 1071 | GISTEMP,1972-06-06,0.04 1072 | GCAG,1972-05-06,0.0147 1073 | GISTEMP,1972-05-06,-0.03 1074 | GCAG,1972-04-06,0.0357 1075 | GISTEMP,1972-04-06,-0.01 1076 | GCAG,1972-03-06,0.0014 1077 | GISTEMP,1972-03-06,0.02 1078 | GCAG,1972-02-06,-0.1624 1079 | GISTEMP,1972-02-06,-0.17 1080 | GCAG,1972-01-06,-0.2415 1081 | GISTEMP,1972-01-06,-0.24 1082 | GCAG,1971-12-06,-0.0198 1083 | GISTEMP,1971-12-06,-0.08 1084 | GCAG,1971-11-06,0.0363 1085 | GISTEMP,1971-11-06,-0.04 1086 | GCAG,1971-10-06,-0.0763 1087 | GISTEMP,1971-10-06,-0.05 1088 | GCAG,1971-09-06,-0.0443 1089 | GISTEMP,1971-09-06,-0.01 1090 | GCAG,1971-08-06,-0.0688 1091 | GISTEMP,1971-08-06,-0.03 1092 | GCAG,1971-07-06,-0.0630 1093 | GISTEMP,1971-07-06,-0.12 1094 | GCAG,1971-06-06,-0.1243 1095 | GISTEMP,1971-06-06,-0.18 1096 | GCAG,1971-05-06,-0.0899 1097 | GISTEMP,1971-05-06,-0.06 1098 | GCAG,1971-04-06,-0.1299 1099 | GISTEMP,1971-04-06,-0.09 1100 | GCAG,1971-03-06,-0.1412 1101 | GISTEMP,1971-03-06,-0.18 1102 | GCAG,1971-02-06,-0.2144 1103 | GISTEMP,1971-02-06,-0.2 1104 | GCAG,1971-01-06,-0.0045 1105 | GISTEMP,1971-01-06,-0.02 1106 | GCAG,1970-12-06,-0.0954 1107 | GISTEMP,1970-12-06,-0.13 1108 | GCAG,1970-11-06,0.0226 1109 | GISTEMP,1970-11-06,0.01 1110 | GCAG,1970-10-06,-0.0367 1111 | GISTEMP,1970-10-06,0.05 1112 | GCAG,1970-09-06,0.0077 1113 | GISTEMP,1970-09-06,0.11 1114 | GCAG,1970-08-06,-0.0198 1115 | GISTEMP,1970-08-06,-0.11 1116 | GCAG,1970-07-06,-0.0218 1117 | GISTEMP,1970-07-06,-0.04 1118 | GCAG,1970-06-06,0.0295 1119 | GISTEMP,1970-06-06,-0.03 1120 | GCAG,1970-05-06,0.0414 1121 | GISTEMP,1970-05-06,-0.05 1122 | GCAG,1970-04-06,0.1310 1123 | GISTEMP,1970-04-06,0.09 1124 | GCAG,1970-03-06,0.0317 1125 | GISTEMP,1970-03-06,0.08 1126 | GCAG,1970-02-06,0.2353 1127 | GISTEMP,1970-02-06,0.22 1128 | GCAG,1970-01-06,0.1214 1129 | GISTEMP,1970-01-06,0.09 1130 | GCAG,1969-12-06,0.2468 1131 | GISTEMP,1969-12-06,0.27 1132 | GCAG,1969-11-06,0.1896 1133 | GISTEMP,1969-11-06,0.12 1134 | GCAG,1969-10-06,0.0713 1135 | GISTEMP,1969-10-06,0.11 1136 | GCAG,1969-09-06,0.0843 1137 | GISTEMP,1969-09-06,0.1 1138 | GCAG,1969-08-06,0.0954 1139 | GISTEMP,1969-08-06,0.03 1140 | GCAG,1969-07-06,0.0933 1141 | GISTEMP,1969-07-06,-0.01 1142 | GCAG,1969-06-06,0.0766 1143 | GISTEMP,1969-06-06,0.05 1144 | GCAG,1969-05-06,0.1756 1145 | GISTEMP,1969-05-06,0.2 1146 | GCAG,1969-04-06,0.1935 1147 | GISTEMP,1969-04-06,0.19 1148 | GCAG,1969-03-06,0.1222 1149 | GISTEMP,1969-03-06,0.0 1150 | GCAG,1969-02-06,-0.1038 1151 | GISTEMP,1969-02-06,-0.14 1152 | GCAG,1969-01-06,-0.1295 1153 | GISTEMP,1969-01-06,-0.11 1154 | GCAG,1968-12-06,-0.0431 1155 | GISTEMP,1968-12-06,-0.14 1156 | GCAG,1968-11-06,0.0156 1157 | GISTEMP,1968-11-06,-0.04 1158 | GCAG,1968-10-06,0.0471 1159 | GISTEMP,1968-10-06,0.12 1160 | GCAG,1968-09-06,-0.0112 1161 | GISTEMP,1968-09-06,-0.18 1162 | GCAG,1968-08-06,-0.0143 1163 | GISTEMP,1968-08-06,-0.11 1164 | GCAG,1968-07-06,-0.0197 1165 | GISTEMP,1968-07-06,-0.11 1166 | GCAG,1968-06-06,-0.0161 1167 | GISTEMP,1968-06-06,-0.06 1168 | GCAG,1968-05-06,-0.0803 1169 | GISTEMP,1968-05-06,-0.1 1170 | GCAG,1968-04-06,-0.0703 1171 | GISTEMP,1968-04-06,-0.05 1172 | GCAG,1968-03-06,0.1508 1173 | GISTEMP,1968-03-06,0.21 1174 | GCAG,1968-02-06,-0.1266 1175 | GISTEMP,1968-02-06,-0.15 1176 | GCAG,1968-01-06,-0.1865 1177 | GISTEMP,1968-01-06,-0.23 1178 | GCAG,1967-12-06,-0.0400 1179 | GISTEMP,1967-12-06,-0.02 1180 | GCAG,1967-11-06,-0.0212 1181 | GISTEMP,1967-11-06,-0.06 1182 | GCAG,1967-10-06,0.1288 1183 | GISTEMP,1967-10-06,0.06 1184 | GCAG,1967-09-06,-0.0317 1185 | GISTEMP,1967-09-06,-0.04 1186 | GCAG,1967-08-06,-0.0055 1187 | GISTEMP,1967-08-06,0.02 1188 | GCAG,1967-07-06,-0.0177 1189 | GISTEMP,1967-07-06,0.01 1190 | GCAG,1967-06-06,-0.0299 1191 | GISTEMP,1967-06-06,-0.08 1192 | GCAG,1967-05-06,0.1243 1193 | GISTEMP,1967-05-06,0.14 1194 | GCAG,1967-04-06,0.0056 1195 | GISTEMP,1967-04-06,-0.05 1196 | GCAG,1967-03-06,0.0029 1197 | GISTEMP,1967-03-06,0.03 1198 | GCAG,1967-02-06,-0.1656 1199 | GISTEMP,1967-02-06,-0.2 1200 | GCAG,1967-01-06,-0.1068 1201 | GISTEMP,1967-01-06,-0.06 1202 | GCAG,1966-12-06,-0.1244 1203 | GISTEMP,1966-12-06,-0.06 1204 | GCAG,1966-11-06,-0.0465 1205 | GISTEMP,1966-11-06,-0.02 1206 | GCAG,1966-10-06,-0.0592 1207 | GISTEMP,1966-10-06,-0.15 1208 | GCAG,1966-09-06,0.0261 1209 | GISTEMP,1966-09-06,-0.01 1210 | GCAG,1966-08-06,0.0191 1211 | GISTEMP,1966-08-06,-0.1 1212 | GCAG,1966-07-06,0.0667 1213 | GISTEMP,1966-07-06,0.09 1214 | GCAG,1966-06-06,0.0577 1215 | GISTEMP,1966-06-06,0.02 1216 | GCAG,1966-05-06,-0.0359 1217 | GISTEMP,1966-05-06,-0.1 1218 | GCAG,1966-04-06,-0.0908 1219 | GISTEMP,1966-04-06,-0.13 1220 | GCAG,1966-03-06,-0.0025 1221 | GISTEMP,1966-03-06,0.04 1222 | GCAG,1966-02-06,-0.0373 1223 | GISTEMP,1966-02-06,0.0 1224 | GCAG,1966-01-06,-0.0458 1225 | GISTEMP,1966-01-06,-0.16 1226 | GCAG,1965-12-06,-0.0124 1227 | GISTEMP,1965-12-06,-0.05 1228 | GCAG,1965-11-06,-0.0900 1229 | GISTEMP,1965-11-06,-0.06 1230 | GCAG,1965-10-06,0.0238 1231 | GISTEMP,1965-10-06,-0.04 1232 | GCAG,1965-09-06,-0.0503 1233 | GISTEMP,1965-09-06,-0.15 1234 | GCAG,1965-08-06,-0.0464 1235 | GISTEMP,1965-08-06,-0.01 1236 | GCAG,1965-07-06,-0.0841 1237 | GISTEMP,1965-07-06,-0.12 1238 | GCAG,1965-06-06,-0.0434 1239 | GISTEMP,1965-06-06,-0.08 1240 | GCAG,1965-05-06,-0.0787 1241 | GISTEMP,1965-05-06,-0.14 1242 | GCAG,1965-04-06,-0.1875 1243 | GISTEMP,1965-04-06,-0.2 1244 | GCAG,1965-03-06,-0.1005 1245 | GISTEMP,1965-03-06,-0.11 1246 | GCAG,1965-02-06,-0.1966 1247 | GISTEMP,1965-02-06,-0.17 1248 | GCAG,1965-01-06,-0.0699 1249 | GISTEMP,1965-01-06,-0.09 1250 | GCAG,1964-12-06,-0.2651 1251 | GISTEMP,1964-12-06,-0.3 1252 | GCAG,1964-11-06,-0.2017 1253 | GISTEMP,1964-11-06,-0.21 1254 | GCAG,1964-10-06,-0.2665 1255 | GISTEMP,1964-10-06,-0.3 1256 | GCAG,1964-09-06,-0.2093 1257 | GISTEMP,1964-09-06,-0.28 1258 | GCAG,1964-08-06,-0.1669 1259 | GISTEMP,1964-08-06,-0.2 1260 | GCAG,1964-07-06,-0.1111 1261 | GISTEMP,1964-07-06,-0.07 1262 | GCAG,1964-06-06,-0.0931 1263 | GISTEMP,1964-06-06,-0.07 1264 | GCAG,1964-05-06,-0.0980 1265 | GISTEMP,1964-05-06,-0.25 1266 | GCAG,1964-04-06,-0.1847 1267 | GISTEMP,1964-04-06,-0.3 1268 | GCAG,1964-03-06,-0.1421 1269 | GISTEMP,1964-03-06,-0.22 1270 | GCAG,1964-02-06,-0.1048 1271 | GISTEMP,1964-02-06,-0.12 1272 | GCAG,1964-01-06,0.0488 1273 | GISTEMP,1964-01-06,-0.06 1274 | GCAG,1963-12-06,0.0812 1275 | GISTEMP,1963-12-06,0.0 1276 | GCAG,1963-11-06,0.1947 1277 | GISTEMP,1963-11-06,0.15 1278 | GCAG,1963-10-06,0.2148 1279 | GISTEMP,1963-10-06,0.15 1280 | GCAG,1963-09-06,0.1629 1281 | GISTEMP,1963-09-06,0.2 1282 | GCAG,1963-08-06,0.1579 1283 | GISTEMP,1963-08-06,0.25 1284 | GCAG,1963-07-06,0.1382 1285 | GISTEMP,1963-07-06,0.08 1286 | GCAG,1963-06-06,0.0499 1287 | GISTEMP,1963-06-06,0.03 1288 | GCAG,1963-05-06,0.0130 1289 | GISTEMP,1963-05-06,-0.09 1290 | GCAG,1963-04-06,-0.0041 1291 | GISTEMP,1963-04-06,-0.05 1292 | GCAG,1963-03-06,-0.0216 1293 | GISTEMP,1963-03-06,-0.13 1294 | GCAG,1963-02-06,0.2566 1295 | GISTEMP,1963-02-06,0.19 1296 | GCAG,1963-01-06,0.0376 1297 | GISTEMP,1963-01-06,-0.03 1298 | GCAG,1962-12-06,0.0881 1299 | GISTEMP,1962-12-06,-0.01 1300 | GCAG,1962-11-06,0.0745 1301 | GISTEMP,1962-11-06,0.06 1302 | GCAG,1962-10-06,0.0796 1303 | GISTEMP,1962-10-06,-0.03 1304 | GCAG,1962-09-06,0.0606 1305 | GISTEMP,1962-09-06,-0.01 1306 | GCAG,1962-08-06,0.0552 1307 | GISTEMP,1962-08-06,-0.02 1308 | GCAG,1962-07-06,0.0905 1309 | GISTEMP,1962-07-06,-0.02 1310 | GCAG,1962-06-06,0.0574 1311 | GISTEMP,1962-06-06,0.06 1312 | GCAG,1962-05-06,0.0589 1313 | GISTEMP,1962-05-06,-0.06 1314 | GCAG,1962-04-06,0.0763 1315 | GISTEMP,1962-04-06,0.05 1316 | GCAG,1962-03-06,0.1197 1317 | GISTEMP,1962-03-06,0.12 1318 | GCAG,1962-02-06,0.1698 1319 | GISTEMP,1962-02-06,0.14 1320 | GCAG,1962-01-06,0.1345 1321 | GISTEMP,1962-01-06,0.08 1322 | GCAG,1961-12-06,-0.0171 1323 | GISTEMP,1961-12-06,-0.15 1324 | GCAG,1961-11-06,0.0160 1325 | GISTEMP,1961-11-06,0.03 1326 | GCAG,1961-10-06,-0.0350 1327 | GISTEMP,1961-10-06,0.0 1328 | GCAG,1961-09-06,-0.0041 1329 | GISTEMP,1961-09-06,0.05 1330 | GCAG,1961-08-06,0.0320 1331 | GISTEMP,1961-08-06,0.02 1332 | GCAG,1961-07-06,0.0350 1333 | GISTEMP,1961-07-06,-0.03 1334 | GCAG,1961-06-06,0.1479 1335 | GISTEMP,1961-06-06,0.12 1336 | GCAG,1961-05-06,0.1614 1337 | GISTEMP,1961-05-06,0.13 1338 | GCAG,1961-04-06,0.1335 1339 | GISTEMP,1961-04-06,0.15 1340 | GCAG,1961-03-06,0.1646 1341 | GISTEMP,1961-03-06,0.09 1342 | GCAG,1961-02-06,0.1768 1343 | GISTEMP,1961-02-06,0.18 1344 | GCAG,1961-01-06,0.1188 1345 | GISTEMP,1961-01-06,0.07 1346 | GCAG,1960-12-06,0.2278 1347 | GISTEMP,1960-12-06,0.18 1348 | GCAG,1960-11-06,-0.0484 1349 | GISTEMP,1960-11-06,-0.11 1350 | GCAG,1960-10-06,0.0390 1351 | GISTEMP,1960-10-06,0.07 1352 | GCAG,1960-09-06,0.0638 1353 | GISTEMP,1960-09-06,0.05 1354 | GCAG,1960-08-06,0.0461 1355 | GISTEMP,1960-08-06,-0.01 1356 | GCAG,1960-07-06,0.0339 1357 | GISTEMP,1960-07-06,-0.02 1358 | GCAG,1960-06-06,0.0772 1359 | GISTEMP,1960-06-06,0.01 1360 | GCAG,1960-05-06,-0.0841 1361 | GISTEMP,1960-05-06,-0.08 1362 | GCAG,1960-04-06,-0.0954 1363 | GISTEMP,1960-04-06,-0.16 1364 | GCAG,1960-03-06,-0.2041 1365 | GISTEMP,1960-03-06,-0.36 1366 | GCAG,1960-02-06,0.1858 1367 | GISTEMP,1960-02-06,0.14 1368 | GCAG,1960-01-06,0.0032 1369 | GISTEMP,1960-01-06,-0.01 1370 | GCAG,1959-12-06,-0.0343 1371 | GISTEMP,1959-12-06,-0.03 1372 | GCAG,1959-11-06,-0.0790 1373 | GISTEMP,1959-11-06,-0.09 1374 | GCAG,1959-10-06,-0.0137 1375 | GISTEMP,1959-10-06,-0.09 1376 | GCAG,1959-09-06,0.0970 1377 | GISTEMP,1959-09-06,-0.06 1378 | GCAG,1959-08-06,0.0516 1379 | GISTEMP,1959-08-06,-0.01 1380 | GCAG,1959-07-06,0.0671 1381 | GISTEMP,1959-07-06,0.06 1382 | GCAG,1959-06-06,0.0849 1383 | GISTEMP,1959-06-06,0.02 1384 | GCAG,1959-05-06,0.0263 1385 | GISTEMP,1959-05-06,0.06 1386 | GCAG,1959-04-06,0.1180 1387 | GISTEMP,1959-04-06,0.16 1388 | GCAG,1959-03-06,0.2041 1389 | GISTEMP,1959-03-06,0.19 1390 | GCAG,1959-02-06,0.0682 1391 | GISTEMP,1959-02-06,0.09 1392 | GCAG,1959-01-06,0.1250 1393 | GISTEMP,1959-01-06,0.06 1394 | GCAG,1958-12-06,0.1452 1395 | GISTEMP,1958-12-06,0.01 1396 | GCAG,1958-11-06,0.0896 1397 | GISTEMP,1958-11-06,0.02 1398 | GCAG,1958-10-06,0.0405 1399 | GISTEMP,1958-10-06,0.04 1400 | GCAG,1958-09-06,0.0186 1401 | GISTEMP,1958-09-06,-0.03 1402 | GCAG,1958-08-06,0.0528 1403 | GISTEMP,1958-08-06,-0.06 1404 | GCAG,1958-07-06,0.0649 1405 | GISTEMP,1958-07-06,0.06 1406 | GCAG,1958-06-06,0.0624 1407 | GISTEMP,1958-06-06,-0.05 1408 | GCAG,1958-05-06,0.1007 1409 | GISTEMP,1958-05-06,0.08 1410 | GCAG,1958-04-06,0.1140 1411 | GISTEMP,1958-04-06,0.01 1412 | GCAG,1958-03-06,0.1181 1413 | GISTEMP,1958-03-06,0.1 1414 | GCAG,1958-02-06,0.2103 1415 | GISTEMP,1958-02-06,0.24 1416 | GCAG,1958-01-06,0.2964 1417 | GISTEMP,1958-01-06,0.39 1418 | GCAG,1957-12-06,0.2290 1419 | GISTEMP,1957-12-06,0.16 1420 | GCAG,1957-11-06,0.1282 1421 | GISTEMP,1957-11-06,0.07 1422 | GCAG,1957-10-06,0.0143 1423 | GISTEMP,1957-10-06,0.01 1424 | GCAG,1957-09-06,0.0748 1425 | GISTEMP,1957-09-06,0.06 1426 | GCAG,1957-08-06,0.1302 1427 | GISTEMP,1957-08-06,0.14 1428 | GCAG,1957-07-06,0.0596 1429 | GISTEMP,1957-07-06,0.01 1430 | GCAG,1957-06-06,0.1577 1431 | GISTEMP,1957-06-06,0.16 1432 | GCAG,1957-05-06,0.1092 1433 | GISTEMP,1957-05-06,0.08 1434 | GCAG,1957-04-06,-0.0193 1435 | GISTEMP,1957-04-06,-0.04 1436 | GCAG,1957-03-06,-0.0680 1437 | GISTEMP,1957-03-06,-0.05 1438 | GCAG,1957-02-06,-0.1118 1439 | GISTEMP,1957-02-06,-0.05 1440 | GCAG,1957-01-06,-0.1178 1441 | GISTEMP,1957-01-06,-0.14 1442 | GCAG,1956-12-06,-0.1530 1443 | GISTEMP,1956-12-06,-0.1 1444 | GCAG,1956-11-06,-0.1564 1445 | GISTEMP,1956-11-06,-0.17 1446 | GCAG,1956-10-06,-0.1989 1447 | GISTEMP,1956-10-06,-0.24 1448 | GCAG,1956-09-06,-0.2520 1449 | GISTEMP,1956-09-06,-0.22 1450 | GCAG,1956-08-06,-0.1866 1451 | GISTEMP,1956-08-06,-0.25 1452 | GCAG,1956-07-06,-0.1346 1453 | GISTEMP,1956-07-06,-0.12 1454 | GCAG,1956-06-06,-0.1437 1455 | GISTEMP,1956-06-06,-0.15 1456 | GCAG,1956-05-06,-0.2275 1457 | GISTEMP,1956-05-06,-0.28 1458 | GCAG,1956-04-06,-0.2846 1459 | GISTEMP,1956-04-06,-0.26 1460 | GCAG,1956-03-06,-0.2003 1461 | GISTEMP,1956-03-06,-0.23 1462 | GCAG,1956-02-06,-0.2732 1463 | GISTEMP,1956-02-06,-0.25 1464 | GCAG,1956-01-06,-0.1773 1465 | GISTEMP,1956-01-06,-0.17 1466 | GCAG,1955-12-06,-0.2706 1467 | GISTEMP,1955-12-06,-0.32 1468 | GCAG,1955-11-06,-0.2373 1469 | GISTEMP,1955-11-06,-0.28 1470 | GCAG,1955-10-06,-0.1232 1471 | GISTEMP,1955-10-06,-0.05 1472 | GCAG,1955-09-06,-0.0923 1473 | GISTEMP,1955-09-06,-0.13 1474 | GCAG,1955-08-06,-0.0262 1475 | GISTEMP,1955-08-06,0.04 1476 | GCAG,1955-07-06,-0.0881 1477 | GISTEMP,1955-07-06,-0.09 1478 | GCAG,1955-06-06,-0.0695 1479 | GISTEMP,1955-06-06,-0.08 1480 | GCAG,1955-05-06,-0.1274 1481 | GISTEMP,1955-05-06,-0.2 1482 | GCAG,1955-04-06,-0.2383 1483 | GISTEMP,1955-04-06,-0.23 1484 | GCAG,1955-03-06,-0.3091 1485 | GISTEMP,1955-03-06,-0.36 1486 | GCAG,1955-02-06,-0.1303 1487 | GISTEMP,1955-02-06,-0.21 1488 | GCAG,1955-01-06,0.0879 1489 | GISTEMP,1955-01-06,0.11 1490 | GCAG,1954-12-06,-0.1859 1491 | GISTEMP,1954-12-06,-0.18 1492 | GCAG,1954-11-06,0.0390 1493 | GISTEMP,1954-11-06,0.08 1494 | GCAG,1954-10-06,-0.0694 1495 | GISTEMP,1954-10-06,-0.01 1496 | GCAG,1954-09-06,-0.0595 1497 | GISTEMP,1954-09-06,-0.07 1498 | GCAG,1954-08-06,-0.0913 1499 | GISTEMP,1954-08-06,-0.13 1500 | GCAG,1954-07-06,-0.1229 1501 | GISTEMP,1954-07-06,-0.16 1502 | GCAG,1954-06-06,-0.1161 1503 | GISTEMP,1954-06-06,-0.16 1504 | GCAG,1954-05-06,-0.2020 1505 | GISTEMP,1954-05-06,-0.2 1506 | GCAG,1954-04-06,-0.1766 1507 | GISTEMP,1954-04-06,-0.18 1508 | GCAG,1954-03-06,-0.0910 1509 | GISTEMP,1954-03-06,-0.12 1510 | GCAG,1954-02-06,-0.0865 1511 | GISTEMP,1954-02-06,-0.1 1512 | GCAG,1954-01-06,-0.2352 1513 | GISTEMP,1954-01-06,-0.28 1514 | GCAG,1953-12-06,0.0555 1515 | GISTEMP,1953-12-06,0.03 1516 | GCAG,1953-11-06,-0.0621 1517 | GISTEMP,1953-11-06,-0.05 1518 | GCAG,1953-10-06,0.0723 1519 | GISTEMP,1953-10-06,0.05 1520 | GCAG,1953-09-06,0.0632 1521 | GISTEMP,1953-09-06,0.06 1522 | GCAG,1953-08-06,0.0812 1523 | GISTEMP,1953-08-06,0.08 1524 | GCAG,1953-07-06,0.0662 1525 | GISTEMP,1953-07-06,0.02 1526 | GCAG,1953-06-06,0.1240 1527 | GISTEMP,1953-06-06,0.08 1528 | GCAG,1953-05-06,0.1440 1529 | GISTEMP,1953-05-06,0.08 1530 | GCAG,1953-04-06,0.1873 1531 | GISTEMP,1953-04-06,0.2 1532 | GCAG,1953-03-06,0.1539 1533 | GISTEMP,1953-03-06,0.11 1534 | GCAG,1953-02-06,0.1534 1535 | GISTEMP,1953-02-06,0.16 1536 | GCAG,1953-01-06,0.1037 1537 | GISTEMP,1953-01-06,0.09 1538 | GCAG,1952-12-06,-0.0080 1539 | GISTEMP,1952-12-06,-0.02 1540 | GCAG,1952-11-06,-0.1975 1541 | GISTEMP,1952-11-06,-0.17 1542 | GCAG,1952-10-06,-0.0366 1543 | GISTEMP,1952-10-06,-0.04 1544 | GCAG,1952-09-06,0.0653 1545 | GISTEMP,1952-09-06,0.08 1546 | GCAG,1952-08-06,0.0647 1547 | GISTEMP,1952-08-06,0.07 1548 | GCAG,1952-07-06,0.0735 1549 | GISTEMP,1952-07-06,0.05 1550 | GCAG,1952-06-06,0.0396 1551 | GISTEMP,1952-06-06,-0.04 1552 | GCAG,1952-05-06,0.0340 1553 | GISTEMP,1952-05-06,-0.05 1554 | GCAG,1952-04-06,0.0666 1555 | GISTEMP,1952-04-06,0.02 1556 | GCAG,1952-03-06,-0.0480 1557 | GISTEMP,1952-03-06,-0.1 1558 | GCAG,1952-02-06,0.0921 1559 | GISTEMP,1952-02-06,0.12 1560 | GCAG,1952-01-06,0.1520 1561 | GISTEMP,1952-01-06,0.16 1562 | GCAG,1951-12-06,0.2148 1563 | GISTEMP,1951-12-06,0.15 1564 | GCAG,1951-11-06,0.0260 1565 | GISTEMP,1951-11-06,0.0 1566 | GCAG,1951-10-06,0.1081 1567 | GISTEMP,1951-10-06,0.06 1568 | GCAG,1951-09-06,0.1322 1569 | GISTEMP,1951-09-06,0.07 1570 | GCAG,1951-08-06,0.1130 1571 | GISTEMP,1951-08-06,0.05 1572 | GCAG,1951-07-06,0.1101 1573 | GISTEMP,1951-07-06,0.0 1574 | GCAG,1951-06-06,0.0381 1575 | GISTEMP,1951-06-06,-0.05 1576 | GCAG,1951-05-06,0.0569 1577 | GISTEMP,1951-05-06,-0.02 1578 | GCAG,1951-04-06,-0.0877 1579 | GISTEMP,1951-04-06,-0.1 1580 | GCAG,1951-03-06,-0.1689 1581 | GISTEMP,1951-03-06,-0.19 1582 | GCAG,1951-02-06,-0.4101 1583 | GISTEMP,1951-02-06,-0.44 1584 | GCAG,1951-01-06,-0.2903 1585 | GISTEMP,1951-01-06,-0.35 1586 | GCAG,1950-12-06,-0.1810 1587 | GISTEMP,1950-12-06,-0.2 1588 | GCAG,1950-11-06,-0.3605 1589 | GISTEMP,1950-11-06,-0.35 1590 | GCAG,1950-10-06,-0.1661 1591 | GISTEMP,1950-10-06,-0.2 1592 | GCAG,1950-09-06,-0.1049 1593 | GISTEMP,1950-09-06,-0.1 1594 | GCAG,1950-08-06,-0.1382 1595 | GISTEMP,1950-08-06,-0.18 1596 | GCAG,1950-07-06,-0.1053 1597 | GISTEMP,1950-07-06,-0.09 1598 | GCAG,1950-06-06,-0.0559 1599 | GISTEMP,1950-06-06,-0.06 1600 | GCAG,1950-05-06,-0.0536 1601 | GISTEMP,1950-05-06,-0.12 1602 | GCAG,1950-04-06,-0.1706 1603 | GISTEMP,1950-04-06,-0.21 1604 | GCAG,1950-03-06,-0.0868 1605 | GISTEMP,1950-03-06,-0.06 1606 | GCAG,1950-02-06,-0.2389 1607 | GISTEMP,1950-02-06,-0.26 1608 | GCAG,1950-01-06,-0.2777 1609 | GISTEMP,1950-01-06,-0.3 1610 | GCAG,1949-12-06,-0.1821 1611 | GISTEMP,1949-12-06,-0.19 1612 | GCAG,1949-11-06,-0.0534 1613 | GISTEMP,1949-11-06,-0.08 1614 | GCAG,1949-10-06,-0.0297 1615 | GISTEMP,1949-10-06,-0.03 1616 | GCAG,1949-09-06,-0.0701 1617 | GISTEMP,1949-09-06,-0.08 1618 | GCAG,1949-08-06,-0.0217 1619 | GISTEMP,1949-08-06,-0.08 1620 | GCAG,1949-07-06,-0.0770 1621 | GISTEMP,1949-07-06,-0.13 1622 | GCAG,1949-06-06,-0.1486 1623 | GISTEMP,1949-06-06,-0.22 1624 | GCAG,1949-05-06,-0.0063 1625 | GISTEMP,1949-05-06,-0.09 1626 | GCAG,1949-04-06,0.0076 1627 | GISTEMP,1949-04-06,-0.07 1628 | GCAG,1949-03-06,-0.0732 1629 | GISTEMP,1949-03-06,-0.01 1630 | GCAG,1949-02-06,-0.1476 1631 | GISTEMP,1949-02-06,-0.16 1632 | GCAG,1949-01-06,0.1209 1633 | GISTEMP,1949-01-06,0.09 1634 | GCAG,1948-12-06,-0.1121 1635 | GISTEMP,1948-12-06,-0.23 1636 | GCAG,1948-11-06,-0.0560 1637 | GISTEMP,1948-11-06,-0.08 1638 | GCAG,1948-10-06,-0.0650 1639 | GISTEMP,1948-10-06,-0.07 1640 | GCAG,1948-09-06,-0.1032 1641 | GISTEMP,1948-09-06,-0.1 1642 | GCAG,1948-08-06,-0.0282 1643 | GISTEMP,1948-08-06,-0.1 1644 | GCAG,1948-07-06,-0.0622 1645 | GISTEMP,1948-07-06,-0.13 1646 | GCAG,1948-06-06,-0.0150 1647 | GISTEMP,1948-06-06,-0.05 1648 | GCAG,1948-05-06,0.1427 1649 | GISTEMP,1948-05-06,0.08 1650 | GCAG,1948-04-06,-0.0646 1651 | GISTEMP,1948-04-06,-0.09 1652 | GCAG,1948-03-06,-0.1841 1653 | GISTEMP,1948-03-06,-0.23 1654 | GCAG,1948-02-06,-0.0906 1655 | GISTEMP,1948-02-06,-0.13 1656 | GCAG,1948-01-06,0.0535 1657 | GISTEMP,1948-01-06,0.05 1658 | GCAG,1947-12-06,-0.1463 1659 | GISTEMP,1947-12-06,-0.18 1660 | GCAG,1947-11-06,-0.0238 1661 | GISTEMP,1947-11-06,-0.01 1662 | GCAG,1947-10-06,0.0549 1663 | GISTEMP,1947-10-06,0.06 1664 | GCAG,1947-09-06,-0.1306 1665 | GISTEMP,1947-09-06,-0.14 1666 | GCAG,1947-08-06,-0.0623 1667 | GISTEMP,1947-08-06,-0.08 1668 | GCAG,1947-07-06,-0.0138 1669 | GISTEMP,1947-07-06,-0.06 1670 | GCAG,1947-06-06,0.0208 1671 | GISTEMP,1947-06-06,0.0 1672 | GCAG,1947-05-06,-0.0190 1673 | GISTEMP,1947-05-06,-0.06 1674 | GCAG,1947-04-06,0.0143 1675 | GISTEMP,1947-04-06,0.04 1676 | GCAG,1947-03-06,-0.0079 1677 | GISTEMP,1947-03-06,0.05 1678 | GCAG,1947-02-06,-0.0774 1679 | GISTEMP,1947-02-06,-0.08 1680 | GCAG,1947-01-06,-0.1816 1681 | GISTEMP,1947-01-06,-0.13 1682 | GCAG,1946-12-06,-0.2636 1683 | GISTEMP,1946-12-06,-0.29 1684 | GCAG,1946-11-06,-0.0119 1685 | GISTEMP,1946-11-06,-0.02 1686 | GCAG,1946-10-06,-0.0057 1687 | GISTEMP,1946-10-06,-0.06 1688 | GCAG,1946-09-06,-0.0164 1689 | GISTEMP,1946-09-06,-0.02 1690 | GCAG,1946-08-06,-0.0697 1691 | GISTEMP,1946-08-06,-0.08 1692 | GCAG,1946-07-06,-0.0367 1693 | GISTEMP,1946-07-06,-0.09 1694 | GCAG,1946-06-06,-0.1016 1695 | GISTEMP,1946-06-06,-0.17 1696 | GCAG,1946-05-06,-0.0298 1697 | GISTEMP,1946-05-06,-0.04 1698 | GCAG,1946-04-06,0.1768 1699 | GISTEMP,1946-04-06,0.11 1700 | GCAG,1946-03-06,0.0005 1701 | GISTEMP,1946-03-06,0.0 1702 | GCAG,1946-02-06,0.0888 1703 | GISTEMP,1946-02-06,0.06 1704 | GCAG,1946-01-06,0.2209 1705 | GISTEMP,1946-01-06,0.15 1706 | GCAG,1945-12-06,-0.0475 1707 | GISTEMP,1945-12-06,-0.1 1708 | GCAG,1945-11-06,0.1955 1709 | GISTEMP,1945-11-06,0.1 1710 | GCAG,1945-10-06,0.2569 1711 | GISTEMP,1945-10-06,0.22 1712 | GCAG,1945-09-06,0.2578 1713 | GISTEMP,1945-09-06,0.22 1714 | GCAG,1945-08-06,0.3546 1715 | GISTEMP,1945-08-06,0.25 1716 | GCAG,1945-07-06,0.1652 1717 | GISTEMP,1945-07-06,0.07 1718 | GCAG,1945-06-06,0.1413 1719 | GISTEMP,1945-06-06,0.02 1720 | GCAG,1945-05-06,0.1761 1721 | GISTEMP,1945-05-06,0.1 1722 | GCAG,1945-04-06,0.2764 1723 | GISTEMP,1945-04-06,0.24 1724 | GCAG,1945-03-06,0.1072 1725 | GISTEMP,1945-03-06,0.11 1726 | GCAG,1945-02-06,0.0149 1727 | GISTEMP,1945-02-06,0.02 1728 | GCAG,1945-01-06,0.1535 1729 | GISTEMP,1945-01-06,0.13 1730 | GCAG,1944-12-06,0.0951 1731 | GISTEMP,1944-12-06,0.05 1732 | GCAG,1944-11-06,0.1518 1733 | GISTEMP,1944-11-06,0.12 1734 | GCAG,1944-10-06,0.3230 1735 | GISTEMP,1944-10-06,0.27 1736 | GCAG,1944-09-06,0.3855 1737 | GISTEMP,1944-09-06,0.31 1738 | GCAG,1944-08-06,0.2804 1739 | GISTEMP,1944-08-06,0.23 1740 | GCAG,1944-07-06,0.3145 1741 | GISTEMP,1944-07-06,0.23 1742 | GCAG,1944-06-06,0.3348 1743 | GISTEMP,1944-06-06,0.22 1744 | GCAG,1944-05-06,0.2618 1745 | GISTEMP,1944-05-06,0.26 1746 | GCAG,1944-04-06,0.2718 1747 | GISTEMP,1944-04-06,0.27 1748 | GCAG,1944-03-06,0.3676 1749 | GISTEMP,1944-03-06,0.34 1750 | GCAG,1944-02-06,0.3032 1751 | GISTEMP,1944-02-06,0.31 1752 | GCAG,1944-01-06,0.4241 1753 | GISTEMP,1944-01-06,0.41 1754 | GCAG,1943-12-06,0.3539 1755 | GISTEMP,1943-12-06,0.28 1756 | GCAG,1943-11-06,0.2459 1757 | GISTEMP,1943-11-06,0.25 1758 | GCAG,1943-10-06,0.3095 1759 | GISTEMP,1943-10-06,0.3 1760 | GCAG,1943-09-06,0.1425 1761 | GISTEMP,1943-09-06,0.11 1762 | GCAG,1943-08-06,0.0992 1763 | GISTEMP,1943-08-06,0.03 1764 | GCAG,1943-07-06,0.1830 1765 | GISTEMP,1943-07-06,0.14 1766 | GCAG,1943-06-06,0.0245 1767 | GISTEMP,1943-06-06,-0.01 1768 | GCAG,1943-05-06,0.1326 1769 | GISTEMP,1943-05-06,0.1 1770 | GCAG,1943-04-06,0.1726 1771 | GISTEMP,1943-04-06,0.13 1772 | GCAG,1943-03-06,0.0762 1773 | GISTEMP,1943-03-06,0.01 1774 | GCAG,1943-02-06,0.1683 1775 | GISTEMP,1943-02-06,0.22 1776 | GCAG,1943-01-06,-0.0241 1777 | GISTEMP,1943-01-06,-0.01 1778 | GCAG,1942-12-06,0.1515 1779 | GISTEMP,1942-12-06,0.12 1780 | GCAG,1942-11-06,0.1670 1781 | GISTEMP,1942-11-06,0.13 1782 | GCAG,1942-10-06,0.1495 1783 | GISTEMP,1942-10-06,0.06 1784 | GCAG,1942-09-06,0.1179 1785 | GISTEMP,1942-09-06,0.0 1786 | GCAG,1942-08-06,0.0440 1787 | GISTEMP,1942-08-06,-0.03 1788 | GCAG,1942-07-06,0.0768 1789 | GISTEMP,1942-07-06,0.02 1790 | GCAG,1942-06-06,0.2098 1791 | GISTEMP,1942-06-06,0.11 1792 | GCAG,1942-05-06,0.1665 1793 | GISTEMP,1942-05-06,0.14 1794 | GCAG,1942-04-06,0.1900 1795 | GISTEMP,1942-04-06,0.14 1796 | GCAG,1942-03-06,0.1771 1797 | GISTEMP,1942-03-06,0.13 1798 | GCAG,1942-02-06,0.0971 1799 | GISTEMP,1942-02-06,0.05 1800 | GCAG,1942-01-06,0.2983 1801 | GISTEMP,1942-01-06,0.26 1802 | GCAG,1941-12-06,0.2108 1803 | GISTEMP,1941-12-06,0.14 1804 | GCAG,1941-11-06,0.2212 1805 | GISTEMP,1941-11-06,0.12 1806 | GCAG,1941-10-06,0.3130 1807 | GISTEMP,1941-10-06,0.24 1808 | GCAG,1941-09-06,0.0881 1809 | GISTEMP,1941-09-06,0.02 1810 | GCAG,1941-08-06,0.1736 1811 | GISTEMP,1941-08-06,0.14 1812 | GCAG,1941-07-06,0.2069 1813 | GISTEMP,1941-07-06,0.15 1814 | GCAG,1941-06-06,0.1614 1815 | GISTEMP,1941-06-06,0.04 1816 | GCAG,1941-05-06,0.2446 1817 | GISTEMP,1941-05-06,0.1 1818 | GCAG,1941-04-06,0.2229 1819 | GISTEMP,1941-04-06,0.11 1820 | GCAG,1941-03-06,0.1023 1821 | GISTEMP,1941-03-06,0.06 1822 | GCAG,1941-02-06,0.2270 1823 | GISTEMP,1941-02-06,0.23 1824 | GCAG,1941-01-06,0.1802 1825 | GISTEMP,1941-01-06,0.13 1826 | GCAG,1940-12-06,0.2683 1827 | GISTEMP,1940-12-06,0.19 1828 | GCAG,1940-11-06,0.1004 1829 | GISTEMP,1940-11-06,0.13 1830 | GCAG,1940-10-06,0.0993 1831 | GISTEMP,1940-10-06,0.07 1832 | GCAG,1940-09-06,0.1483 1833 | GISTEMP,1940-09-06,0.12 1834 | GCAG,1940-08-06,0.0902 1835 | GISTEMP,1940-08-06,0.01 1836 | GCAG,1940-07-06,0.1459 1837 | GISTEMP,1940-07-06,0.1 1838 | GCAG,1940-06-06,0.1039 1839 | GISTEMP,1940-06-06,0.05 1840 | GCAG,1940-05-06,0.0556 1841 | GISTEMP,1940-05-06,0.05 1842 | GCAG,1940-04-06,0.1286 1843 | GISTEMP,1940-04-06,0.16 1844 | GCAG,1940-03-06,0.0671 1845 | GISTEMP,1940-03-06,0.12 1846 | GCAG,1940-02-06,0.0514 1847 | GISTEMP,1940-02-06,0.06 1848 | GCAG,1940-01-06,-0.1226 1849 | GISTEMP,1940-01-06,-0.15 1850 | GCAG,1939-12-06,0.4057 1851 | GISTEMP,1939-12-06,0.4 1852 | GCAG,1939-11-06,0.0440 1853 | GISTEMP,1939-11-06,0.06 1854 | GCAG,1939-10-06,-0.0427 1855 | GISTEMP,1939-10-06,-0.03 1856 | GCAG,1939-09-06,0.0111 1857 | GISTEMP,1939-09-06,0.0 1858 | GCAG,1939-08-06,0.0555 1859 | GISTEMP,1939-08-06,-0.05 1860 | GCAG,1939-07-06,0.0061 1861 | GISTEMP,1939-07-06,-0.06 1862 | GCAG,1939-06-06,-0.0077 1863 | GISTEMP,1939-06-06,-0.08 1864 | GCAG,1939-05-06,-0.0366 1865 | GISTEMP,1939-05-06,-0.07 1866 | GCAG,1939-04-06,-0.1319 1867 | GISTEMP,1939-04-06,-0.12 1868 | GCAG,1939-03-06,-0.1897 1869 | GISTEMP,1939-03-06,-0.2 1870 | GCAG,1939-02-06,-0.1137 1871 | GISTEMP,1939-02-06,-0.12 1872 | GCAG,1939-01-06,-0.1665 1873 | GISTEMP,1939-01-06,-0.13 1874 | GCAG,1938-12-06,-0.2541 1875 | GISTEMP,1938-12-06,-0.26 1876 | GCAG,1938-11-06,0.0039 1877 | GISTEMP,1938-11-06,0.01 1878 | GCAG,1938-10-06,0.0724 1879 | GISTEMP,1938-10-06,0.11 1880 | GCAG,1938-09-06,0.0293 1881 | GISTEMP,1938-09-06,0.03 1882 | GCAG,1938-08-06,-0.0149 1883 | GISTEMP,1938-08-06,-0.04 1884 | GCAG,1938-07-06,-0.0505 1885 | GISTEMP,1938-07-06,-0.09 1886 | GCAG,1938-06-06,-0.0939 1887 | GISTEMP,1938-06-06,-0.17 1888 | GCAG,1938-05-06,-0.0190 1889 | GISTEMP,1938-05-06,-0.07 1890 | GCAG,1938-04-06,0.0428 1891 | GISTEMP,1938-04-06,0.05 1892 | GCAG,1938-03-06,0.0308 1893 | GISTEMP,1938-03-06,0.05 1894 | GCAG,1938-02-06,-0.0540 1895 | GISTEMP,1938-02-06,-0.04 1896 | GCAG,1938-01-06,-0.0378 1897 | GISTEMP,1938-01-06,0.0 1898 | GCAG,1937-12-06,-0.0919 1899 | GISTEMP,1937-12-06,-0.12 1900 | GCAG,1937-11-06,0.0099 1901 | GISTEMP,1937-11-06,0.09 1902 | GCAG,1937-10-06,0.1137 1903 | GISTEMP,1937-10-06,0.1 1904 | GCAG,1937-09-06,0.1316 1905 | GISTEMP,1937-09-06,0.14 1906 | GCAG,1937-08-06,0.0930 1907 | GISTEMP,1937-08-06,0.03 1908 | GCAG,1937-07-06,-0.0004 1909 | GISTEMP,1937-07-06,-0.05 1910 | GCAG,1937-06-06,0.0126 1911 | GISTEMP,1937-06-06,-0.08 1912 | GCAG,1937-05-06,-0.0187 1913 | GISTEMP,1937-05-06,-0.07 1914 | GCAG,1937-04-06,-0.1262 1915 | GISTEMP,1937-04-06,-0.17 1916 | GCAG,1937-03-06,-0.1823 1917 | GISTEMP,1937-03-06,-0.17 1918 | GCAG,1937-02-06,0.0385 1919 | GISTEMP,1937-02-06,0.05 1920 | GCAG,1937-01-06,-0.1684 1921 | GISTEMP,1937-01-06,-0.11 1922 | GCAG,1936-12-06,-0.0193 1923 | GISTEMP,1936-12-06,-0.04 1924 | GCAG,1936-11-06,-0.0275 1925 | GISTEMP,1936-11-06,-0.05 1926 | GCAG,1936-10-06,-0.0224 1927 | GISTEMP,1936-10-06,-0.04 1928 | GCAG,1936-09-06,-0.0389 1929 | GISTEMP,1936-09-06,-0.06 1930 | GCAG,1936-08-06,-0.0557 1931 | GISTEMP,1936-08-06,-0.12 1932 | GCAG,1936-07-06,-0.0139 1933 | GISTEMP,1936-07-06,-0.06 1934 | GCAG,1936-06-06,-0.1075 1935 | GISTEMP,1936-06-06,-0.19 1936 | GCAG,1936-05-06,-0.1178 1937 | GISTEMP,1936-05-06,-0.17 1938 | GCAG,1936-04-06,-0.1789 1939 | GISTEMP,1936-04-06,-0.2 1940 | GCAG,1936-03-06,-0.2107 1941 | GISTEMP,1936-03-06,-0.23 1942 | GCAG,1936-02-06,-0.3137 1943 | GISTEMP,1936-02-06,-0.39 1944 | GCAG,1936-01-06,-0.2547 1945 | GISTEMP,1936-01-06,-0.29 1946 | GCAG,1935-12-06,-0.1769 1947 | GISTEMP,1935-12-06,-0.22 1948 | GCAG,1935-11-06,-0.2707 1949 | GISTEMP,1935-11-06,-0.29 1950 | GCAG,1935-10-06,-0.0130 1951 | GISTEMP,1935-10-06,-0.08 1952 | GCAG,1935-09-06,-0.0916 1953 | GISTEMP,1935-09-06,-0.17 1954 | GCAG,1935-08-06,-0.1003 1955 | GISTEMP,1935-08-06,-0.17 1956 | GCAG,1935-07-06,-0.1155 1957 | GISTEMP,1935-07-06,-0.19 1958 | GCAG,1935-06-06,-0.1706 1959 | GISTEMP,1935-06-06,-0.23 1960 | GCAG,1935-05-06,-0.2038 1961 | GISTEMP,1935-05-06,-0.26 1962 | GCAG,1935-04-06,-0.2567 1963 | GISTEMP,1935-04-06,-0.35 1964 | GCAG,1935-03-06,-0.1475 1965 | GISTEMP,1935-03-06,-0.13 1966 | GCAG,1935-02-06,0.1659 1967 | GISTEMP,1935-02-06,0.11 1968 | GCAG,1935-01-06,-0.2894 1969 | GISTEMP,1935-01-06,-0.37 1970 | GCAG,1934-12-06,-0.0256 1971 | GISTEMP,1934-12-06,-0.09 1972 | GCAG,1934-11-06,0.0128 1973 | GISTEMP,1934-11-06,-0.01 1974 | GCAG,1934-10-06,-0.0693 1975 | GISTEMP,1934-10-06,-0.11 1976 | GCAG,1934-09-06,-0.1226 1977 | GISTEMP,1934-09-06,-0.16 1978 | GCAG,1934-08-06,-0.0548 1979 | GISTEMP,1934-08-06,-0.1 1980 | GCAG,1934-07-06,-0.0894 1981 | GISTEMP,1934-07-06,-0.11 1982 | GCAG,1934-06-06,-0.0025 1983 | GISTEMP,1934-06-06,-0.14 1984 | GCAG,1934-05-06,-0.0444 1985 | GISTEMP,1934-05-06,-0.11 1986 | GCAG,1934-04-06,-0.2318 1987 | GISTEMP,1934-04-06,-0.27 1988 | GCAG,1934-03-06,-0.2574 1989 | GISTEMP,1934-03-06,-0.31 1990 | GCAG,1934-02-06,-0.0231 1991 | GISTEMP,1934-02-06,-0.04 1992 | GCAG,1934-01-06,-0.3102 1993 | GISTEMP,1934-01-06,-0.27 1994 | GCAG,1933-12-06,-0.4069 1995 | GISTEMP,1933-12-06,-0.47 1996 | GCAG,1933-11-06,-0.2548 1997 | GISTEMP,1933-11-06,-0.31 1998 | GCAG,1933-10-06,-0.1879 1999 | GISTEMP,1933-10-06,-0.24 2000 | GCAG,1933-09-06,-0.2214 2001 | GISTEMP,1933-09-06,-0.26 2002 | GCAG,1933-08-06,-0.1889 2003 | GISTEMP,1933-08-06,-0.23 2004 | GCAG,1933-07-06,-0.1810 2005 | GISTEMP,1933-07-06,-0.2 2006 | GCAG,1933-06-06,-0.2007 2007 | GISTEMP,1933-06-06,-0.32 2008 | GCAG,1933-05-06,-0.2091 2009 | GISTEMP,1933-05-06,-0.25 2010 | GCAG,1933-04-06,-0.2044 2011 | GISTEMP,1933-04-06,-0.23 2012 | GCAG,1933-03-06,-0.2476 2013 | GISTEMP,1933-03-06,-0.29 2014 | GCAG,1933-02-06,-0.3167 2015 | GISTEMP,1933-02-06,-0.32 2016 | GCAG,1933-01-06,-0.3073 2017 | GISTEMP,1933-01-06,-0.34 2018 | GCAG,1932-12-06,-0.1861 2019 | GISTEMP,1932-12-06,-0.22 2020 | GCAG,1932-11-06,-0.1945 2021 | GISTEMP,1932-11-06,-0.26 2022 | GCAG,1932-10-06,-0.0926 2023 | GISTEMP,1932-10-06,-0.1 2024 | GCAG,1932-09-06,-0.0695 2025 | GISTEMP,1932-09-06,-0.11 2026 | GCAG,1932-08-06,-0.1757 2027 | GISTEMP,1932-08-06,-0.24 2028 | GCAG,1932-07-06,-0.1208 2029 | GISTEMP,1932-07-06,-0.24 2030 | GCAG,1932-06-06,-0.1578 2031 | GISTEMP,1932-06-06,-0.3 2032 | GCAG,1932-05-06,-0.1674 2033 | GISTEMP,1932-05-06,-0.22 2034 | GCAG,1932-04-06,-0.0324 2035 | GISTEMP,1932-04-06,-0.07 2036 | GCAG,1932-03-06,-0.1799 2037 | GISTEMP,1932-03-06,-0.2 2038 | GCAG,1932-02-06,-0.1794 2039 | GISTEMP,1932-02-06,-0.18 2040 | GCAG,1932-01-06,0.1547 2041 | GISTEMP,1932-01-06,0.13 2042 | GCAG,1931-12-06,-0.1052 2043 | GISTEMP,1931-12-06,-0.1 2044 | GCAG,1931-11-06,-0.1139 2045 | GISTEMP,1931-11-06,-0.12 2046 | GCAG,1931-10-06,0.0092 2047 | GISTEMP,1931-10-06,0.0 2048 | GCAG,1931-09-06,0.0035 2049 | GISTEMP,1931-09-06,-0.06 2050 | GCAG,1931-08-06,0.0047 2051 | GISTEMP,1931-08-06,0.0 2052 | GCAG,1931-07-06,-0.0155 2053 | GISTEMP,1931-07-06,0.01 2054 | GCAG,1931-06-06,-0.0185 2055 | GISTEMP,1931-06-06,-0.06 2056 | GCAG,1931-05-06,-0.1499 2057 | GISTEMP,1931-05-06,-0.22 2058 | GCAG,1931-04-06,-0.1625 2059 | GISTEMP,1931-04-06,-0.21 2060 | GCAG,1931-03-06,-0.0061 2061 | GISTEMP,1931-03-06,-0.06 2062 | GCAG,1931-02-06,-0.2225 2063 | GISTEMP,1931-02-06,-0.22 2064 | GCAG,1931-01-06,-0.0470 2065 | GISTEMP,1931-01-06,-0.1 2066 | GCAG,1930-12-06,0.0064 2067 | GISTEMP,1930-12-06,-0.09 2068 | GCAG,1930-11-06,0.1368 2069 | GISTEMP,1930-11-06,0.14 2070 | GCAG,1930-10-06,-0.0011 2071 | GISTEMP,1930-10-06,-0.08 2072 | GCAG,1930-09-06,-0.1043 2073 | GISTEMP,1930-09-06,-0.11 2074 | GCAG,1930-08-06,-0.0900 2075 | GISTEMP,1930-08-06,-0.11 2076 | GCAG,1930-07-06,-0.0692 2077 | GISTEMP,1930-07-06,-0.17 2078 | GCAG,1930-06-06,-0.1135 2079 | GISTEMP,1930-06-06,-0.19 2080 | GCAG,1930-05-06,-0.1976 2081 | GISTEMP,1930-05-06,-0.25 2082 | GCAG,1930-04-06,-0.1950 2083 | GISTEMP,1930-04-06,-0.26 2084 | GCAG,1930-03-06,-0.0549 2085 | GISTEMP,1930-03-06,-0.08 2086 | GCAG,1930-02-06,-0.2000 2087 | GISTEMP,1930-02-06,-0.24 2088 | GCAG,1930-01-06,-0.3206 2089 | GISTEMP,1930-01-06,-0.29 2090 | GCAG,1929-12-06,-0.5167 2091 | GISTEMP,1929-12-06,-0.55 2092 | GCAG,1929-11-06,-0.0971 2093 | GISTEMP,1929-11-06,-0.14 2094 | GCAG,1929-10-06,-0.1185 2095 | GISTEMP,1929-10-06,-0.15 2096 | GCAG,1929-09-06,-0.2089 2097 | GISTEMP,1929-09-06,-0.23 2098 | GCAG,1929-08-06,-0.2078 2099 | GISTEMP,1929-08-06,-0.29 2100 | GCAG,1929-07-06,-0.2735 2101 | GISTEMP,1929-07-06,-0.33 2102 | GCAG,1929-06-06,-0.2746 2103 | GISTEMP,1929-06-06,-0.43 2104 | GCAG,1929-05-06,-0.2886 2105 | GISTEMP,1929-05-06,-0.39 2106 | GCAG,1929-04-06,-0.2976 2107 | GISTEMP,1929-04-06,-0.4 2108 | GCAG,1929-03-06,-0.2654 2109 | GISTEMP,1929-03-06,-0.34 2110 | GCAG,1929-02-06,-0.5495 2111 | GISTEMP,1929-02-06,-0.61 2112 | GCAG,1929-01-06,-0.4840 2113 | GISTEMP,1929-01-06,-0.47 2114 | GCAG,1928-12-06,-0.1713 2115 | GISTEMP,1928-12-06,-0.2 2116 | GCAG,1928-11-06,-0.0679 2117 | GISTEMP,1928-11-06,-0.09 2118 | GCAG,1928-10-06,-0.1256 2119 | GISTEMP,1928-10-06,-0.19 2120 | GCAG,1928-09-06,-0.1904 2121 | GISTEMP,1928-09-06,-0.2 2122 | GCAG,1928-08-06,-0.1997 2123 | GISTEMP,1928-08-06,-0.25 2124 | GCAG,1928-07-06,-0.1773 2125 | GISTEMP,1928-07-06,-0.21 2126 | GCAG,1928-06-06,-0.2777 2127 | GISTEMP,1928-06-06,-0.41 2128 | GCAG,1928-05-06,-0.1866 2129 | GISTEMP,1928-05-06,-0.3 2130 | GCAG,1928-04-06,-0.2444 2131 | GISTEMP,1928-04-06,-0.29 2132 | GCAG,1928-03-06,-0.2630 2133 | GISTEMP,1928-03-06,-0.28 2134 | GCAG,1928-02-06,-0.1450 2135 | GISTEMP,1928-02-06,-0.12 2136 | GCAG,1928-01-06,-0.0800 2137 | GISTEMP,1928-01-06,-0.04 2138 | GCAG,1927-12-06,-0.3132 2139 | GISTEMP,1927-12-06,-0.36 2140 | GCAG,1927-11-06,-0.0397 2141 | GISTEMP,1927-11-06,-0.04 2142 | GCAG,1927-10-06,0.0140 2143 | GISTEMP,1927-10-06,-0.01 2144 | GCAG,1927-09-06,-0.0275 2145 | GISTEMP,1927-09-06,-0.06 2146 | GCAG,1927-08-06,-0.1145 2147 | GISTEMP,1927-08-06,-0.19 2148 | GCAG,1927-07-06,-0.1035 2149 | GISTEMP,1927-07-06,-0.15 2150 | GCAG,1927-06-06,-0.2014 2151 | GISTEMP,1927-06-06,-0.27 2152 | GCAG,1927-05-06,-0.2286 2153 | GISTEMP,1927-05-06,-0.25 2154 | GCAG,1927-04-06,-0.2207 2155 | GISTEMP,1927-04-06,-0.31 2156 | GCAG,1927-03-06,-0.2563 2157 | GISTEMP,1927-03-06,-0.39 2158 | GCAG,1927-02-06,-0.1917 2159 | GISTEMP,1927-02-06,-0.21 2160 | GCAG,1927-01-06,-0.1723 2161 | GISTEMP,1927-01-06,-0.28 2162 | GCAG,1926-12-06,-0.2158 2163 | GISTEMP,1926-12-06,-0.3 2164 | GCAG,1926-11-06,-0.0784 2165 | GISTEMP,1926-11-06,-0.06 2166 | GCAG,1926-10-06,-0.0840 2167 | GISTEMP,1926-10-06,-0.11 2168 | GCAG,1926-09-06,-0.1031 2169 | GISTEMP,1926-09-06,-0.11 2170 | GCAG,1926-08-06,-0.0882 2171 | GISTEMP,1926-08-06,-0.11 2172 | GCAG,1926-07-06,-0.1582 2173 | GISTEMP,1926-07-06,-0.21 2174 | GCAG,1926-06-06,-0.1224 2175 | GISTEMP,1926-06-06,-0.25 2176 | GCAG,1926-05-06,-0.1345 2177 | GISTEMP,1926-05-06,-0.25 2178 | GCAG,1926-04-06,-0.1389 2179 | GISTEMP,1926-04-06,-0.15 2180 | GCAG,1926-03-06,0.0756 2181 | GISTEMP,1926-03-06,0.12 2182 | GCAG,1926-02-06,0.0811 2183 | GISTEMP,1926-02-06,0.07 2184 | GCAG,1926-01-06,0.1660 2185 | GISTEMP,1926-01-06,0.2 2186 | GCAG,1925-12-06,0.1358 2187 | GISTEMP,1925-12-06,0.11 2188 | GCAG,1925-11-06,0.0584 2189 | GISTEMP,1925-11-06,0.03 2190 | GCAG,1925-10-06,-0.1326 2191 | GISTEMP,1925-10-06,-0.17 2192 | GCAG,1925-09-06,-0.1040 2193 | GISTEMP,1925-09-06,-0.13 2194 | GCAG,1925-08-06,-0.1374 2195 | GISTEMP,1925-08-06,-0.19 2196 | GCAG,1925-07-06,-0.2093 2197 | GISTEMP,1925-07-06,-0.3 2198 | GCAG,1925-06-06,-0.2291 2199 | GISTEMP,1925-06-06,-0.34 2200 | GCAG,1925-05-06,-0.2233 2201 | GISTEMP,1925-05-06,-0.3 2202 | GCAG,1925-04-06,-0.1633 2203 | GISTEMP,1925-04-06,-0.25 2204 | GCAG,1925-03-06,-0.1692 2205 | GISTEMP,1925-03-06,-0.24 2206 | GCAG,1925-02-06,-0.2783 2207 | GISTEMP,1925-02-06,-0.35 2208 | GCAG,1925-01-06,-0.3246 2209 | GISTEMP,1925-01-06,-0.34 2210 | GCAG,1924-12-06,-0.3912 2211 | GISTEMP,1924-12-06,-0.43 2212 | GCAG,1924-11-06,-0.2942 2213 | GISTEMP,1924-11-06,-0.23 2214 | GCAG,1924-10-06,-0.2879 2215 | GISTEMP,1924-10-06,-0.36 2216 | GCAG,1924-09-06,-0.2836 2217 | GISTEMP,1924-09-06,-0.3 2218 | GCAG,1924-08-06,-0.2895 2219 | GISTEMP,1924-08-06,-0.35 2220 | GCAG,1924-07-06,-0.2216 2221 | GISTEMP,1924-07-06,-0.27 2222 | GCAG,1924-06-06,-0.2259 2223 | GISTEMP,1924-06-06,-0.28 2224 | GCAG,1924-05-06,-0.1903 2225 | GISTEMP,1924-05-06,-0.19 2226 | GCAG,1924-04-06,-0.2466 2227 | GISTEMP,1924-04-06,-0.35 2228 | GCAG,1924-03-06,-0.1130 2229 | GISTEMP,1924-03-06,-0.12 2230 | GCAG,1924-02-06,-0.1859 2231 | GISTEMP,1924-02-06,-0.27 2232 | GCAG,1924-01-06,-0.2536 2233 | GISTEMP,1924-01-06,-0.24 2234 | GCAG,1923-12-06,0.0001 2235 | GISTEMP,1923-12-06,-0.06 2236 | GCAG,1923-11-06,0.0285 2237 | GISTEMP,1923-11-06,0.03 2238 | GCAG,1923-10-06,-0.1619 2239 | GISTEMP,1923-10-06,-0.13 2240 | GCAG,1923-09-06,-0.2454 2241 | GISTEMP,1923-09-06,-0.28 2242 | GCAG,1923-08-06,-0.2824 2243 | GISTEMP,1923-08-06,-0.3 2244 | GCAG,1923-07-06,-0.2820 2245 | GISTEMP,1923-07-06,-0.29 2246 | GCAG,1923-06-06,-0.1948 2247 | GISTEMP,1923-06-06,-0.24 2248 | GCAG,1923-05-06,-0.2488 2249 | GISTEMP,1923-05-06,-0.33 2250 | GCAG,1923-04-06,-0.3381 2251 | GISTEMP,1923-04-06,-0.38 2252 | GCAG,1923-03-06,-0.2697 2253 | GISTEMP,1923-03-06,-0.32 2254 | GCAG,1923-02-06,-0.3785 2255 | GISTEMP,1923-02-06,-0.37 2256 | GCAG,1923-01-06,-0.2143 2257 | GISTEMP,1923-01-06,-0.27 2258 | GCAG,1922-12-06,-0.1563 2259 | GISTEMP,1922-12-06,-0.17 2260 | GCAG,1922-11-06,-0.1929 2261 | GISTEMP,1922-11-06,-0.17 2262 | GCAG,1922-10-06,-0.2506 2263 | GISTEMP,1922-10-06,-0.33 2264 | GCAG,1922-09-06,-0.2525 2265 | GISTEMP,1922-09-06,-0.29 2266 | GCAG,1922-08-06,-0.2793 2267 | GISTEMP,1922-08-06,-0.31 2268 | GCAG,1922-07-06,-0.2615 2269 | GISTEMP,1922-07-06,-0.27 2270 | GCAG,1922-06-06,-0.2820 2271 | GISTEMP,1922-06-06,-0.32 2272 | GCAG,1922-05-06,-0.2647 2273 | GISTEMP,1922-05-06,-0.34 2274 | GCAG,1922-04-06,-0.1301 2275 | GISTEMP,1922-04-06,-0.22 2276 | GCAG,1922-03-06,-0.0787 2277 | GISTEMP,1922-03-06,-0.13 2278 | GCAG,1922-02-06,-0.2945 2279 | GISTEMP,1922-02-06,-0.44 2280 | GCAG,1922-01-06,-0.3221 2281 | GISTEMP,1922-01-06,-0.34 2282 | GCAG,1921-12-06,-0.0822 2283 | GISTEMP,1921-12-06,-0.18 2284 | GCAG,1921-11-06,-0.1859 2285 | GISTEMP,1921-11-06,-0.16 2286 | GCAG,1921-10-06,-0.0662 2287 | GISTEMP,1921-10-06,-0.06 2288 | GCAG,1921-09-06,-0.1481 2289 | GISTEMP,1921-09-06,-0.16 2290 | GCAG,1921-08-06,-0.1964 2291 | GISTEMP,1921-08-06,-0.24 2292 | GCAG,1921-07-06,-0.1123 2293 | GISTEMP,1921-07-06,-0.16 2294 | GCAG,1921-06-06,-0.1665 2295 | GISTEMP,1921-06-06,-0.31 2296 | GCAG,1921-05-06,-0.1917 2297 | GISTEMP,1921-05-06,-0.36 2298 | GCAG,1921-04-06,-0.2059 2299 | GISTEMP,1921-04-06,-0.36 2300 | GCAG,1921-03-06,-0.2176 2301 | GISTEMP,1921-03-06,-0.28 2302 | GCAG,1921-02-06,-0.1494 2303 | GISTEMP,1921-02-06,-0.21 2304 | GCAG,1921-01-06,-0.0598 2305 | GISTEMP,1921-01-06,-0.04 2306 | GCAG,1920-12-06,-0.3886 2307 | GISTEMP,1920-12-06,-0.47 2308 | GCAG,1920-11-06,-0.2510 2309 | GISTEMP,1920-11-06,-0.33 2310 | GCAG,1920-10-06,-0.2096 2311 | GISTEMP,1920-10-06,-0.29 2312 | GCAG,1920-09-06,-0.1755 2313 | GISTEMP,1920-09-06,-0.2 2314 | GCAG,1920-08-06,-0.2306 2315 | GISTEMP,1920-08-06,-0.29 2316 | GCAG,1920-07-06,-0.2436 2317 | GISTEMP,1920-07-06,-0.32 2318 | GCAG,1920-06-06,-0.2559 2319 | GISTEMP,1920-06-06,-0.33 2320 | GCAG,1920-05-06,-0.1682 2321 | GISTEMP,1920-05-06,-0.26 2322 | GCAG,1920-04-06,-0.2098 2323 | GISTEMP,1920-04-06,-0.26 2324 | GCAG,1920-03-06,-0.0583 2325 | GISTEMP,1920-03-06,-0.08 2326 | GCAG,1920-02-06,-0.2197 2327 | GISTEMP,1920-02-06,-0.22 2328 | GCAG,1920-01-06,-0.1157 2329 | GISTEMP,1920-01-06,-0.15 2330 | GCAG,1919-12-06,-0.2980 2331 | GISTEMP,1919-12-06,-0.35 2332 | GCAG,1919-11-06,-0.3178 2333 | GISTEMP,1919-11-06,-0.29 2334 | GCAG,1919-10-06,-0.2200 2335 | GISTEMP,1919-10-06,-0.16 2336 | GCAG,1919-09-06,-0.1833 2337 | GISTEMP,1919-09-06,-0.17 2338 | GCAG,1919-08-06,-0.2077 2339 | GISTEMP,1919-08-06,-0.19 2340 | GCAG,1919-07-06,-0.2155 2341 | GISTEMP,1919-07-06,-0.21 2342 | GCAG,1919-06-06,-0.2348 2343 | GISTEMP,1919-06-06,-0.28 2344 | GCAG,1919-05-06,-0.1837 2345 | GISTEMP,1919-05-06,-0.2 2346 | GCAG,1919-04-06,-0.0704 2347 | GISTEMP,1919-04-06,-0.17 2348 | GCAG,1919-03-06,-0.2393 2349 | GISTEMP,1919-03-06,-0.25 2350 | GCAG,1919-02-06,-0.0530 2351 | GISTEMP,1919-02-06,-0.19 2352 | GCAG,1919-01-06,-0.2424 2353 | GISTEMP,1919-01-06,-0.21 2354 | GCAG,1918-12-06,-0.3195 2355 | GISTEMP,1918-12-06,-0.3 2356 | GCAG,1918-11-06,-0.1154 2357 | GISTEMP,1918-11-06,-0.16 2358 | GCAG,1918-10-06,-0.0998 2359 | GISTEMP,1918-10-06,-0.03 2360 | GCAG,1918-09-06,-0.1481 2361 | GISTEMP,1918-09-06,-0.14 2362 | GCAG,1918-08-06,-0.1777 2363 | GISTEMP,1918-08-06,-0.26 2364 | GCAG,1918-07-06,-0.2024 2365 | GISTEMP,1918-07-06,-0.22 2366 | GCAG,1918-06-06,-0.1829 2367 | GISTEMP,1918-06-06,-0.28 2368 | GCAG,1918-05-06,-0.2760 2369 | GISTEMP,1918-05-06,-0.37 2370 | GCAG,1918-04-06,-0.2966 2371 | GISTEMP,1918-04-06,-0.4 2372 | GCAG,1918-03-06,-0.1783 2373 | GISTEMP,1918-03-06,-0.21 2374 | GCAG,1918-02-06,-0.2892 2375 | GISTEMP,1918-02-06,-0.33 2376 | GCAG,1918-01-06,-0.2146 2377 | GISTEMP,1918-01-06,-0.44 2378 | GCAG,1917-12-06,-0.5329 2379 | GISTEMP,1917-12-06,-0.71 2380 | GCAG,1917-11-06,-0.1348 2381 | GISTEMP,1917-11-06,-0.29 2382 | GCAG,1917-10-06,-0.2602 2383 | GISTEMP,1917-10-06,-0.35 2384 | GCAG,1917-09-06,-0.0635 2385 | GISTEMP,1917-09-06,-0.18 2386 | GCAG,1917-08-06,-0.1726 2387 | GISTEMP,1917-08-06,-0.26 2388 | GCAG,1917-07-06,-0.1721 2389 | GISTEMP,1917-07-06,-0.23 2390 | GCAG,1917-06-06,-0.3432 2391 | GISTEMP,1917-06-06,-0.4 2392 | GCAG,1917-05-06,-0.4500 2393 | GISTEMP,1917-05-06,-0.48 2394 | GCAG,1917-04-06,-0.3146 2395 | GISTEMP,1917-04-06,-0.38 2396 | GCAG,1917-03-06,-0.4287 2397 | GISTEMP,1917-03-06,-0.47 2398 | GCAG,1917-02-06,-0.4721 2399 | GISTEMP,1917-02-06,-0.53 2400 | GCAG,1917-01-06,-0.4299 2401 | GISTEMP,1917-01-06,-0.46 2402 | GCAG,1916-12-06,-0.5742 2403 | GISTEMP,1916-12-06,-0.78 2404 | GCAG,1916-11-06,-0.3957 2405 | GISTEMP,1916-11-06,-0.42 2406 | GCAG,1916-10-06,-0.2651 2407 | GISTEMP,1916-10-06,-0.28 2408 | GCAG,1916-09-06,-0.2616 2409 | GISTEMP,1916-09-06,-0.29 2410 | GCAG,1916-08-06,-0.2743 2411 | GISTEMP,1916-08-06,-0.27 2412 | GCAG,1916-07-06,-0.2889 2413 | GISTEMP,1916-07-06,-0.34 2414 | GCAG,1916-06-06,-0.3834 2415 | GISTEMP,1916-06-06,-0.44 2416 | GCAG,1916-05-06,-0.2245 2417 | GISTEMP,1916-05-06,-0.27 2418 | GCAG,1916-04-06,-0.1978 2419 | GISTEMP,1916-04-06,-0.25 2420 | GCAG,1916-03-06,-0.2944 2421 | GISTEMP,1916-03-06,-0.31 2422 | GCAG,1916-02-06,-0.1759 2423 | GISTEMP,1916-02-06,-0.23 2424 | GCAG,1916-01-06,-0.1797 2425 | GISTEMP,1916-01-06,-0.2 2426 | GCAG,1915-12-06,-0.0503 2427 | GISTEMP,1915-12-06,-0.25 2428 | GCAG,1915-11-06,-0.0116 2429 | GISTEMP,1915-11-06,-0.12 2430 | GCAG,1915-10-06,-0.1722 2431 | GISTEMP,1915-10-06,-0.22 2432 | GCAG,1915-09-06,-0.1111 2433 | GISTEMP,1915-09-06,-0.12 2434 | GCAG,1915-08-06,-0.0760 2435 | GISTEMP,1915-08-06,-0.15 2436 | GCAG,1915-07-06,-0.0284 2437 | GISTEMP,1915-07-06,-0.03 2438 | GCAG,1915-06-06,-0.0858 2439 | GISTEMP,1915-06-06,-0.16 2440 | GCAG,1915-05-06,-0.0685 2441 | GISTEMP,1915-05-06,-0.01 2442 | GCAG,1915-04-06,0.0215 2443 | GISTEMP,1915-04-06,0.07 2444 | GCAG,1915-03-06,-0.1011 2445 | GISTEMP,1915-03-06,-0.08 2446 | GCAG,1915-02-06,-0.0108 2447 | GISTEMP,1915-02-06,-0.01 2448 | GCAG,1915-01-06,-0.1374 2449 | GISTEMP,1915-01-06,-0.2 2450 | GCAG,1914-12-06,-0.0998 2451 | GISTEMP,1914-12-06,-0.1 2452 | GCAG,1914-11-06,-0.1202 2453 | GISTEMP,1914-11-06,-0.2 2454 | GCAG,1914-10-06,-0.0938 2455 | GISTEMP,1914-10-06,-0.05 2456 | GCAG,1914-09-06,-0.1781 2457 | GISTEMP,1914-09-06,-0.13 2458 | GCAG,1914-08-06,-0.1757 2459 | GISTEMP,1914-08-06,-0.15 2460 | GCAG,1914-07-06,-0.2095 2461 | GISTEMP,1914-07-06,-0.24 2462 | GCAG,1914-06-06,-0.1963 2463 | GISTEMP,1914-06-06,-0.22 2464 | GCAG,1914-05-06,-0.1647 2465 | GISTEMP,1914-05-06,-0.19 2466 | GCAG,1914-04-06,-0.2481 2467 | GISTEMP,1914-04-06,-0.28 2468 | GCAG,1914-03-06,-0.1633 2469 | GISTEMP,1914-03-06,-0.23 2470 | GCAG,1914-02-06,-0.1203 2471 | GISTEMP,1914-02-06,-0.13 2472 | GCAG,1914-01-06,0.0961 2473 | GISTEMP,1914-01-06,0.02 2474 | GCAG,1913-12-06,-0.0374 2475 | GISTEMP,1913-12-06,-0.04 2476 | GCAG,1913-11-06,-0.1371 2477 | GISTEMP,1913-11-06,-0.18 2478 | GCAG,1913-10-06,-0.3112 2479 | GISTEMP,1913-10-06,-0.34 2480 | GCAG,1913-09-06,-0.3562 2481 | GISTEMP,1913-09-06,-0.32 2482 | GCAG,1913-08-06,-0.3280 2483 | GISTEMP,1913-08-06,-0.32 2484 | GCAG,1913-07-06,-0.3534 2485 | GISTEMP,1913-07-06,-0.34 2486 | GCAG,1913-06-06,-0.3779 2487 | GISTEMP,1913-06-06,-0.46 2488 | GCAG,1913-05-06,-0.3940 2489 | GISTEMP,1913-05-06,-0.45 2490 | GCAG,1913-04-06,-0.3506 2491 | GISTEMP,1913-04-06,-0.36 2492 | GCAG,1913-03-06,-0.4077 2493 | GISTEMP,1913-03-06,-0.44 2494 | GCAG,1913-02-06,-0.3899 2495 | GISTEMP,1913-02-06,-0.44 2496 | GCAG,1913-01-06,-0.3513 2497 | GISTEMP,1913-01-06,-0.41 2498 | GCAG,1912-12-06,-0.3553 2499 | GISTEMP,1912-12-06,-0.42 2500 | GCAG,1912-11-06,-0.4122 2501 | GISTEMP,1912-11-06,-0.38 2502 | GCAG,1912-10-06,-0.5185 2503 | GISTEMP,1912-10-06,-0.55 2504 | GCAG,1912-09-06,-0.5056 2505 | GISTEMP,1912-09-06,-0.47 2506 | GCAG,1912-08-06,-0.4516 2507 | GISTEMP,1912-08-06,-0.51 2508 | GCAG,1912-07-06,-0.3140 2509 | GISTEMP,1912-07-06,-0.41 2510 | GCAG,1912-06-06,-0.2600 2511 | GISTEMP,1912-06-06,-0.26 2512 | GCAG,1912-05-06,-0.2257 2513 | GISTEMP,1912-05-06,-0.2 2514 | GCAG,1912-04-06,-0.2027 2515 | GISTEMP,1912-04-06,-0.2 2516 | GCAG,1912-03-06,-0.3123 2517 | GISTEMP,1912-03-06,-0.37 2518 | GCAG,1912-02-06,-0.1091 2519 | GISTEMP,1912-02-06,-0.13 2520 | GCAG,1912-01-06,-0.2791 2521 | GISTEMP,1912-01-06,-0.27 2522 | GCAG,1911-12-06,-0.2456 2523 | GISTEMP,1911-12-06,-0.25 2524 | GCAG,1911-11-06,-0.2571 2525 | GISTEMP,1911-11-06,-0.2 2526 | GCAG,1911-10-06,-0.3433 2527 | GISTEMP,1911-10-06,-0.26 2528 | GCAG,1911-09-06,-0.3983 2529 | GISTEMP,1911-09-06,-0.38 2530 | GCAG,1911-08-06,-0.4541 2531 | GISTEMP,1911-08-06,-0.43 2532 | GCAG,1911-07-06,-0.4658 2533 | GISTEMP,1911-07-06,-0.41 2534 | GCAG,1911-06-06,-0.4443 2535 | GISTEMP,1911-06-06,-0.47 2536 | GCAG,1911-05-06,-0.4775 2537 | GISTEMP,1911-05-06,-0.51 2538 | GCAG,1911-04-06,-0.5099 2539 | GISTEMP,1911-04-06,-0.55 2540 | GCAG,1911-03-06,-0.5697 2541 | GISTEMP,1911-03-06,-0.62 2542 | GCAG,1911-02-06,-0.5265 2543 | GISTEMP,1911-02-06,-0.6 2544 | GCAG,1911-01-06,-0.5067 2545 | GISTEMP,1911-01-06,-0.64 2546 | GCAG,1910-12-06,-0.5626 2547 | GISTEMP,1910-12-06,-0.69 2548 | GCAG,1910-11-06,-0.4956 2549 | GISTEMP,1910-11-06,-0.56 2550 | GCAG,1910-10-06,-0.4199 2551 | GISTEMP,1910-10-06,-0.39 2552 | GCAG,1910-09-06,-0.3322 2553 | GISTEMP,1910-09-06,-0.37 2554 | GCAG,1910-08-06,-0.3325 2555 | GISTEMP,1910-08-06,-0.34 2556 | GCAG,1910-07-06,-0.3264 2557 | GISTEMP,1910-07-06,-0.31 2558 | GCAG,1910-06-06,-0.3525 2559 | GISTEMP,1910-06-06,-0.36 2560 | GCAG,1910-05-06,-0.2999 2561 | GISTEMP,1910-05-06,-0.34 2562 | GCAG,1910-04-06,-0.3390 2563 | GISTEMP,1910-04-06,-0.39 2564 | GCAG,1910-03-06,-0.4202 2565 | GISTEMP,1910-03-06,-0.47 2566 | GCAG,1910-02-06,-0.3627 2567 | GISTEMP,1910-02-06,-0.43 2568 | GCAG,1910-01-06,-0.3035 2569 | GISTEMP,1910-01-06,-0.44 2570 | GCAG,1909-12-06,-0.4071 2571 | GISTEMP,1909-12-06,-0.55 2572 | GCAG,1909-11-06,-0.2733 2573 | GISTEMP,1909-11-06,-0.31 2574 | GCAG,1909-10-06,-0.3935 2575 | GISTEMP,1909-10-06,-0.39 2576 | GCAG,1909-09-06,-0.3611 2577 | GISTEMP,1909-09-06,-0.37 2578 | GCAG,1909-08-06,-0.3052 2579 | GISTEMP,1909-08-06,-0.3 2580 | GCAG,1909-07-06,-0.4350 2581 | GISTEMP,1909-07-06,-0.43 2582 | GCAG,1909-06-06,-0.4145 2583 | GISTEMP,1909-06-06,-0.52 2584 | GCAG,1909-05-06,-0.4512 2585 | GISTEMP,1909-05-06,-0.54 2586 | GCAG,1909-04-06,-0.5264 2587 | GISTEMP,1909-04-06,-0.59 2588 | GCAG,1909-03-06,-0.5399 2589 | GISTEMP,1909-03-06,-0.52 2590 | GCAG,1909-02-06,-0.4563 2591 | GISTEMP,1909-02-06,-0.47 2592 | GCAG,1909-01-06,-0.5499 2593 | GISTEMP,1909-01-06,-0.7 2594 | GCAG,1908-12-06,-0.3846 2595 | GISTEMP,1908-12-06,-0.5 2596 | GCAG,1908-11-06,-0.4833 2597 | GISTEMP,1908-11-06,-0.51 2598 | GCAG,1908-10-06,-0.5169 2599 | GISTEMP,1908-10-06,-0.43 2600 | GCAG,1908-09-06,-0.3973 2601 | GISTEMP,1908-09-06,-0.33 2602 | GCAG,1908-08-06,-0.4787 2603 | GISTEMP,1908-08-06,-0.45 2604 | GCAG,1908-07-06,-0.3874 2605 | GISTEMP,1908-07-06,-0.35 2606 | GCAG,1908-06-06,-0.4062 2607 | GISTEMP,1908-06-06,-0.39 2608 | GCAG,1908-05-06,-0.3982 2609 | GISTEMP,1908-05-06,-0.4 2610 | GCAG,1908-04-06,-0.4832 2611 | GISTEMP,1908-04-06,-0.46 2612 | GCAG,1908-03-06,-0.6041 2613 | GISTEMP,1908-03-06,-0.58 2614 | GCAG,1908-02-06,-0.3753 2615 | GISTEMP,1908-02-06,-0.36 2616 | GCAG,1908-01-06,-0.3600 2617 | GISTEMP,1908-01-06,-0.46 2618 | GCAG,1907-12-06,-0.3922 2619 | GISTEMP,1907-12-06,-0.5 2620 | GCAG,1907-11-06,-0.5055 2621 | GISTEMP,1907-11-06,-0.51 2622 | GCAG,1907-10-06,-0.3047 2623 | GISTEMP,1907-10-06,-0.24 2624 | GCAG,1907-09-06,-0.3364 2625 | GISTEMP,1907-09-06,-0.32 2626 | GCAG,1907-08-06,-0.3378 2627 | GISTEMP,1907-08-06,-0.37 2628 | GCAG,1907-07-06,-0.3547 2629 | GISTEMP,1907-07-06,-0.35 2630 | GCAG,1907-06-06,-0.3742 2631 | GISTEMP,1907-06-06,-0.43 2632 | GCAG,1907-05-06,-0.4669 2633 | GISTEMP,1907-05-06,-0.46 2634 | GCAG,1907-04-06,-0.3508 2635 | GISTEMP,1907-04-06,-0.4 2636 | GCAG,1907-03-06,-0.2760 2637 | GISTEMP,1907-03-06,-0.25 2638 | GCAG,1907-02-06,-0.4038 2639 | GISTEMP,1907-02-06,-0.53 2640 | GCAG,1907-01-06,-0.3443 2641 | GISTEMP,1907-01-06,-0.44 2642 | GCAG,1906-12-06,-0.1650 2643 | GISTEMP,1906-12-06,-0.18 2644 | GCAG,1906-11-06,-0.3676 2645 | GISTEMP,1906-11-06,-0.38 2646 | GCAG,1906-10-06,-0.2809 2647 | GISTEMP,1906-10-06,-0.2 2648 | GCAG,1906-09-06,-0.3053 2649 | GISTEMP,1906-09-06,-0.25 2650 | GCAG,1906-08-06,-0.2362 2651 | GISTEMP,1906-08-06,-0.19 2652 | GCAG,1906-07-06,-0.2467 2653 | GISTEMP,1906-07-06,-0.27 2654 | GCAG,1906-06-06,-0.1768 2655 | GISTEMP,1906-06-06,-0.22 2656 | GCAG,1906-05-06,-0.2166 2657 | GISTEMP,1906-05-06,-0.21 2658 | GCAG,1906-04-06,-0.0514 2659 | GISTEMP,1906-04-06,-0.02 2660 | GCAG,1906-03-06,-0.1484 2661 | GISTEMP,1906-03-06,-0.15 2662 | GCAG,1906-02-06,-0.2379 2663 | GISTEMP,1906-02-06,-0.34 2664 | GCAG,1906-01-06,-0.1755 2665 | GISTEMP,1906-01-06,-0.31 2666 | GCAG,1905-12-06,-0.1334 2667 | GISTEMP,1905-12-06,-0.21 2668 | GCAG,1905-11-06,-0.0916 2669 | GISTEMP,1905-11-06,-0.08 2670 | GCAG,1905-10-06,-0.2960 2671 | GISTEMP,1905-10-06,-0.23 2672 | GCAG,1905-09-06,-0.2239 2673 | GISTEMP,1905-09-06,-0.15 2674 | GCAG,1905-08-06,-0.2275 2675 | GISTEMP,1905-08-06,-0.21 2676 | GCAG,1905-07-06,-0.1918 2677 | GISTEMP,1905-07-06,-0.25 2678 | GCAG,1905-06-06,-0.2503 2679 | GISTEMP,1905-06-06,-0.31 2680 | GCAG,1905-05-06,-0.2879 2681 | GISTEMP,1905-05-06,-0.33 2682 | GCAG,1905-04-06,-0.4481 2683 | GISTEMP,1905-04-06,-0.36 2684 | GCAG,1905-03-06,-0.3940 2685 | GISTEMP,1905-03-06,-0.25 2686 | GCAG,1905-02-06,-0.6187 2687 | GISTEMP,1905-02-06,-0.59 2688 | GCAG,1905-01-06,-0.3540 2689 | GISTEMP,1905-01-06,-0.38 2690 | GCAG,1904-12-06,-0.2414 2691 | GISTEMP,1904-12-06,-0.29 2692 | GCAG,1904-11-06,-0.1686 2693 | GISTEMP,1904-11-06,-0.16 2694 | GCAG,1904-10-06,-0.4066 2695 | GISTEMP,1904-10-06,-0.35 2696 | GCAG,1904-09-06,-0.4632 2697 | GISTEMP,1904-09-06,-0.47 2698 | GCAG,1904-08-06,-0.4314 2699 | GISTEMP,1904-08-06,-0.43 2700 | GCAG,1904-07-06,-0.4597 2701 | GISTEMP,1904-07-06,-0.48 2702 | GCAG,1904-06-06,-0.4403 2703 | GISTEMP,1904-06-06,-0.49 2704 | GCAG,1904-05-06,-0.4282 2705 | GISTEMP,1904-05-06,-0.5 2706 | GCAG,1904-04-06,-0.4717 2707 | GISTEMP,1904-04-06,-0.5 2708 | GCAG,1904-03-06,-0.5129 2709 | GISTEMP,1904-03-06,-0.46 2710 | GCAG,1904-02-06,-0.4670 2711 | GISTEMP,1904-02-06,-0.55 2712 | GCAG,1904-01-06,-0.5416 2713 | GISTEMP,1904-01-06,-0.64 2714 | GCAG,1903-12-06,-0.3861 2715 | GISTEMP,1903-12-06,-0.47 2716 | GCAG,1903-11-06,-0.3950 2717 | GISTEMP,1903-11-06,-0.38 2718 | GCAG,1903-10-06,-0.4357 2719 | GISTEMP,1903-10-06,-0.42 2720 | GCAG,1903-09-06,-0.3756 2721 | GISTEMP,1903-09-06,-0.43 2722 | GCAG,1903-08-06,-0.4296 2723 | GISTEMP,1903-08-06,-0.44 2724 | GCAG,1903-07-06,-0.3340 2725 | GISTEMP,1903-07-06,-0.3 2726 | GCAG,1903-06-06,-0.3759 2727 | GISTEMP,1903-06-06,-0.44 2728 | GCAG,1903-05-06,-0.3912 2729 | GISTEMP,1903-05-06,-0.41 2730 | GCAG,1903-04-06,-0.3540 2731 | GISTEMP,1903-04-06,-0.39 2732 | GCAG,1903-03-06,-0.2755 2733 | GISTEMP,1903-03-06,-0.23 2734 | GCAG,1903-02-06,-0.0800 2735 | GISTEMP,1903-02-06,-0.06 2736 | GCAG,1903-01-06,-0.2101 2737 | GISTEMP,1903-01-06,-0.27 2738 | GCAG,1902-12-06,-0.3592 2739 | GISTEMP,1902-12-06,-0.46 2740 | GCAG,1902-11-06,-0.3430 2741 | GISTEMP,1902-11-06,-0.36 2742 | GCAG,1902-10-06,-0.2821 2743 | GISTEMP,1902-10-06,-0.27 2744 | GCAG,1902-09-06,-0.2315 2745 | GISTEMP,1902-09-06,-0.2 2746 | GCAG,1902-08-06,-0.2643 2747 | GISTEMP,1902-08-06,-0.28 2748 | GCAG,1902-07-06,-0.2902 2749 | GISTEMP,1902-07-06,-0.26 2750 | GCAG,1902-06-06,-0.3324 2751 | GISTEMP,1902-06-06,-0.34 2752 | GCAG,1902-05-06,-0.2616 2753 | GISTEMP,1902-05-06,-0.31 2754 | GCAG,1902-04-06,-0.2697 2755 | GISTEMP,1902-04-06,-0.27 2756 | GCAG,1902-03-06,-0.1954 2757 | GISTEMP,1902-03-06,-0.29 2758 | GCAG,1902-02-06,-0.0409 2759 | GISTEMP,1902-02-06,-0.03 2760 | GCAG,1902-01-06,-0.0856 2761 | GISTEMP,1902-01-06,-0.19 2762 | GCAG,1901-12-06,-0.2372 2763 | GISTEMP,1901-12-06,-0.3 2764 | GCAG,1901-11-06,-0.1425 2765 | GISTEMP,1901-11-06,-0.17 2766 | GCAG,1901-10-06,-0.2786 2767 | GISTEMP,1901-10-06,-0.29 2768 | GCAG,1901-09-06,-0.2059 2769 | GISTEMP,1901-09-06,-0.17 2770 | GCAG,1901-08-06,-0.1299 2771 | GISTEMP,1901-08-06,-0.13 2772 | GCAG,1901-07-06,-0.1563 2773 | GISTEMP,1901-07-06,-0.09 2774 | GCAG,1901-06-06,-0.1273 2775 | GISTEMP,1901-06-06,-0.1 2776 | GCAG,1901-05-06,-0.1248 2777 | GISTEMP,1901-05-06,-0.18 2778 | GCAG,1901-04-06,-0.0646 2779 | GISTEMP,1901-04-06,-0.06 2780 | GCAG,1901-03-06,-0.0327 2781 | GISTEMP,1901-03-06,0.05 2782 | GCAG,1901-02-06,-0.0741 2783 | GISTEMP,1901-02-06,-0.05 2784 | GCAG,1901-01-06,-0.1259 2785 | GISTEMP,1901-01-06,-0.3 2786 | GCAG,1900-12-06,0.0320 2787 | GISTEMP,1900-12-06,-0.14 2788 | GCAG,1900-11-06,-0.1345 2789 | GISTEMP,1900-11-06,-0.13 2790 | GCAG,1900-10-06,0.0464 2791 | GISTEMP,1900-10-06,0.08 2792 | GCAG,1900-09-06,-0.0600 2793 | GISTEMP,1900-09-06,0.01 2794 | GCAG,1900-08-06,-0.0708 2795 | GISTEMP,1900-08-06,-0.04 2796 | GCAG,1900-07-06,-0.0728 2797 | GISTEMP,1900-07-06,-0.09 2798 | GCAG,1900-06-06,-0.0450 2799 | GISTEMP,1900-06-06,-0.15 2800 | GCAG,1900-05-06,-0.0371 2801 | GISTEMP,1900-05-06,-0.06 2802 | GCAG,1900-04-06,-0.0985 2803 | GISTEMP,1900-04-06,-0.14 2804 | GCAG,1900-03-06,-0.0402 2805 | GISTEMP,1900-03-06,0.02 2806 | GCAG,1900-02-06,-0.0934 2807 | GISTEMP,1900-02-06,-0.08 2808 | GCAG,1900-01-06,-0.2404 2809 | GISTEMP,1900-01-06,-0.4 2810 | GCAG,1899-12-06,-0.1656 2811 | GISTEMP,1899-12-06,-0.27 2812 | GCAG,1899-11-06,0.1523 2813 | GISTEMP,1899-11-06,0.12 2814 | GCAG,1899-10-06,-0.0241 2815 | GISTEMP,1899-10-06,0.0 2816 | GCAG,1899-09-06,-0.0307 2817 | GISTEMP,1899-09-06,0.0 2818 | GCAG,1899-08-06,-0.0664 2819 | GISTEMP,1899-08-06,-0.04 2820 | GCAG,1899-07-06,-0.1259 2821 | GISTEMP,1899-07-06,-0.13 2822 | GCAG,1899-06-06,-0.1977 2823 | GISTEMP,1899-06-06,-0.26 2824 | GCAG,1899-05-06,-0.1203 2825 | GISTEMP,1899-05-06,-0.2 2826 | GCAG,1899-04-06,-0.1946 2827 | GISTEMP,1899-04-06,-0.21 2828 | GCAG,1899-03-06,-0.2549 2829 | GISTEMP,1899-03-06,-0.35 2830 | GCAG,1899-02-06,-0.2787 2831 | GISTEMP,1899-02-06,-0.39 2832 | GCAG,1899-01-06,-0.1005 2833 | GISTEMP,1899-01-06,-0.18 2834 | GCAG,1898-12-06,-0.0073 2835 | GISTEMP,1898-12-06,-0.22 2836 | GCAG,1898-11-06,-0.2417 2837 | GISTEMP,1898-11-06,-0.35 2838 | GCAG,1898-10-06,-0.3234 2839 | GISTEMP,1898-10-06,-0.32 2840 | GCAG,1898-09-06,-0.1968 2841 | GISTEMP,1898-09-06,-0.19 2842 | GCAG,1898-08-06,-0.2306 2843 | GISTEMP,1898-08-06,-0.22 2844 | GCAG,1898-07-06,-0.2426 2845 | GISTEMP,1898-07-06,-0.22 2846 | GCAG,1898-06-06,-0.2078 2847 | GISTEMP,1898-06-06,-0.2 2848 | GCAG,1898-05-06,-0.2887 2849 | GISTEMP,1898-05-06,-0.35 2850 | GCAG,1898-04-06,-0.3467 2851 | GISTEMP,1898-04-06,-0.33 2852 | GCAG,1898-03-06,-0.6515 2853 | GISTEMP,1898-03-06,-0.55 2854 | GCAG,1898-02-06,-0.2785 2855 | GISTEMP,1898-02-06,-0.34 2856 | GCAG,1898-01-06,-0.0399 2857 | GISTEMP,1898-01-06,-0.06 2858 | GCAG,1897-12-06,-0.2989 2859 | GISTEMP,1897-12-06,-0.26 2860 | GCAG,1897-11-06,-0.2619 2861 | GISTEMP,1897-11-06,-0.18 2862 | GCAG,1897-10-06,-0.1608 2863 | GISTEMP,1897-10-06,-0.1 2864 | GCAG,1897-09-06,-0.0247 2865 | GISTEMP,1897-09-06,-0.04 2866 | GCAG,1897-08-06,-0.0735 2867 | GISTEMP,1897-08-06,-0.03 2868 | GCAG,1897-07-06,-0.0401 2869 | GISTEMP,1897-07-06,-0.04 2870 | GCAG,1897-06-06,-0.1000 2871 | GISTEMP,1897-06-06,-0.12 2872 | GCAG,1897-05-06,-0.0256 2873 | GISTEMP,1897-05-06,0.0 2874 | GCAG,1897-04-06,-0.0032 2875 | GISTEMP,1897-04-06,-0.01 2876 | GCAG,1897-03-06,-0.1863 2877 | GISTEMP,1897-03-06,-0.12 2878 | GCAG,1897-02-06,-0.1086 2879 | GISTEMP,1897-02-06,-0.19 2880 | GCAG,1897-01-06,-0.1857 2881 | GISTEMP,1897-01-06,-0.22 2882 | GCAG,1896-12-06,0.0490 2883 | GISTEMP,1896-12-06,-0.12 2884 | GCAG,1896-11-06,-0.1659 2885 | GISTEMP,1896-11-06,-0.16 2886 | GCAG,1896-10-06,-0.0056 2887 | GISTEMP,1896-10-06,0.04 2888 | GCAG,1896-09-06,-0.0679 2889 | GISTEMP,1896-09-06,-0.05 2890 | GCAG,1896-08-06,-0.0723 2891 | GISTEMP,1896-08-06,-0.09 2892 | GCAG,1896-07-06,-0.0509 2893 | GISTEMP,1896-07-06,-0.06 2894 | GCAG,1896-06-06,-0.0925 2895 | GISTEMP,1896-06-06,-0.13 2896 | GCAG,1896-05-06,-0.1042 2897 | GISTEMP,1896-05-06,-0.19 2898 | GCAG,1896-04-06,-0.2660 2899 | GISTEMP,1896-04-06,-0.33 2900 | GCAG,1896-03-06,-0.2079 2901 | GISTEMP,1896-03-06,-0.29 2902 | GCAG,1896-02-06,-0.0789 2903 | GISTEMP,1896-02-06,-0.15 2904 | GCAG,1896-01-06,-0.1056 2905 | GISTEMP,1896-01-06,-0.23 2906 | GCAG,1895-12-06,-0.0690 2907 | GISTEMP,1895-12-06,-0.12 2908 | GCAG,1895-11-06,-0.1602 2909 | GISTEMP,1895-11-06,-0.15 2910 | GCAG,1895-10-06,-0.1317 2911 | GISTEMP,1895-10-06,-0.11 2912 | GCAG,1895-09-06,-0.1329 2913 | GISTEMP,1895-09-06,-0.02 2914 | GCAG,1895-08-06,-0.2243 2915 | GISTEMP,1895-08-06,-0.16 2916 | GCAG,1895-07-06,-0.2010 2917 | GISTEMP,1895-07-06,-0.16 2918 | GCAG,1895-06-06,-0.2938 2919 | GISTEMP,1895-06-06,-0.25 2920 | GCAG,1895-05-06,-0.2076 2921 | GISTEMP,1895-05-06,-0.23 2922 | GCAG,1895-04-06,-0.1868 2923 | GISTEMP,1895-04-06,-0.23 2924 | GCAG,1895-03-06,-0.2879 2925 | GISTEMP,1895-03-06,-0.3 2926 | GCAG,1895-02-06,-0.4136 2927 | GISTEMP,1895-02-06,-0.42 2928 | GCAG,1895-01-06,-0.4389 2929 | GISTEMP,1895-01-06,-0.44 2930 | GCAG,1894-12-06,-0.2412 2931 | GISTEMP,1894-12-06,-0.22 2932 | GCAG,1894-11-06,-0.2979 2933 | GISTEMP,1894-11-06,-0.25 2934 | GCAG,1894-10-06,-0.2135 2935 | GISTEMP,1894-10-06,-0.17 2936 | GCAG,1894-09-06,-0.2531 2937 | GISTEMP,1894-09-06,-0.23 2938 | GCAG,1894-08-06,-0.2735 2939 | GISTEMP,1894-08-06,-0.29 2940 | GCAG,1894-07-06,-0.2738 2941 | GISTEMP,1894-07-06,-0.32 2942 | GCAG,1894-06-06,-0.3487 2943 | GISTEMP,1894-06-06,-0.43 2944 | GCAG,1894-05-06,-0.3018 2945 | GISTEMP,1894-05-06,-0.3 2946 | GCAG,1894-04-06,-0.3023 2947 | GISTEMP,1894-04-06,-0.41 2948 | GCAG,1894-03-06,-0.2064 2949 | GISTEMP,1894-03-06,-0.2 2950 | GCAG,1894-02-06,-0.2215 2951 | GISTEMP,1894-02-06,-0.31 2952 | GCAG,1894-01-06,-0.4360 2953 | GISTEMP,1894-01-06,-0.55 2954 | GCAG,1893-12-06,-0.2452 2955 | GISTEMP,1893-12-06,-0.38 2956 | GCAG,1893-11-06,-0.1657 2957 | GISTEMP,1893-11-06,-0.17 2958 | GCAG,1893-10-06,-0.2099 2959 | GISTEMP,1893-10-06,-0.16 2960 | GCAG,1893-09-06,-0.2587 2961 | GISTEMP,1893-09-06,-0.18 2962 | GCAG,1893-08-06,-0.3281 2963 | GISTEMP,1893-08-06,-0.24 2964 | GCAG,1893-07-06,-0.2018 2965 | GISTEMP,1893-07-06,-0.14 2966 | GCAG,1893-06-06,-0.2405 2967 | GISTEMP,1893-06-06,-0.24 2968 | GCAG,1893-05-06,-0.3421 2969 | GISTEMP,1893-05-06,-0.35 2970 | GCAG,1893-04-06,-0.3500 2971 | GISTEMP,1893-04-06,-0.32 2972 | GCAG,1893-03-06,-0.2218 2973 | GISTEMP,1893-03-06,-0.24 2974 | GCAG,1893-02-06,-0.6107 2975 | GISTEMP,1893-02-06,-0.51 2976 | GCAG,1893-01-06,-0.6796 2977 | GISTEMP,1893-01-06,-0.69 2978 | GCAG,1892-12-06,-0.4708 2979 | GISTEMP,1892-12-06,-0.29 2980 | GCAG,1892-11-06,-0.4728 2981 | GISTEMP,1892-11-06,-0.49 2982 | GCAG,1892-10-06,-0.2464 2983 | GISTEMP,1892-10-06,-0.17 2984 | GCAG,1892-09-06,-0.2198 2985 | GISTEMP,1892-09-06,-0.25 2986 | GCAG,1892-08-06,-0.3279 2987 | GISTEMP,1892-08-06,-0.2 2988 | GCAG,1892-07-06,-0.3497 2989 | GISTEMP,1892-07-06,-0.28 2990 | GCAG,1892-06-06,-0.2831 2991 | GISTEMP,1892-06-06,-0.2 2992 | GCAG,1892-05-06,-0.3081 2993 | GISTEMP,1892-05-06,-0.25 2994 | GCAG,1892-04-06,-0.3203 2995 | GISTEMP,1892-04-06,-0.35 2996 | GCAG,1892-03-06,-0.3032 2997 | GISTEMP,1892-03-06,-0.36 2998 | GCAG,1892-02-06,-0.1353 2999 | GISTEMP,1892-02-06,-0.15 3000 | GCAG,1892-01-06,-0.2372 3001 | GISTEMP,1892-01-06,-0.26 3002 | GCAG,1891-12-06,-0.0421 3003 | GISTEMP,1891-12-06,-0.03 3004 | GCAG,1891-11-06,-0.3968 3005 | GISTEMP,1891-11-06,-0.37 3006 | GCAG,1891-10-06,-0.2861 3007 | GISTEMP,1891-10-06,-0.24 3008 | GCAG,1891-09-06,-0.1514 3009 | GISTEMP,1891-09-06,-0.13 3010 | GCAG,1891-08-06,-0.2313 3011 | GISTEMP,1891-08-06,-0.21 3012 | GCAG,1891-07-06,-0.2264 3013 | GISTEMP,1891-07-06,-0.22 3014 | GCAG,1891-06-06,-0.2023 3015 | GISTEMP,1891-06-06,-0.22 3016 | GCAG,1891-05-06,-0.1374 3017 | GISTEMP,1891-05-06,-0.17 3018 | GCAG,1891-04-06,-0.2523 3019 | GISTEMP,1891-04-06,-0.25 3020 | GCAG,1891-03-06,-0.2120 3021 | GISTEMP,1891-03-06,-0.15 3022 | GCAG,1891-02-06,-0.5228 3023 | GISTEMP,1891-02-06,-0.49 3024 | GCAG,1891-01-06,-0.3772 3025 | GISTEMP,1891-01-06,-0.46 3026 | GCAG,1890-12-06,-0.2302 3027 | GISTEMP,1890-12-06,-0.3 3028 | GCAG,1890-11-06,-0.3419 3029 | GISTEMP,1890-11-06,-0.37 3030 | GCAG,1890-10-06,-0.2941 3031 | GISTEMP,1890-10-06,-0.23 3032 | GCAG,1890-09-06,-0.3508 3033 | GISTEMP,1890-09-06,-0.36 3034 | GCAG,1890-08-06,-0.3257 3035 | GISTEMP,1890-08-06,-0.36 3036 | GCAG,1890-07-06,-0.2802 3037 | GISTEMP,1890-07-06,-0.3 3038 | GCAG,1890-06-06,-0.2875 3039 | GISTEMP,1890-06-06,-0.27 3040 | GCAG,1890-05-06,-0.3892 3041 | GISTEMP,1890-05-06,-0.48 3042 | GCAG,1890-04-06,-0.2588 3043 | GISTEMP,1890-04-06,-0.38 3044 | GCAG,1890-03-06,-0.3189 3045 | GISTEMP,1890-03-06,-0.41 3046 | GCAG,1890-02-06,-0.4268 3047 | GISTEMP,1890-02-06,-0.48 3048 | GCAG,1890-01-06,-0.3594 3049 | GISTEMP,1890-01-06,-0.48 3050 | GCAG,1889-12-06,-0.1750 3051 | GISTEMP,1889-12-06,-0.31 3052 | GCAG,1889-11-06,-0.2769 3053 | GISTEMP,1889-11-06,-0.32 3054 | GCAG,1889-10-06,-0.1913 3055 | GISTEMP,1889-10-06,-0.22 3056 | GCAG,1889-09-06,-0.2264 3057 | GISTEMP,1889-09-06,-0.18 3058 | GCAG,1889-08-06,-0.1370 3059 | GISTEMP,1889-08-06,-0.18 3060 | GCAG,1889-07-06,-0.1604 3061 | GISTEMP,1889-07-06,-0.05 3062 | GCAG,1889-06-06,-0.0698 3063 | GISTEMP,1889-06-06,-0.12 3064 | GCAG,1889-05-06,-0.0326 3065 | GISTEMP,1889-05-06,-0.03 3066 | GCAG,1889-04-06,0.0496 3067 | GISTEMP,1889-04-06,0.04 3068 | GCAG,1889-03-06,0.1207 3069 | GISTEMP,1889-03-06,0.04 3070 | GCAG,1889-02-06,0.0152 3071 | GISTEMP,1889-02-06,0.14 3072 | GCAG,1889-01-06,-0.0944 3073 | GISTEMP,1889-01-06,-0.21 3074 | GCAG,1888-12-06,0.0445 3075 | GISTEMP,1888-12-06,-0.12 3076 | GCAG,1888-11-06,-0.0418 3077 | GISTEMP,1888-11-06,0.0 3078 | GCAG,1888-10-06,0.0190 3079 | GISTEMP,1888-10-06,0.01 3080 | GCAG,1888-09-06,-0.0690 3081 | GISTEMP,1888-09-06,-0.07 3082 | GCAG,1888-08-06,-0.1633 3083 | GISTEMP,1888-08-06,-0.11 3084 | GCAG,1888-07-06,-0.1149 3085 | GISTEMP,1888-07-06,-0.1 3086 | GCAG,1888-06-06,-0.0943 3087 | GISTEMP,1888-06-06,-0.2 3088 | GCAG,1888-05-06,-0.1561 3089 | GISTEMP,1888-05-06,-0.22 3090 | GCAG,1888-04-06,-0.1761 3091 | GISTEMP,1888-04-06,-0.28 3092 | GCAG,1888-03-06,-0.2974 3093 | GISTEMP,1888-03-06,-0.47 3094 | GCAG,1888-02-06,-0.3288 3095 | GISTEMP,1888-02-06,-0.43 3096 | GCAG,1888-01-06,-0.3871 3097 | GISTEMP,1888-01-06,-0.43 3098 | GCAG,1887-12-06,-0.1988 3099 | GISTEMP,1887-12-06,-0.38 3100 | GCAG,1887-11-06,-0.1572 3101 | GISTEMP,1887-11-06,-0.25 3102 | GCAG,1887-10-06,-0.2995 3103 | GISTEMP,1887-10-06,-0.32 3104 | GCAG,1887-09-06,-0.1827 3105 | GISTEMP,1887-09-06,-0.19 3106 | GCAG,1887-08-06,-0.3148 3107 | GISTEMP,1887-08-06,-0.28 3108 | GCAG,1887-07-06,-0.2707 3109 | GISTEMP,1887-07-06,-0.19 3110 | GCAG,1887-06-06,-0.2149 3111 | GISTEMP,1887-06-06,-0.21 3112 | GCAG,1887-05-06,-0.2390 3113 | GISTEMP,1887-05-06,-0.33 3114 | GCAG,1887-04-06,-0.1899 3115 | GISTEMP,1887-04-06,-0.37 3116 | GCAG,1887-03-06,-0.1655 3117 | GISTEMP,1887-03-06,-0.32 3118 | GCAG,1887-02-06,-0.3745 3119 | GISTEMP,1887-02-06,-0.48 3120 | GCAG,1887-01-06,-0.3792 3121 | GISTEMP,1887-01-06,-0.66 3122 | GCAG,1886-12-06,-0.1630 3123 | GISTEMP,1886-12-06,-0.25 3124 | GCAG,1886-11-06,-0.1952 3125 | GISTEMP,1886-11-06,-0.26 3126 | GCAG,1886-10-06,-0.2261 3127 | GISTEMP,1886-10-06,-0.25 3128 | GCAG,1886-09-06,-0.1969 3129 | GISTEMP,1886-09-06,-0.19 3130 | GCAG,1886-08-06,-0.2146 3131 | GISTEMP,1886-08-06,-0.31 3132 | GCAG,1886-07-06,-0.1599 3133 | GISTEMP,1886-07-06,-0.16 3134 | GCAG,1886-06-06,-0.2468 3135 | GISTEMP,1886-06-06,-0.39 3136 | GCAG,1886-05-06,-0.1573 3137 | GISTEMP,1886-05-06,-0.27 3138 | GCAG,1886-04-06,-0.1679 3139 | GISTEMP,1886-04-06,-0.29 3140 | GCAG,1886-03-06,-0.2823 3141 | GISTEMP,1886-03-06,-0.41 3142 | GCAG,1886-02-06,-0.2795 3143 | GISTEMP,1886-02-06,-0.46 3144 | GCAG,1886-01-06,-0.1143 3145 | GISTEMP,1886-01-06,-0.43 3146 | GCAG,1885-12-06,0.0500 3147 | GISTEMP,1885-12-06,-0.07 3148 | GCAG,1885-11-06,-0.1262 3149 | GISTEMP,1885-11-06,-0.22 3150 | GCAG,1885-10-06,-0.1289 3151 | GISTEMP,1885-10-06,-0.2 3152 | GCAG,1885-09-06,-0.1963 3153 | GISTEMP,1885-09-06,-0.19 3154 | GCAG,1885-08-06,-0.2407 3155 | GISTEMP,1885-08-06,-0.27 3156 | GCAG,1885-07-06,-0.2375 3157 | GISTEMP,1885-07-06,-0.29 3158 | GCAG,1885-06-06,-0.3052 3159 | GISTEMP,1885-06-06,-0.5 3160 | GCAG,1885-05-06,-0.2787 3161 | GISTEMP,1885-05-06,-0.42 3162 | GCAG,1885-04-06,-0.2564 3163 | GISTEMP,1885-04-06,-0.45 3164 | GCAG,1885-03-06,-0.1473 3165 | GISTEMP,1885-03-06,-0.24 3166 | GCAG,1885-02-06,-0.2558 3167 | GISTEMP,1885-02-06,-0.3 3168 | GCAG,1885-01-06,-0.4267 3169 | GISTEMP,1885-01-06,-0.66 3170 | GCAG,1884-12-06,-0.1440 3171 | GISTEMP,1884-12-06,-0.3 3172 | GCAG,1884-11-06,-0.2692 3173 | GISTEMP,1884-11-06,-0.3 3174 | GCAG,1884-10-06,-0.1695 3175 | GISTEMP,1884-10-06,-0.22 3176 | GCAG,1884-09-06,-0.2238 3177 | GISTEMP,1884-09-06,-0.24 3178 | GCAG,1884-08-06,-0.2698 3179 | GISTEMP,1884-08-06,-0.27 3180 | GCAG,1884-07-06,-0.2985 3181 | GISTEMP,1884-07-06,-0.35 3182 | GCAG,1884-06-06,-0.1939 3183 | GISTEMP,1884-06-06,-0.38 3184 | GCAG,1884-05-06,-0.1282 3185 | GISTEMP,1884-05-06,-0.32 3186 | GCAG,1884-04-06,-0.1809 3187 | GISTEMP,1884-04-06,-0.36 3188 | GCAG,1884-03-06,-0.2061 3189 | GISTEMP,1884-03-06,-0.36 3190 | GCAG,1884-02-06,-0.1430 3191 | GISTEMP,1884-02-06,-0.13 3192 | GCAG,1884-01-06,-0.1843 3193 | GISTEMP,1884-01-06,-0.18 3194 | GCAG,1883-12-06,-0.0738 3195 | GISTEMP,1883-12-06,-0.19 3196 | GCAG,1883-11-06,-0.1683 3197 | GISTEMP,1883-11-06,-0.21 3198 | GCAG,1883-10-06,-0.1612 3199 | GISTEMP,1883-10-06,-0.12 3200 | GCAG,1883-09-06,-0.1467 3201 | GISTEMP,1883-09-06,-0.19 3202 | GCAG,1883-08-06,-0.0526 3203 | GISTEMP,1883-08-06,-0.14 3204 | GCAG,1883-07-06,-0.0849 3205 | GISTEMP,1883-07-06,-0.09 3206 | GCAG,1883-06-06,-0.0066 3207 | GISTEMP,1883-06-06,-0.13 3208 | GCAG,1883-05-06,-0.1455 3209 | GISTEMP,1883-05-06,-0.26 3210 | GCAG,1883-04-06,-0.1746 3211 | GISTEMP,1883-04-06,-0.25 3212 | GCAG,1883-03-06,-0.1326 3213 | GISTEMP,1883-03-06,-0.18 3214 | GCAG,1883-02-06,-0.2915 3215 | GISTEMP,1883-02-06,-0.42 3216 | GCAG,1883-01-06,-0.2707 3217 | GISTEMP,1883-01-06,-0.34 3218 | GCAG,1882-12-06,-0.1705 3219 | GISTEMP,1882-12-06,-0.25 3220 | GCAG,1882-11-06,-0.1279 3221 | GISTEMP,1882-11-06,-0.21 3222 | GCAG,1882-10-06,-0.2101 3223 | GISTEMP,1882-10-06,-0.23 3224 | GCAG,1882-09-06,0.0077 3225 | GISTEMP,1882-09-06,-0.01 3226 | GCAG,1882-08-06,-0.0037 3227 | GISTEMP,1882-08-06,0.03 3228 | GCAG,1882-07-06,-0.0666 3229 | GISTEMP,1882-07-06,-0.11 3230 | GCAG,1882-06-06,-0.1391 3231 | GISTEMP,1882-06-06,-0.25 3232 | GCAG,1882-05-06,-0.1459 3233 | GISTEMP,1882-05-06,-0.18 3234 | GCAG,1882-04-06,-0.1241 3235 | GISTEMP,1882-04-06,-0.2 3236 | GCAG,1882-03-06,0.0754 3237 | GISTEMP,1882-03-06,0.01 3238 | GCAG,1882-02-06,0.0385 3239 | GISTEMP,1882-02-06,0.08 3240 | GCAG,1882-01-06,0.0883 3241 | GISTEMP,1882-01-06,0.09 3242 | GCAG,1881-12-06,-0.0439 3243 | GISTEMP,1881-12-06,-0.16 3244 | GCAG,1881-11-06,-0.2194 3245 | GISTEMP,1881-11-06,-0.26 3246 | GCAG,1881-10-06,-0.2207 3247 | GISTEMP,1881-10-06,-0.2 3248 | GCAG,1881-09-06,-0.1824 3249 | GISTEMP,1881-09-06,-0.09 3250 | GCAG,1881-08-06,-0.0519 3251 | GISTEMP,1881-08-06,-0.03 3252 | GCAG,1881-07-06,-0.0329 3253 | GISTEMP,1881-07-06,-0.07 3254 | GCAG,1881-06-06,-0.0892 3255 | GISTEMP,1881-06-06,-0.28 3256 | GCAG,1881-05-06,0.0284 3257 | GISTEMP,1881-05-06,-0.04 3258 | GCAG,1881-04-06,0.0734 3259 | GISTEMP,1881-04-06,-0.03 3260 | GCAG,1881-03-06,0.0348 3261 | GISTEMP,1881-03-06,0.01 3262 | GCAG,1881-02-06,-0.0296 3263 | GISTEMP,1881-02-06,-0.14 3264 | GCAG,1881-01-06,-0.0205 3265 | GISTEMP,1881-01-06,-0.1 3266 | GCAG,1880-12-06,-0.0775 3267 | GISTEMP,1880-12-06,-0.22 3268 | GCAG,1880-11-06,-0.2672 3269 | GISTEMP,1880-11-06,-0.19 3270 | GCAG,1880-10-06,-0.1786 3271 | GISTEMP,1880-10-06,-0.16 3272 | GCAG,1880-09-06,-0.0817 3273 | GISTEMP,1880-09-06,-0.17 3274 | GCAG,1880-08-06,-0.0725 3275 | GISTEMP,1880-08-06,-0.08 3276 | GCAG,1880-07-06,-0.1491 3277 | GISTEMP,1880-07-06,-0.24 3278 | GCAG,1880-06-06,-0.1692 3279 | GISTEMP,1880-06-06,-0.29 3280 | GCAG,1880-05-06,-0.0738 3281 | GISTEMP,1880-05-06,-0.14 3282 | GCAG,1880-04-06,-0.0499 3283 | GISTEMP,1880-04-06,-0.27 3284 | GCAG,1880-03-06,-0.1357 3285 | GISTEMP,1880-03-06,-0.18 3286 | GCAG,1880-02-06,-0.1229 3287 | GISTEMP,1880-02-06,-0.21 3288 | GCAG,1880-01-06,0.0009 3289 | GISTEMP,1880-01-06,-0.3 3290 | -------------------------------------------------------------------------------- /notebooks/PostgreSQL_to_Pandas.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# From PostgreSQL to Pandas" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "*By Naysan Saran, May 2020.*" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": {}, 20 | "source": [ 21 | "## 1 - Introduction" 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "In this tutorial we will go through all the steps required to get a Pandas dataframe from an SQL request using Psycopg2. Here we suppose that the SQL table **MonthlyTemp** is already populated. The first rows of the table look like this" 29 | ] 30 | }, 31 | { 32 | "cell_type": "raw", 33 | "metadata": {}, 34 | "source": [ 35 | " id | source | datetime | mean_temp \n", 36 | "--------+---------+------------+-----------\n", 37 | " 860897 | GCAG | 2016-12-06 | 0.7895\n", 38 | " 860898 | GISTEMP | 2016-12-06 | 0.81\n", 39 | " 860899 | GCAG | 2016-11-06 | 0.7504\n", 40 | " 860900 | GISTEMP | 2016-11-06 | 0.93\n", 41 | " 860901 | GCAG | 2016-10-06 | 0.7292\n" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 1, 47 | "metadata": {}, 48 | "outputs": [], 49 | "source": [ 50 | "import psycopg2\n", 51 | "import pandas as pd" 52 | ] 53 | }, 54 | { 55 | "cell_type": "markdown", 56 | "metadata": {}, 57 | "source": [ 58 | "Fist, let's specify the connection parameters as a Python dictionary. " 59 | ] 60 | }, 61 | { 62 | "cell_type": "code", 63 | "execution_count": 2, 64 | "metadata": {}, 65 | "outputs": [], 66 | "source": [ 67 | "param_dic = {\n", 68 | " \"host\" : \"localhost\",\n", 69 | " \"database\" : \"globaldata\",\n", 70 | " \"user\" : \"myuser\",\n", 71 | " \"password\" : \"Passw0rd\"\n", 72 | "}" 73 | ] 74 | }, 75 | { 76 | "cell_type": "markdown", 77 | "metadata": {}, 78 | "source": [ 79 | "This function will allow us to connect to the database" 80 | ] 81 | }, 82 | { 83 | "cell_type": "code", 84 | "execution_count": 3, 85 | "metadata": {}, 86 | "outputs": [], 87 | "source": [ 88 | "def connect(params_dic):\n", 89 | " \"\"\" Connect to the PostgreSQL database server \"\"\"\n", 90 | " conn = None\n", 91 | " try:\n", 92 | " # connect to the PostgreSQL server\n", 93 | " print('Connecting to the PostgreSQL database...')\n", 94 | " conn = psycopg2.connect(**params_dic)\n", 95 | " except (Exception, psycopg2.DatabaseError) as error:\n", 96 | " print(error)\n", 97 | " sys.exit(1) \n", 98 | " print(\"Connection successful\")\n", 99 | " return conn\n" 100 | ] 101 | }, 102 | { 103 | "cell_type": "markdown", 104 | "metadata": {}, 105 | "source": [ 106 | "Connect to the database" 107 | ] 108 | }, 109 | { 110 | "cell_type": "code", 111 | "execution_count": 4, 112 | "metadata": {}, 113 | "outputs": [ 114 | { 115 | "name": "stdout", 116 | "output_type": "stream", 117 | "text": [ 118 | "Connecting to the PostgreSQL database...\n", 119 | "Connection successful\n" 120 | ] 121 | } 122 | ], 123 | "source": [ 124 | "conn = connect(param_dic)" 125 | ] 126 | }, 127 | { 128 | "cell_type": "code", 129 | "execution_count": 5, 130 | "metadata": {}, 131 | "outputs": [], 132 | "source": [ 133 | "def postgresql_to_dataframe(conn, select_query, column_names):\n", 134 | " \"\"\"\n", 135 | " Tranform a SELECT query into a pandas dataframe\n", 136 | " \"\"\"\n", 137 | " cursor = conn.cursor()\n", 138 | " try:\n", 139 | " cursor.execute(select_query)\n", 140 | " except (Exception, psycopg2.DatabaseError) as error:\n", 141 | " print(\"Error: %s\" % error)\n", 142 | " cursor.close()\n", 143 | " return 1\n", 144 | " \n", 145 | " # Naturally we get a list of tupples\n", 146 | " tupples = cursor.fetchall()\n", 147 | " cursor.close()\n", 148 | " \n", 149 | " # We just need to turn it into a pandas dataframe\n", 150 | " df = pd.DataFrame(tupples, columns=column_names)\n", 151 | " return df\n" 152 | ] 153 | }, 154 | { 155 | "cell_type": "markdown", 156 | "metadata": {}, 157 | "source": [ 158 | "### Example 1: keeping the original column names" 159 | ] 160 | }, 161 | { 162 | "cell_type": "code", 163 | "execution_count": 6, 164 | "metadata": { 165 | "scrolled": true 166 | }, 167 | "outputs": [ 168 | { 169 | "data": { 170 | "text/html": [ 171 | "
\n", 172 | "\n", 185 | "\n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | "
idsourcedatetimemean_temp
0860897GCAG2016-12-060.7895
1860898GISTEMP2016-12-060.8100
2860899GCAG2016-11-060.7504
3860900GISTEMP2016-11-060.9300
4860901GCAG2016-10-060.7292
\n", 233 | "
" 234 | ], 235 | "text/plain": [ 236 | " id source datetime mean_temp\n", 237 | "0 860897 GCAG 2016-12-06 0.7895\n", 238 | "1 860898 GISTEMP 2016-12-06 0.8100\n", 239 | "2 860899 GCAG 2016-11-06 0.7504\n", 240 | "3 860900 GISTEMP 2016-11-06 0.9300\n", 241 | "4 860901 GCAG 2016-10-06 0.7292" 242 | ] 243 | }, 244 | "execution_count": 6, 245 | "metadata": {}, 246 | "output_type": "execute_result" 247 | } 248 | ], 249 | "source": [ 250 | "column_names = [\"id\", \"source\", \"datetime\", \"mean_temp\"]\n", 251 | "# Execute the \"SELECT *\" query\n", 252 | "df = postgresql_to_dataframe(conn, \"select * from MonthlyTemp\", column_names)\n", 253 | "df.head()" 254 | ] 255 | }, 256 | { 257 | "cell_type": "markdown", 258 | "metadata": {}, 259 | "source": [ 260 | "### Example 2: changing the original column names" 261 | ] 262 | }, 263 | { 264 | "cell_type": "code", 265 | "execution_count": 7, 266 | "metadata": {}, 267 | "outputs": [ 268 | { 269 | "data": { 270 | "text/html": [ 271 | "
\n", 272 | "\n", 285 | "\n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | "
timestamptemperature
02016-12-060.7895
12016-12-060.8100
22016-11-060.7504
32016-11-060.9300
42016-10-060.7292
\n", 321 | "
" 322 | ], 323 | "text/plain": [ 324 | " timestamp temperature\n", 325 | "0 2016-12-06 0.7895\n", 326 | "1 2016-12-06 0.8100\n", 327 | "2 2016-11-06 0.7504\n", 328 | "3 2016-11-06 0.9300\n", 329 | "4 2016-10-06 0.7292" 330 | ] 331 | }, 332 | "execution_count": 7, 333 | "metadata": {}, 334 | "output_type": "execute_result" 335 | } 336 | ], 337 | "source": [ 338 | "column_names = [\"timestamp\", \"temperature\"]\n", 339 | "df = postgresql_to_dataframe(conn, \"select datetime, mean_temp from MonthlyTemp\", column_names)\n", 340 | "df.head()" 341 | ] 342 | }, 343 | { 344 | "cell_type": "code", 345 | "execution_count": 8, 346 | "metadata": {}, 347 | "outputs": [], 348 | "source": [ 349 | "# Close the connection\n", 350 | "conn.close()" 351 | ] 352 | }, 353 | { 354 | "cell_type": "code", 355 | "execution_count": null, 356 | "metadata": {}, 357 | "outputs": [], 358 | "source": [] 359 | } 360 | ], 361 | "metadata": { 362 | "kernelspec": { 363 | "display_name": "Python 3", 364 | "language": "python", 365 | "name": "python3" 366 | }, 367 | "language_info": { 368 | "codemirror_mode": { 369 | "name": "ipython", 370 | "version": 3 371 | }, 372 | "file_extension": ".py", 373 | "mimetype": "text/x-python", 374 | "name": "python", 375 | "nbconvert_exporter": "python", 376 | "pygments_lexer": "ipython3", 377 | "version": "3.6.8" 378 | } 379 | }, 380 | "nbformat": 4, 381 | "nbformat_minor": 2 382 | } 383 | -------------------------------------------------------------------------------- /notebooks/Psycopg2_Bulk_Insert_copy_from.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# From Pandas to PostgreSQL: Bulk Insert with copy_from()" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "*By Naysan Saran, June 2020.*" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": {}, 20 | "source": [ 21 | "## 1 - Introduction" 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "This file is associated with my blog post. \n", 29 | "\n", 30 | "First we need to load the dataframe:" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 1, 36 | "metadata": {}, 37 | "outputs": [ 38 | { 39 | "data": { 40 | "text/html": [ 41 | "
\n", 42 | "\n", 55 | "\n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | "
sourcedatetimemean_temp
0GCAG2016-12-060.7895
1GISTEMP2016-12-060.8100
2GCAG2016-11-060.7504
\n", 85 | "
" 86 | ], 87 | "text/plain": [ 88 | " source datetime mean_temp\n", 89 | "0 GCAG 2016-12-06 0.7895\n", 90 | "1 GISTEMP 2016-12-06 0.8100\n", 91 | "2 GCAG 2016-11-06 0.7504" 92 | ] 93 | }, 94 | "execution_count": 1, 95 | "metadata": {}, 96 | "output_type": "execute_result" 97 | } 98 | ], 99 | "source": [ 100 | "import pandas as pd\n", 101 | "\n", 102 | "csv_file = \"../data/global-temp-monthly.csv\"\n", 103 | "df = pd.read_csv(csv_file)\n", 104 | "df = df.rename(columns={\n", 105 | " \"Source\": \"source\", \n", 106 | " \"Date\": \"datetime\",\n", 107 | " \"Mean\": \"mean_temp\"\n", 108 | "})\n", 109 | "df.head(3)" 110 | ] 111 | }, 112 | { 113 | "cell_type": "markdown", 114 | "metadata": {}, 115 | "source": [ 116 | "## Option 1: saving the dataframe to disk first" 117 | ] 118 | }, 119 | { 120 | "cell_type": "code", 121 | "execution_count": 2, 122 | "metadata": {}, 123 | "outputs": [ 124 | { 125 | "name": "stdout", 126 | "output_type": "stream", 127 | "text": [ 128 | "Connecting to the PostgreSQL database...\n", 129 | "Connection successful\n", 130 | "copy_from_file() done\n" 131 | ] 132 | } 133 | ], 134 | "source": [ 135 | "import psycopg2\n", 136 | "import os\n", 137 | "\n", 138 | "# Connection parameters\n", 139 | "param_dic = {\n", 140 | " \"host\" : \"localhost\",\n", 141 | " \"database\" : \"globaldata\",\n", 142 | " \"user\" : \"myuser\",\n", 143 | " \"password\" : \"Passw0rd\"\n", 144 | "}\n", 145 | "\n", 146 | "def connect(params_dic):\n", 147 | " \"\"\" Connect to the PostgreSQL database server \"\"\"\n", 148 | " conn = None\n", 149 | " try:\n", 150 | " # connect to the PostgreSQL server\n", 151 | " print('Connecting to the PostgreSQL database...')\n", 152 | " conn = psycopg2.connect(**params_dic)\n", 153 | " except (Exception, psycopg2.DatabaseError) as error:\n", 154 | " print(error)\n", 155 | " sys.exit(1) \n", 156 | " print(\"Connection successful\")\n", 157 | " return conn\n", 158 | "\n", 159 | "\n", 160 | "def copy_from_file(conn, df, table):\n", 161 | " \"\"\"\n", 162 | " Here we are going save the dataframe on disk as \n", 163 | " a csv file, load the csv file \n", 164 | " and use copy_from() to copy it to the table\n", 165 | " \"\"\"\n", 166 | " # Save the dataframe to disk\n", 167 | " tmp_df = \"./tmp_dataframe.csv\"\n", 168 | " df.to_csv(tmp_df, index_label='id', header=False)\n", 169 | " f = open(tmp_df, 'r')\n", 170 | " cursor = conn.cursor()\n", 171 | " try:\n", 172 | " cursor.copy_from(f, table, sep=\",\")\n", 173 | " conn.commit()\n", 174 | " except (Exception, psycopg2.DatabaseError) as error:\n", 175 | " os.remove(tmp_df)\n", 176 | " print(\"Error: %s\" % error)\n", 177 | " conn.rollback()\n", 178 | " cursor.close()\n", 179 | " return 1\n", 180 | " print(\"copy_from_file() done\")\n", 181 | " cursor.close()\n", 182 | " os.remove(tmp_df)\n", 183 | "\n", 184 | " \n", 185 | "#-----------------------------------------------\n", 186 | "# Main code\n", 187 | "#-----------------------------------------------\n", 188 | "conn = connect(param_dic) # connect to the database\n", 189 | "copy_from_file(conn, df, 'MonthlyTemp') # copy the dataframe to SQL\n", 190 | "conn.close() # close the connection" 191 | ] 192 | }, 193 | { 194 | "cell_type": "markdown", 195 | "metadata": {}, 196 | "source": [ 197 | "## Option 2: Saving the dataframe to memory using StringIO" 198 | ] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "execution_count": 4, 203 | "metadata": {}, 204 | "outputs": [ 205 | { 206 | "name": "stdout", 207 | "output_type": "stream", 208 | "text": [ 209 | "Connecting to the PostgreSQL database...\n", 210 | "Connection successful\n", 211 | "copy_from_stringio() done\n" 212 | ] 213 | } 214 | ], 215 | "source": [ 216 | "import psycopg2\n", 217 | "from io import StringIO\n", 218 | "\n", 219 | "# Connection parameters\n", 220 | "param_dic = {\n", 221 | " \"host\" : \"localhost\",\n", 222 | " \"database\" : \"globaldata\",\n", 223 | " \"user\" : \"myuser\",\n", 224 | " \"password\" : \"Passw0rd\"\n", 225 | "}\n", 226 | "\n", 227 | "def connect(params_dic):\n", 228 | " \"\"\" Connect to the PostgreSQL database server \"\"\"\n", 229 | " conn = None\n", 230 | " try:\n", 231 | " # connect to the PostgreSQL server\n", 232 | " print('Connecting to the PostgreSQL database...')\n", 233 | " conn = psycopg2.connect(**params_dic)\n", 234 | " except (Exception, psycopg2.DatabaseError) as error:\n", 235 | " print(error)\n", 236 | " sys.exit(1) \n", 237 | " print(\"Connection successful\")\n", 238 | " return conn\n", 239 | "\n", 240 | "\n", 241 | "def copy_from_stringio(conn, df, table):\n", 242 | " \"\"\"\n", 243 | " Here we are going save the dataframe in memory \n", 244 | " and use copy_from() to copy it to the table\n", 245 | " \"\"\"\n", 246 | " # save dataframe to an in memory buffer\n", 247 | " buffer = StringIO()\n", 248 | " df.to_csv(buffer, index_label='id', header=False)\n", 249 | " buffer.seek(0)\n", 250 | " \n", 251 | " cursor = conn.cursor()\n", 252 | " try:\n", 253 | " cursor.copy_from(buffer, table, sep=\",\")\n", 254 | " conn.commit()\n", 255 | " except (Exception, psycopg2.DatabaseError) as error:\n", 256 | " print(\"Error: %s\" % error)\n", 257 | " conn.rollback()\n", 258 | " cursor.close()\n", 259 | " return 1\n", 260 | " print(\"copy_from_stringio() done\")\n", 261 | " cursor.close()\n", 262 | "\n", 263 | " \n", 264 | "#-----------------------------------------------\n", 265 | "# Main code\n", 266 | "#-----------------------------------------------\n", 267 | "conn = connect(param_dic) # connect to the database\n", 268 | "copy_from_stringio(conn, df, 'MonthlyTemp') # copy the dataframe to SQL\n", 269 | "conn.close() # close the connection" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": null, 275 | "metadata": {}, 276 | "outputs": [], 277 | "source": [] 278 | } 279 | ], 280 | "metadata": { 281 | "kernelspec": { 282 | "display_name": "Python 3", 283 | "language": "python", 284 | "name": "python3" 285 | }, 286 | "language_info": { 287 | "codemirror_mode": { 288 | "name": "ipython", 289 | "version": 3 290 | }, 291 | "file_extension": ".py", 292 | "mimetype": "text/x-python", 293 | "name": "python", 294 | "nbconvert_exporter": "python", 295 | "pygments_lexer": "ipython3", 296 | "version": "3.6.8" 297 | } 298 | }, 299 | "nbformat": 4, 300 | "nbformat_minor": 2 301 | } 302 | -------------------------------------------------------------------------------- /notebooks/Psycopg2_Bulk_Insert_execute_mogrify.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# From Pandas to PostgreSQL: mogrify() then execute()" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "*By Naysan Saran, August 2020.*" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": {}, 20 | "source": [ 21 | "## 1 - Introduction" 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "This file is associated with my blog post. \n", 29 | "\n", 30 | "First we need to load the dataframe:" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 1, 36 | "metadata": {}, 37 | "outputs": [ 38 | { 39 | "data": { 40 | "text/html": [ 41 | "
\n", 42 | "\n", 55 | "\n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | "
sourcedatetimemean_temp
0GCAG2016-12-060.7895
1GISTEMP2016-12-060.8100
2GCAG2016-11-060.7504
\n", 85 | "
" 86 | ], 87 | "text/plain": [ 88 | " source datetime mean_temp\n", 89 | "0 GCAG 2016-12-06 0.7895\n", 90 | "1 GISTEMP 2016-12-06 0.8100\n", 91 | "2 GCAG 2016-11-06 0.7504" 92 | ] 93 | }, 94 | "execution_count": 1, 95 | "metadata": {}, 96 | "output_type": "execute_result" 97 | } 98 | ], 99 | "source": [ 100 | "import pandas as pd\n", 101 | "\n", 102 | "csv_file = \"../data/global-temp-monthly.csv\"\n", 103 | "df = pd.read_csv(csv_file)\n", 104 | "df = df.rename(columns={\n", 105 | " \"Source\": \"source\", \n", 106 | " \"Date\": \"datetime\",\n", 107 | " \"Mean\": \"mean_temp\"\n", 108 | "})\n", 109 | "df.head(3)" 110 | ] 111 | }, 112 | { 113 | "cell_type": "markdown", 114 | "metadata": {}, 115 | "source": [ 116 | "## 2 - Full code" 117 | ] 118 | }, 119 | { 120 | "cell_type": "code", 121 | "execution_count": 2, 122 | "metadata": {}, 123 | "outputs": [ 124 | { 125 | "name": "stdout", 126 | "output_type": "stream", 127 | "text": [ 128 | "Connecting to the PostgreSQL database...\n", 129 | "Connection successful\n", 130 | "execute_mogrify() done\n" 131 | ] 132 | } 133 | ], 134 | "source": [ 135 | "import psycopg2\n", 136 | "import os\n", 137 | "\n", 138 | "# Connection parameters\n", 139 | "param_dic = {\n", 140 | " \"host\" : \"localhost\",\n", 141 | " \"database\" : \"globaldata\",\n", 142 | " \"user\" : \"myuser\",\n", 143 | " \"password\" : \"Passw0rd\"\n", 144 | "}\n", 145 | "\n", 146 | "def connect(params_dic):\n", 147 | " \"\"\" Connect to the PostgreSQL database server \"\"\"\n", 148 | " conn = None\n", 149 | " try:\n", 150 | " # connect to the PostgreSQL server\n", 151 | " print('Connecting to the PostgreSQL database...')\n", 152 | " conn = psycopg2.connect(**params_dic)\n", 153 | " except (Exception, psycopg2.DatabaseError) as error:\n", 154 | " print(error)\n", 155 | " sys.exit(1) \n", 156 | " print(\"Connection successful\")\n", 157 | " return conn\n", 158 | "\n", 159 | "\n", 160 | "def execute_mogrify(conn, df, table):\n", 161 | " \"\"\"\n", 162 | " Using cursor.mogrify() to build the bulk insert query\n", 163 | " then cursor.execute() to execute the query\n", 164 | " \"\"\"\n", 165 | " # Create a list of tupples from the dataframe values\n", 166 | " tuples = [tuple(x) for x in df.to_numpy()]\n", 167 | " # Comma-separated dataframe columns\n", 168 | " cols = ','.join(list(df.columns))\n", 169 | " # SQL quert to execute\n", 170 | " cursor = conn.cursor()\n", 171 | " values = [cursor.mogrify(\"(%s,%s,%s)\", tup).decode('utf8') for tup in tuples]\n", 172 | " query = \"INSERT INTO %s(%s) VALUES \" % (table, cols) + \",\".join(values)\n", 173 | " \n", 174 | " try:\n", 175 | " cursor.execute(query, tuples)\n", 176 | " conn.commit()\n", 177 | " except (Exception, psycopg2.DatabaseError) as error:\n", 178 | " print(\"Error: %s\" % error)\n", 179 | " conn.rollback()\n", 180 | " cursor.close()\n", 181 | " return 1\n", 182 | " print(\"execute_mogrify() done\")\n", 183 | " cursor.close()\n", 184 | "\n", 185 | " \n", 186 | "#-----------------------------------------------\n", 187 | "# Main code\n", 188 | "#-----------------------------------------------\n", 189 | "conn = connect(param_dic) # connect to the database\n", 190 | "execute_mogrify(conn, df, 'MonthlyTemp') # Run the execute_many strategy\n", 191 | "conn.close() # close the connection" 192 | ] 193 | }, 194 | { 195 | "cell_type": "code", 196 | "execution_count": null, 197 | "metadata": {}, 198 | "outputs": [], 199 | "source": [] 200 | } 201 | ], 202 | "metadata": { 203 | "kernelspec": { 204 | "display_name": "Python 3", 205 | "language": "python", 206 | "name": "python3" 207 | }, 208 | "language_info": { 209 | "codemirror_mode": { 210 | "name": "ipython", 211 | "version": 3 212 | }, 213 | "file_extension": ".py", 214 | "mimetype": "text/x-python", 215 | "name": "python", 216 | "nbconvert_exporter": "python", 217 | "pygments_lexer": "ipython3", 218 | "version": "3.6.8" 219 | } 220 | }, 221 | "nbformat": 4, 222 | "nbformat_minor": 2 223 | } 224 | -------------------------------------------------------------------------------- /notebooks/Psycopg2_Bulk_Insert_execute_values.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# From Pandas to PostgreSQL: Bulk Insert with execute_values()" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "*By Naysan Saran, May 2020.*" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": {}, 20 | "source": [ 21 | "## 1 - Introduction" 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "In this tutorial we will go through all the steps required to \n", 29 | "\n", 30 | "- turn a csv into a pandas dataframe\n", 31 | "- create the corresponding PostgreSQL database and table\n", 32 | "- insert the pandas dataframe in the PostgreSQL table using execute_values()\n", 33 | "\n", 34 | "The data for this tutorial is freely available on https://datahub.io/core/global-temp, but you will also find it in the data/ directory of this github repository. " 35 | ] 36 | }, 37 | { 38 | "cell_type": "markdown", 39 | "metadata": {}, 40 | "source": [ 41 | "## 2 - From csv file to pandas dataframe" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 1, 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "name": "stdout", 51 | "output_type": "stream", 52 | "text": [ 53 | "Total number of rows = 3288\n" 54 | ] 55 | }, 56 | { 57 | "data": { 58 | "text/html": [ 59 | "
\n", 60 | "\n", 73 | "\n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | "
SourceDateMean
0GCAG2016-12-060.7895
1GISTEMP2016-12-060.8100
2GCAG2016-11-060.7504
\n", 103 | "
" 104 | ], 105 | "text/plain": [ 106 | " Source Date Mean\n", 107 | "0 GCAG 2016-12-06 0.7895\n", 108 | "1 GISTEMP 2016-12-06 0.8100\n", 109 | "2 GCAG 2016-11-06 0.7504" 110 | ] 111 | }, 112 | "execution_count": 1, 113 | "metadata": {}, 114 | "output_type": "execute_result" 115 | } 116 | ], 117 | "source": [ 118 | "import pandas as pd\n", 119 | "\n", 120 | "csv_file = \"../data/global-temp-monthly.csv\"\n", 121 | "df = pd.read_csv(csv_file)\n", 122 | "print(\"Total number of rows = %s\" % len(df.index))\n", 123 | "df.head(3)" 124 | ] 125 | }, 126 | { 127 | "cell_type": "code", 128 | "execution_count": 2, 129 | "metadata": {}, 130 | "outputs": [ 131 | { 132 | "data": { 133 | "text/html": [ 134 | "
\n", 135 | "\n", 148 | "\n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | "
sourcedatetimemean_temp
0GCAG2016-12-060.7895
1GISTEMP2016-12-060.8100
2GCAG2016-11-060.7504
\n", 178 | "
" 179 | ], 180 | "text/plain": [ 181 | " source datetime mean_temp\n", 182 | "0 GCAG 2016-12-06 0.7895\n", 183 | "1 GISTEMP 2016-12-06 0.8100\n", 184 | "2 GCAG 2016-11-06 0.7504" 185 | ] 186 | }, 187 | "execution_count": 2, 188 | "metadata": {}, 189 | "output_type": "execute_result" 190 | } 191 | ], 192 | "source": [ 193 | "df = df.rename(columns={\n", 194 | " \"Source\": \"source\", \n", 195 | " \"Date\": \"datetime\",\n", 196 | " \"Mean\": \"mean_temp\"\n", 197 | "})\n", 198 | "df.head(3)" 199 | ] 200 | }, 201 | { 202 | "cell_type": "markdown", 203 | "metadata": {}, 204 | "source": [ 205 | "## 3 - PostgreSQL database, table and user setup" 206 | ] 207 | }, 208 | { 209 | "cell_type": "markdown", 210 | "metadata": {}, 211 | "source": [ 212 | "First we create the database. I'm assuming you already have PostgreSQL installed on your system. Otherwise you can refer to this link first https://www.postgresql.org/download/." 213 | ] 214 | }, 215 | { 216 | "cell_type": "markdown", 217 | "metadata": {}, 218 | "source": [ 219 | "Creating the database - Ubuntu command line instructions " 220 | ] 221 | }, 222 | { 223 | "cell_type": "raw", 224 | "metadata": {}, 225 | "source": [ 226 | ">> sudo -i -u postgres\n", 227 | ">> psql\n", 228 | "\n", 229 | "postgres=# CREATE DATABASE globaldata;\n", 230 | "postgres=# \\c globaldata;" 231 | ] 232 | }, 233 | { 234 | "cell_type": "markdown", 235 | "metadata": {}, 236 | "source": [ 237 | "For the sake of simplicity, we are going to create one table only to store everything." 238 | ] 239 | }, 240 | { 241 | "cell_type": "raw", 242 | "metadata": {}, 243 | "source": [ 244 | "postgres=# CREATE TABLE MonthlyTemp (\n", 245 | " id SERIAL PRIMARY KEY,\n", 246 | " source VARCHAR (16) NOT NULL,\n", 247 | " datetime DATE,\n", 248 | " mean_temp FLOAT\n", 249 | ");" 250 | ] 251 | }, 252 | { 253 | "cell_type": "markdown", 254 | "metadata": {}, 255 | "source": [ 256 | "Lastly, let's create a user and give them access to our new table." 257 | ] 258 | }, 259 | { 260 | "cell_type": "raw", 261 | "metadata": {}, 262 | "source": [ 263 | "postgres=# CREATE USER myuser WITH PASSWORD 'Passw0rd';\n", 264 | "postgres=# GRANT SELECT, INSERT, DELETE, UPDATE on MonthlyTemp to myuser;" 265 | ] 266 | }, 267 | { 268 | "cell_type": "markdown", 269 | "metadata": {}, 270 | "source": [ 271 | "Last permission to grant, so 'myuser' can autoincrement the 'id' primary key without having to specify it" 272 | ] 273 | }, 274 | { 275 | "cell_type": "raw", 276 | "metadata": {}, 277 | "source": [ 278 | "postgres=# GRANT USAGE on sequence MonthlyTemp_id_seq to myuser;\n", 279 | "postgres=# \\q" 280 | ] 281 | }, 282 | { 283 | "cell_type": "markdown", 284 | "metadata": {}, 285 | "source": [ 286 | "## 4 - Basic Python functions to access the database" 287 | ] 288 | }, 289 | { 290 | "cell_type": "markdown", 291 | "metadata": {}, 292 | "source": [ 293 | "Alright back to Python. Here are all the functions we will need. For a complete, functioning code, please refer to the src/ subdirectory." 294 | ] 295 | }, 296 | { 297 | "cell_type": "code", 298 | "execution_count": 3, 299 | "metadata": {}, 300 | "outputs": [], 301 | "source": [ 302 | "import psycopg2\n", 303 | "import psycopg2.extras as extras" 304 | ] 305 | }, 306 | { 307 | "cell_type": "markdown", 308 | "metadata": {}, 309 | "source": [ 310 | "Fist, let's specify the connection parameters as a Python dictionary. The database, username and password will be the same that we created in part 3." 311 | ] 312 | }, 313 | { 314 | "cell_type": "code", 315 | "execution_count": 4, 316 | "metadata": {}, 317 | "outputs": [], 318 | "source": [ 319 | "param_dic = {\n", 320 | " \"host\" : \"localhost\",\n", 321 | " \"database\" : \"globaldata\",\n", 322 | " \"user\" : \"myuser\",\n", 323 | " \"password\" : \"Passw0rd\"\n", 324 | "}" 325 | ] 326 | }, 327 | { 328 | "cell_type": "markdown", 329 | "metadata": {}, 330 | "source": [ 331 | "This function will allow us to connect to the database" 332 | ] 333 | }, 334 | { 335 | "cell_type": "code", 336 | "execution_count": 5, 337 | "metadata": {}, 338 | "outputs": [], 339 | "source": [ 340 | "def connect(params_dic):\n", 341 | " \"\"\" Connect to the PostgreSQL database server \"\"\"\n", 342 | " conn = None\n", 343 | " try:\n", 344 | " # connect to the PostgreSQL server\n", 345 | " print('Connecting to the PostgreSQL database...')\n", 346 | " conn = psycopg2.connect(**params_dic)\n", 347 | " except (Exception, psycopg2.DatabaseError) as error:\n", 348 | " print(error)\n", 349 | " sys.exit(1) \n", 350 | " print(\"Connection successful\")\n", 351 | " return conn\n" 352 | ] 353 | }, 354 | { 355 | "cell_type": "markdown", 356 | "metadata": {}, 357 | "source": [ 358 | "Connect to the database" 359 | ] 360 | }, 361 | { 362 | "cell_type": "code", 363 | "execution_count": 6, 364 | "metadata": {}, 365 | "outputs": [ 366 | { 367 | "name": "stdout", 368 | "output_type": "stream", 369 | "text": [ 370 | "Connecting to the PostgreSQL database...\n", 371 | "Connection successful\n" 372 | ] 373 | } 374 | ], 375 | "source": [ 376 | "conn = connect(param_dic)" 377 | ] 378 | }, 379 | { 380 | "cell_type": "markdown", 381 | "metadata": {}, 382 | "source": [ 383 | "Function to execute any query in the database. Will come in handy later as we test multiple insert tactics." 384 | ] 385 | }, 386 | { 387 | "cell_type": "code", 388 | "execution_count": 7, 389 | "metadata": {}, 390 | "outputs": [], 391 | "source": [ 392 | "def execute_query(conn, query):\n", 393 | " \"\"\" Execute a single query \"\"\"\n", 394 | " \n", 395 | " ret = 0 # Return value\n", 396 | " cursor = conn.cursor()\n", 397 | " try:\n", 398 | " cursor.execute(query)\n", 399 | " conn.commit()\n", 400 | " except (Exception, psycopg2.DatabaseError) as error:\n", 401 | " print(\"Error: %s\" % error)\n", 402 | " conn.rollback()\n", 403 | " cursor.close()\n", 404 | " return 1\n", 405 | "\n", 406 | " # If this was a select query, return the result\n", 407 | " if 'select' in query.lower():\n", 408 | " ret = cursor.fetchall()\n", 409 | " cursor.close()\n", 410 | " return ret" 411 | ] 412 | }, 413 | { 414 | "cell_type": "markdown", 415 | "metadata": {}, 416 | "source": [ 417 | "## Bulk Insert with execute_values()" 418 | ] 419 | }, 420 | { 421 | "cell_type": "code", 422 | "execution_count": 8, 423 | "metadata": {}, 424 | "outputs": [ 425 | { 426 | "name": "stdout", 427 | "output_type": "stream", 428 | "text": [ 429 | "execute_values() done\n" 430 | ] 431 | } 432 | ], 433 | "source": [ 434 | "def execute_values(conn, df, table):\n", 435 | " \"\"\"\n", 436 | " Using psycopg2.extras.execute_values() to insert the dataframe\n", 437 | " \"\"\"\n", 438 | " # Create a list of tupples from the dataframe values\n", 439 | " tuples = [tuple(x) for x in df.to_numpy()]\n", 440 | " # Comma-separated dataframe columns\n", 441 | " cols = ','.join(list(df.columns))\n", 442 | " # SQL quert to execute\n", 443 | " query = \"INSERT INTO %s(%s) VALUES %%s\" % (table, cols)\n", 444 | " cursor = conn.cursor()\n", 445 | " try:\n", 446 | " extras.execute_values(cursor, query, tuples)\n", 447 | " conn.commit()\n", 448 | " except (Exception, psycopg2.DatabaseError) as error:\n", 449 | " print(\"Error: %s\" % error)\n", 450 | " conn.rollback()\n", 451 | " cursor.close()\n", 452 | " return 1\n", 453 | " print(\"execute_values() done\")\n", 454 | " cursor.close()\n", 455 | "\n", 456 | "\n", 457 | "# Run the execute_many strategy\n", 458 | "execute_values(conn, df, 'MonthlyTemp')" 459 | ] 460 | }, 461 | { 462 | "cell_type": "code", 463 | "execution_count": 9, 464 | "metadata": {}, 465 | "outputs": [ 466 | { 467 | "data": { 468 | "text/plain": [ 469 | "[(3288,)]" 470 | ] 471 | }, 472 | "execution_count": 9, 473 | "metadata": {}, 474 | "output_type": "execute_result" 475 | } 476 | ], 477 | "source": [ 478 | "# Check that the values were indeed inserted\n", 479 | "execute_query(conn, \"select count(*) from MonthlyTemp;\")" 480 | ] 481 | }, 482 | { 483 | "cell_type": "code", 484 | "execution_count": 10, 485 | "metadata": {}, 486 | "outputs": [ 487 | { 488 | "data": { 489 | "text/plain": [ 490 | "0" 491 | ] 492 | }, 493 | "execution_count": 10, 494 | "metadata": {}, 495 | "output_type": "execute_result" 496 | } 497 | ], 498 | "source": [ 499 | "# (Optional) Clear the table\n", 500 | "execute_query(conn, \"delete from MonthlyTemp where true;\")" 501 | ] 502 | }, 503 | { 504 | "cell_type": "code", 505 | "execution_count": 12, 506 | "metadata": {}, 507 | "outputs": [], 508 | "source": [ 509 | "# Close the connection\n", 510 | "conn.close()" 511 | ] 512 | }, 513 | { 514 | "cell_type": "code", 515 | "execution_count": null, 516 | "metadata": {}, 517 | "outputs": [], 518 | "source": [] 519 | } 520 | ], 521 | "metadata": { 522 | "kernelspec": { 523 | "display_name": "Python 3", 524 | "language": "python", 525 | "name": "python3" 526 | }, 527 | "language_info": { 528 | "codemirror_mode": { 529 | "name": "ipython", 530 | "version": 3 531 | }, 532 | "file_extension": ".py", 533 | "mimetype": "text/x-python", 534 | "name": "python", 535 | "nbconvert_exporter": "python", 536 | "pygments_lexer": "ipython3", 537 | "version": "3.6.8" 538 | } 539 | }, 540 | "nbformat": 4, 541 | "nbformat_minor": 2 542 | } 543 | -------------------------------------------------------------------------------- /notebooks/SimpleInsertExample.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# From Pandas to PostgreSQL: Simple Insert Example" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "*By Naysan Saran, November 2019.*" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": {}, 20 | "source": [ 21 | "## 1 - Introduction" 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "In this tutorial we will go through all the steps required to \n", 29 | "\n", 30 | "- turn a csv into a pandas dataframe\n", 31 | "- create the corresponding PostgreSQL database and table\n", 32 | "- insert the pandas dataframe in the PostgreSQL table\n", 33 | "\n", 34 | "The data for this tutorial is freely available from the World Bank website https://data.worldbank.org/indicator/en.atm.co2e.pc. The version stored in the data/ directory of this repo is a simplified version of that zip file." 35 | ] 36 | }, 37 | { 38 | "cell_type": "markdown", 39 | "metadata": {}, 40 | "source": [ 41 | "## 2 - From csv file to pandas dataframe" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 1, 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "data": { 51 | "text/html": [ 52 | "
\n", 53 | "\n", 66 | "\n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | "
Country NameIndicator Name19601961196219631964196519661967...2005200620072008200920102011201220132014
0ArubaCO2 emissions (metric tons per capita)NaNNaNNaNNaNNaNNaNNaNNaN...27.20070826.94772627.89502326.22955325.91532224.67052924.50751613.1577228.3535618.410064
1AfghanistanCO2 emissions (metric tons per capita)0.0460570.0535890.0737210.0741610.0861740.1012850.1073990.123410...0.0517440.0624280.0838930.1517210.2383990.2899880.4064240.3451490.3103410.293946
2AngolaCO2 emissions (metric tons per capita)0.1008350.0822040.2105310.2027370.2135600.2058910.2689410.172102...0.9857361.1050191.2031341.1850001.2344251.2440921.2526811.3302191.2537761.290307
\n", 168 | "

3 rows × 57 columns

\n", 169 | "
" 170 | ], 171 | "text/plain": [ 172 | " Country Name Indicator Name 1960 1961 \\\n", 173 | "0 Aruba CO2 emissions (metric tons per capita) NaN NaN \n", 174 | "1 Afghanistan CO2 emissions (metric tons per capita) 0.046057 0.053589 \n", 175 | "2 Angola CO2 emissions (metric tons per capita) 0.100835 0.082204 \n", 176 | "\n", 177 | " 1962 1963 1964 1965 1966 1967 ... 2005 \\\n", 178 | "0 NaN NaN NaN NaN NaN NaN ... 27.200708 \n", 179 | "1 0.073721 0.074161 0.086174 0.101285 0.107399 0.123410 ... 0.051744 \n", 180 | "2 0.210531 0.202737 0.213560 0.205891 0.268941 0.172102 ... 0.985736 \n", 181 | "\n", 182 | " 2006 2007 2008 2009 2010 2011 \\\n", 183 | "0 26.947726 27.895023 26.229553 25.915322 24.670529 24.507516 \n", 184 | "1 0.062428 0.083893 0.151721 0.238399 0.289988 0.406424 \n", 185 | "2 1.105019 1.203134 1.185000 1.234425 1.244092 1.252681 \n", 186 | "\n", 187 | " 2012 2013 2014 \n", 188 | "0 13.157722 8.353561 8.410064 \n", 189 | "1 0.345149 0.310341 0.293946 \n", 190 | "2 1.330219 1.253776 1.290307 \n", 191 | "\n", 192 | "[3 rows x 57 columns]" 193 | ] 194 | }, 195 | "execution_count": 1, 196 | "metadata": {}, 197 | "output_type": "execute_result" 198 | } 199 | ], 200 | "source": [ 201 | "import pandas as pd\n", 202 | "\n", 203 | "csv_file = \"../data/global_CO2_emissions.csv\"\n", 204 | "df = pd.read_csv(csv_file)\n", 205 | "df.head(n=3)" 206 | ] 207 | }, 208 | { 209 | "cell_type": "markdown", 210 | "metadata": {}, 211 | "source": [ 212 | "## 3 - PostgreSQL database, table and user setup" 213 | ] 214 | }, 215 | { 216 | "cell_type": "markdown", 217 | "metadata": {}, 218 | "source": [ 219 | "First we create the database. I'm assuming you already have PostgreSQL installed on your system. Otherwise you can refer to this link first https://www.postgresql.org/download/." 220 | ] 221 | }, 222 | { 223 | "cell_type": "markdown", 224 | "metadata": {}, 225 | "source": [ 226 | "Creating the database - Ubuntu command line instructions " 227 | ] 228 | }, 229 | { 230 | "cell_type": "raw", 231 | "metadata": {}, 232 | "source": [ 233 | ">> sudo -i -u postgres\n", 234 | ">> psql\n", 235 | "\n", 236 | "postgres=# CREATE DATABASE worldbankdata;\n", 237 | "postgres=# \\c worldbankdata;" 238 | ] 239 | }, 240 | { 241 | "cell_type": "markdown", 242 | "metadata": {}, 243 | "source": [ 244 | "For the sake of simplicity, we are going to create one table only to store everything." 245 | ] 246 | }, 247 | { 248 | "cell_type": "raw", 249 | "metadata": {}, 250 | "source": [ 251 | "postgres=# CREATE TABLE emissions(\n", 252 | " id SERIAL PRIMARY KEY,\n", 253 | " country_name VARCHAR (120) NOT NULL,\n", 254 | " year INTEGER,\n", 255 | " co2 DECIMAL\n", 256 | ");" 257 | ] 258 | }, 259 | { 260 | "cell_type": "markdown", 261 | "metadata": {}, 262 | "source": [ 263 | "Lastly, let's create a user and give them access to our new table." 264 | ] 265 | }, 266 | { 267 | "cell_type": "raw", 268 | "metadata": {}, 269 | "source": [ 270 | "postgres=# CREATE USER myuser WITH PASSWORD 'Passw0rd';\n", 271 | "postgres=# GRANT SELECT, INSERT, DELETE, UPDATE on emissions to myuser;" 272 | ] 273 | }, 274 | { 275 | "cell_type": "markdown", 276 | "metadata": {}, 277 | "source": [ 278 | "Last permission to grant, so 'myuser' can autoincrement the 'id' primary key without having to specify it" 279 | ] 280 | }, 281 | { 282 | "cell_type": "raw", 283 | "metadata": {}, 284 | "source": [ 285 | "postgres=# GRANT USAGE on sequence emissions_id_seq to myuser;\n", 286 | "postgres=# \\q" 287 | ] 288 | }, 289 | { 290 | "cell_type": "markdown", 291 | "metadata": {}, 292 | "source": [ 293 | "## 4 - Uploading the dataframe in PostgreSQL" 294 | ] 295 | }, 296 | { 297 | "cell_type": "markdown", 298 | "metadata": {}, 299 | "source": [ 300 | "Alright back to Python. Here are all the functions we will need. For a complete, functioning code, please refer to the src/ subdirectory." 301 | ] 302 | }, 303 | { 304 | "cell_type": "code", 305 | "execution_count": 2, 306 | "metadata": {}, 307 | "outputs": [], 308 | "source": [ 309 | "import psycopg2\n", 310 | "import numpy as np\n", 311 | "\n", 312 | "def connect(params_dic):\n", 313 | " \"\"\" Connect to the PostgreSQL database server \"\"\"\n", 314 | " conn = None\n", 315 | " try:\n", 316 | " # connect to the PostgreSQL server\n", 317 | " print('Connecting to the PostgreSQL database...')\n", 318 | " conn = psycopg2.connect(**params_dic)\n", 319 | "\n", 320 | " except (Exception, psycopg2.DatabaseError) as error:\n", 321 | " print(error)\n", 322 | " sys.exit(1) \n", 323 | " return conn\n", 324 | "\n", 325 | "\n", 326 | "def single_insert(conn, insert_req):\n", 327 | " \"\"\" Execute a single INSERT request \"\"\"\n", 328 | " cursor = conn.cursor()\n", 329 | " try:\n", 330 | " cursor.execute(insert_req)\n", 331 | " conn.commit()\n", 332 | " except (Exception, psycopg2.DatabaseError) as error:\n", 333 | " print(\"Error: %s\" % error)\n", 334 | " conn.rollback()\n", 335 | " cursor.close()\n", 336 | " return 1\n", 337 | " cursor.close()\n", 338 | " " 339 | ] 340 | }, 341 | { 342 | "cell_type": "markdown", 343 | "metadata": {}, 344 | "source": [ 345 | "Now let's specity the connection parameters. The database, username and password will be the same that we created in part 3." 346 | ] 347 | }, 348 | { 349 | "cell_type": "code", 350 | "execution_count": 3, 351 | "metadata": {}, 352 | "outputs": [], 353 | "source": [ 354 | "param_dic = {\n", 355 | " \"host\" : \"localhost\",\n", 356 | " \"database\" : \"worldbankdata\",\n", 357 | " \"user\" : \"myuser\",\n", 358 | " \"password\" : \"Passw0rd\"\n", 359 | "}" 360 | ] 361 | }, 362 | { 363 | "cell_type": "markdown", 364 | "metadata": {}, 365 | "source": [ 366 | "Testing the database connection" 367 | ] 368 | }, 369 | { 370 | "cell_type": "code", 371 | "execution_count": 4, 372 | "metadata": {}, 373 | "outputs": [ 374 | { 375 | "name": "stdout", 376 | "output_type": "stream", 377 | "text": [ 378 | "Connecting to the PostgreSQL database...\n" 379 | ] 380 | } 381 | ], 382 | "source": [ 383 | "conn = connect(param_dic)" 384 | ] 385 | }, 386 | { 387 | "cell_type": "markdown", 388 | "metadata": {}, 389 | "source": [ 390 | "Just before we insert rows in our table, we can cleanup our Pandas dataframe a little bit." 391 | ] 392 | }, 393 | { 394 | "cell_type": "code", 395 | "execution_count": 5, 396 | "metadata": {}, 397 | "outputs": [], 398 | "source": [ 399 | "# Drop the 'Indicator Name' column as we don't need it\n", 400 | "df.drop('Indicator Name', axis=1, inplace=True)" 401 | ] 402 | }, 403 | { 404 | "cell_type": "code", 405 | "execution_count": 6, 406 | "metadata": {}, 407 | "outputs": [], 408 | "source": [ 409 | "# Replace NaN values with 'NULL'\n", 410 | "years = [x for x in df.columns if x != 'Country Name']\n", 411 | "for year in years:\n", 412 | " df[year] = df[year].apply(lambda x: 'NULL' if np.isnan(x) else x)" 413 | ] 414 | }, 415 | { 416 | "cell_type": "code", 417 | "execution_count": 7, 418 | "metadata": {}, 419 | "outputs": [ 420 | { 421 | "data": { 422 | "text/html": [ 423 | "
\n", 424 | "\n", 437 | "\n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | "
Country Name196019611962196319641965196619671968...2005200620072008200920102011201220132014
0ArubaNULLNULLNULLNULLNULLNULLNULLNULLNULL...27.200726.947727.89526.229625.915324.670524.507513.15778.353568.41006
1Afghanistan0.04605670.05358880.07372080.07416070.08617360.1012850.1073990.123410.115142...0.0517440.06242750.08389280.1517210.2383990.2899880.4064240.3451490.3103410.293946
2Angola0.1008350.08220380.2105310.2027370.213560.2058910.2689410.1721020.289718...0.9857361.105021.203131.1851.234431.244091.252681.330221.253781.29031
3Albania1.258191.374191.439961.181681.111741.16611.333061.363751.51955...1.41251.302581.322331.484311.49561.578571.803711.692911.749211.97876
4AndorraNULLNULLNULLNULLNULLNULLNULLNULLNULL...7.299876.746056.519396.427816.121586.122595.867415.916885.901785.83291
\n", 587 | "

5 rows × 56 columns

\n", 588 | "
" 589 | ], 590 | "text/plain": [ 591 | " Country Name 1960 1961 1962 1963 1964 \\\n", 592 | "0 Aruba NULL NULL NULL NULL NULL \n", 593 | "1 Afghanistan 0.0460567 0.0535888 0.0737208 0.0741607 0.0861736 \n", 594 | "2 Angola 0.100835 0.0822038 0.210531 0.202737 0.21356 \n", 595 | "3 Albania 1.25819 1.37419 1.43996 1.18168 1.11174 \n", 596 | "4 Andorra NULL NULL NULL NULL NULL \n", 597 | "\n", 598 | " 1965 1966 1967 1968 ... 2005 2006 \\\n", 599 | "0 NULL NULL NULL NULL ... 27.2007 26.9477 \n", 600 | "1 0.101285 0.107399 0.12341 0.115142 ... 0.051744 0.0624275 \n", 601 | "2 0.205891 0.268941 0.172102 0.289718 ... 0.985736 1.10502 \n", 602 | "3 1.1661 1.33306 1.36375 1.51955 ... 1.4125 1.30258 \n", 603 | "4 NULL NULL NULL NULL ... 7.29987 6.74605 \n", 604 | "\n", 605 | " 2007 2008 2009 2010 2011 2012 2013 \\\n", 606 | "0 27.895 26.2296 25.9153 24.6705 24.5075 13.1577 8.35356 \n", 607 | "1 0.0838928 0.151721 0.238399 0.289988 0.406424 0.345149 0.310341 \n", 608 | "2 1.20313 1.185 1.23443 1.24409 1.25268 1.33022 1.25378 \n", 609 | "3 1.32233 1.48431 1.4956 1.57857 1.80371 1.69291 1.74921 \n", 610 | "4 6.51939 6.42781 6.12158 6.12259 5.86741 5.91688 5.90178 \n", 611 | "\n", 612 | " 2014 \n", 613 | "0 8.41006 \n", 614 | "1 0.293946 \n", 615 | "2 1.29031 \n", 616 | "3 1.97876 \n", 617 | "4 5.83291 \n", 618 | "\n", 619 | "[5 rows x 56 columns]" 620 | ] 621 | }, 622 | "execution_count": 7, 623 | "metadata": {}, 624 | "output_type": "execute_result" 625 | } 626 | ], 627 | "source": [ 628 | "# Also drop any special character in the country name\n", 629 | "df['Country Name'] = df['Country Name'].astype(str).replace('[^a-zA-Z0-9 ]', '', regex=True)\n", 630 | "df.head()" 631 | ] 632 | }, 633 | { 634 | "cell_type": "code", 635 | "execution_count": 11, 636 | "metadata": {}, 637 | "outputs": [ 638 | { 639 | "name": "stdout", 640 | "output_type": "stream", 641 | "text": [ 642 | "All rows were sucecssfully inserted in the emissions table\n" 643 | ] 644 | } 645 | ], 646 | "source": [ 647 | "# For each country, upload the yearly C02 emissions\n", 648 | "for i in df.index:\n", 649 | " country_name = df['Country Name'][i]\n", 650 | " \n", 651 | " # Loop through each year\n", 652 | " for year in years:\n", 653 | " co2 = df[year][i]\n", 654 | " # Build the insert query\n", 655 | " query = \"\"\"\n", 656 | " INSERT into emissions(country_name, year, co2) values('%s',%s,%s);\n", 657 | " \"\"\" % (country_name, year, co2)\n", 658 | " # Insert into the database\n", 659 | " single_insert(conn, query)\n", 660 | " \n", 661 | "print(\"All rows were sucessfully inserted in the emissions table\")" 662 | ] 663 | }, 664 | { 665 | "cell_type": "markdown", 666 | "metadata": {}, 667 | "source": [ 668 | "Done!" 669 | ] 670 | }, 671 | { 672 | "cell_type": "code", 673 | "execution_count": 13, 674 | "metadata": {}, 675 | "outputs": [], 676 | "source": [ 677 | "conn.close()" 678 | ] 679 | }, 680 | { 681 | "cell_type": "markdown", 682 | "metadata": {}, 683 | "source": [ 684 | "## 5 - (Optional) Back to the database to see what was inserted" 685 | ] 686 | }, 687 | { 688 | "cell_type": "raw", 689 | "metadata": {}, 690 | "source": [ 691 | ">> sudo -i -u postgres\n", 692 | ">> psql\n", 693 | "\n", 694 | "postgres=# CREATE DATABASE worldbankdata;\n", 695 | "postgres=# \\c worldbankdata;\n", 696 | "postgres=# SELECT * from emissions;" 697 | ] 698 | }, 699 | { 700 | "cell_type": "code", 701 | "execution_count": null, 702 | "metadata": {}, 703 | "outputs": [], 704 | "source": [] 705 | } 706 | ], 707 | "metadata": { 708 | "kernelspec": { 709 | "display_name": "Python 3", 710 | "language": "python", 711 | "name": "python3" 712 | }, 713 | "language_info": { 714 | "codemirror_mode": { 715 | "name": "ipython", 716 | "version": 3 717 | }, 718 | "file_extension": ".py", 719 | "mimetype": "text/x-python", 720 | "name": "python", 721 | "nbconvert_exporter": "python", 722 | "pygments_lexer": "ipython3", 723 | "version": "3.6.8" 724 | } 725 | }, 726 | "nbformat": 4, 727 | "nbformat_minor": 2 728 | } 729 | -------------------------------------------------------------------------------- /notebooks/all_insert_strategies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NaysanSaran/pandas2postgresql/833502d7372da41191e1d1dde70cbe3a92878968/notebooks/all_insert_strategies.png -------------------------------------------------------------------------------- /notebooks/benchmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NaysanSaran/pandas2postgresql/833502d7372da41191e1d1dde70cbe3a92878968/notebooks/benchmark.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | numpy==1.17.3 2 | pandas==0.25.3 3 | psycopg2==2.8.4 4 | python-dateutil==2.8.0 5 | pytz==2019.3 6 | six==1.12.0 7 | -------------------------------------------------------------------------------- /src/bulk_insert_execute_values.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Complete example of how to convert a csv to 3 | # a pandas dataframe, and then to PostgreSQL 4 | # Method: Bulk Insert using execute_values() 5 | #------------------------------------------------------------------------------ 6 | # Author: Naysan Saran, May 2020 7 | # License: GPL V3.0 8 | #------------------------------------------------------------------------------ 9 | import numpy as np 10 | import pandas as pd 11 | import psycopg2 12 | import psycopg2.extras as extras 13 | 14 | # Connection parameters 15 | param_dic = { 16 | "host" : "localhost", 17 | "database" : "globaldata", 18 | "user" : "myuser", 19 | "password" : "Passw0rd" 20 | } 21 | 22 | def connect(params_dic): 23 | """ Connect to the PostgreSQL database server """ 24 | conn = None 25 | try: 26 | # connect to the PostgreSQL server 27 | print('Connecting to the PostgreSQL database...') 28 | conn = psycopg2.connect(**params_dic) 29 | except (Exception, psycopg2.DatabaseError) as error: 30 | print(error) 31 | sys.exit(1) 32 | print("Connection successful") 33 | return conn 34 | 35 | def execute_query(conn, query): 36 | """ Execute a single query """ 37 | 38 | ret = 0 # Return value 39 | cursor = conn.cursor() 40 | try: 41 | cursor.execute(query) 42 | conn.commit() 43 | except (Exception, psycopg2.DatabaseError) as error: 44 | print("Error: %s" % error) 45 | conn.rollback() 46 | cursor.close() 47 | return 1 48 | 49 | # If this was a select query, return the result 50 | if 'select' in query.lower(): 51 | ret = cursor.fetchall() 52 | cursor.close() 53 | return ret 54 | 55 | def execute_values(conn, df, table): 56 | """ 57 | Using psycopg2.extras.execute_values() to insert the dataframe 58 | """ 59 | # Create a list of tupples from the dataframe values 60 | tuples = [tuple(x) for x in df.to_numpy()] 61 | # Comma-separated dataframe columns 62 | cols = ','.join(list(df.columns)) 63 | # SQL quert to execute 64 | query = "INSERT INTO %s(%s) VALUES %%s" % (table, cols) 65 | cursor = conn.cursor() 66 | try: 67 | extras.execute_values(cursor, query, tuples) 68 | conn.commit() 69 | except (Exception, psycopg2.DatabaseError) as error: 70 | print("Error: %s" % error) 71 | conn.rollback() 72 | cursor.close() 73 | return 1 74 | print("execute_values() done") 75 | cursor.close() 76 | 77 | 78 | def read_dataframe(csv_file): 79 | """ 80 | Load and prepare the dataframe for insertion 81 | into the database 82 | """ 83 | df = pd.read_csv(csv_file) 84 | df = df.rename(columns={ 85 | "Source": "source", 86 | "Date": "datetime", 87 | "Mean": "mean_temp" 88 | }) 89 | return df 90 | 91 | 92 | def main(): 93 | 94 | 95 | # Read the csv file 96 | csv_file = "../data/global-temp-monthly.csv" 97 | df = read_dataframe(csv_file) 98 | print(df.head(5)) 99 | 100 | # Connect to the database 101 | conn = connect(param_dic) 102 | 103 | # Run the execute_many strategy 104 | execute_values(conn, df, 'MonthlyTemp') 105 | 106 | # Check that the values were indeed inserted 107 | n_rows = execute_query(conn, "select count(*) from MonthlyTemp;") 108 | print("Number of rows in the table = %s" % n_rows) 109 | 110 | # Optional - Clear the table 111 | execute_query(conn, "delete from MonthlyTemp where true;") 112 | 113 | # Close the connection 114 | conn.close() 115 | 116 | 117 | if __name__ == "__main__": 118 | main() 119 | 120 | -------------------------------------------------------------------------------- /src/single_insert.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Complete example of how to convert a csv to 3 | # a pandas dataframe, and then to PostgreSQL 4 | #------------------------------------------------------------------------------ 5 | # Author: Naysan Saran, November 2019 6 | # License: GPL V3.0 7 | #------------------------------------------------------------------------------ 8 | import numpy as np 9 | import pandas as pd 10 | import psycopg2 11 | 12 | def connect(params_dic): 13 | """ Connect to the PostgreSQL database server """ 14 | conn = None 15 | try: 16 | # connect to the PostgreSQL server 17 | print('Connecting to the PostgreSQL database...') 18 | conn = psycopg2.connect(**params_dic) 19 | 20 | except (Exception, psycopg2.DatabaseError) as error: 21 | print(error) 22 | sys.exit(1) 23 | return conn 24 | 25 | 26 | def single_insert(conn, insert_req): 27 | """ Execute a single INSERT request """ 28 | cursor = conn.cursor() 29 | try: 30 | cursor.execute(insert_req) 31 | conn.commit() 32 | except (Exception, psycopg2.DatabaseError) as error: 33 | print("Error: %s" % error) 34 | conn.rollback() 35 | cursor.close() 36 | return 1 37 | cursor.close() 38 | 39 | 40 | 41 | def main(): 42 | 43 | # Connection params 44 | param_dic = { 45 | "host" : "localhost", 46 | "database" : "worldbankdata", 47 | "user" : "myuser", 48 | "password" : "Passw0rd" 49 | } 50 | 51 | # Read the csv file 52 | csv_file = "../data/global_CO2_emissions.csv" 53 | df = pd.read_csv(csv_file) 54 | 55 | # Drop the 'Indicator Name' column as we don't need it 56 | df.drop('Indicator Name', axis=1, inplace=True) 57 | 58 | # Replace NaN values with 'NULL' 59 | years = [x for x in df.columns if x != 'Country Name'] 60 | for year in years: 61 | df[year] = df[year].apply(lambda x: 'NULL' if np.isnan(x) else x) 62 | 63 | # Also drop any special character in the country name 64 | df['Country Name'] = df['Country Name'].astype(str).replace('[^a-zA-Z0-9 ]', '', regex=True) 65 | 66 | # Connect to the database 67 | conn = connect(param_dic) 68 | 69 | # Insert the dataframe one row at the time 70 | # For each country, upload the yearly C02 emissions 71 | for i in df.index: 72 | country_name = df['Country Name'][i] 73 | 74 | # Loop through each year 75 | for year in years: 76 | co2 = df[year][i] 77 | # Build the insert query 78 | query = """ 79 | INSERT into emissions(country_name, year, co2) values('%s',%s,%s); 80 | """ % (country_name, year, co2) 81 | # Insert into the database 82 | single_insert(conn, query) 83 | 84 | print("All rows were sucessfully inserted in the emissions table") 85 | 86 | # Close the database connection 87 | conn.close() 88 | 89 | 90 | if __name__ == "__main__": 91 | main() 92 | 93 | --------------------------------------------------------------------------------