├── .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 | " id | \n",
190 | " source | \n",
191 | " datetime | \n",
192 | " mean_temp | \n",
193 | "
\n",
194 | " \n",
195 | " \n",
196 | " \n",
197 | " 0 | \n",
198 | " 860897 | \n",
199 | " GCAG | \n",
200 | " 2016-12-06 | \n",
201 | " 0.7895 | \n",
202 | "
\n",
203 | " \n",
204 | " 1 | \n",
205 | " 860898 | \n",
206 | " GISTEMP | \n",
207 | " 2016-12-06 | \n",
208 | " 0.8100 | \n",
209 | "
\n",
210 | " \n",
211 | " 2 | \n",
212 | " 860899 | \n",
213 | " GCAG | \n",
214 | " 2016-11-06 | \n",
215 | " 0.7504 | \n",
216 | "
\n",
217 | " \n",
218 | " 3 | \n",
219 | " 860900 | \n",
220 | " GISTEMP | \n",
221 | " 2016-11-06 | \n",
222 | " 0.9300 | \n",
223 | "
\n",
224 | " \n",
225 | " 4 | \n",
226 | " 860901 | \n",
227 | " GCAG | \n",
228 | " 2016-10-06 | \n",
229 | " 0.7292 | \n",
230 | "
\n",
231 | " \n",
232 | "
\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 | " timestamp | \n",
290 | " temperature | \n",
291 | "
\n",
292 | " \n",
293 | " \n",
294 | " \n",
295 | " 0 | \n",
296 | " 2016-12-06 | \n",
297 | " 0.7895 | \n",
298 | "
\n",
299 | " \n",
300 | " 1 | \n",
301 | " 2016-12-06 | \n",
302 | " 0.8100 | \n",
303 | "
\n",
304 | " \n",
305 | " 2 | \n",
306 | " 2016-11-06 | \n",
307 | " 0.7504 | \n",
308 | "
\n",
309 | " \n",
310 | " 3 | \n",
311 | " 2016-11-06 | \n",
312 | " 0.9300 | \n",
313 | "
\n",
314 | " \n",
315 | " 4 | \n",
316 | " 2016-10-06 | \n",
317 | " 0.7292 | \n",
318 | "
\n",
319 | " \n",
320 | "
\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 | " source | \n",
60 | " datetime | \n",
61 | " mean_temp | \n",
62 | "
\n",
63 | " \n",
64 | " \n",
65 | " \n",
66 | " 0 | \n",
67 | " GCAG | \n",
68 | " 2016-12-06 | \n",
69 | " 0.7895 | \n",
70 | "
\n",
71 | " \n",
72 | " 1 | \n",
73 | " GISTEMP | \n",
74 | " 2016-12-06 | \n",
75 | " 0.8100 | \n",
76 | "
\n",
77 | " \n",
78 | " 2 | \n",
79 | " GCAG | \n",
80 | " 2016-11-06 | \n",
81 | " 0.7504 | \n",
82 | "
\n",
83 | " \n",
84 | "
\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 | " source | \n",
60 | " datetime | \n",
61 | " mean_temp | \n",
62 | "
\n",
63 | " \n",
64 | " \n",
65 | " \n",
66 | " 0 | \n",
67 | " GCAG | \n",
68 | " 2016-12-06 | \n",
69 | " 0.7895 | \n",
70 | "
\n",
71 | " \n",
72 | " 1 | \n",
73 | " GISTEMP | \n",
74 | " 2016-12-06 | \n",
75 | " 0.8100 | \n",
76 | "
\n",
77 | " \n",
78 | " 2 | \n",
79 | " GCAG | \n",
80 | " 2016-11-06 | \n",
81 | " 0.7504 | \n",
82 | "
\n",
83 | " \n",
84 | "
\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 | " Source | \n",
78 | " Date | \n",
79 | " Mean | \n",
80 | "
\n",
81 | " \n",
82 | " \n",
83 | " \n",
84 | " 0 | \n",
85 | " GCAG | \n",
86 | " 2016-12-06 | \n",
87 | " 0.7895 | \n",
88 | "
\n",
89 | " \n",
90 | " 1 | \n",
91 | " GISTEMP | \n",
92 | " 2016-12-06 | \n",
93 | " 0.8100 | \n",
94 | "
\n",
95 | " \n",
96 | " 2 | \n",
97 | " GCAG | \n",
98 | " 2016-11-06 | \n",
99 | " 0.7504 | \n",
100 | "
\n",
101 | " \n",
102 | "
\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 | " source | \n",
153 | " datetime | \n",
154 | " mean_temp | \n",
155 | "
\n",
156 | " \n",
157 | " \n",
158 | " \n",
159 | " 0 | \n",
160 | " GCAG | \n",
161 | " 2016-12-06 | \n",
162 | " 0.7895 | \n",
163 | "
\n",
164 | " \n",
165 | " 1 | \n",
166 | " GISTEMP | \n",
167 | " 2016-12-06 | \n",
168 | " 0.8100 | \n",
169 | "
\n",
170 | " \n",
171 | " 2 | \n",
172 | " GCAG | \n",
173 | " 2016-11-06 | \n",
174 | " 0.7504 | \n",
175 | "
\n",
176 | " \n",
177 | "
\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 | " Country Name | \n",
71 | " Indicator Name | \n",
72 | " 1960 | \n",
73 | " 1961 | \n",
74 | " 1962 | \n",
75 | " 1963 | \n",
76 | " 1964 | \n",
77 | " 1965 | \n",
78 | " 1966 | \n",
79 | " 1967 | \n",
80 | " ... | \n",
81 | " 2005 | \n",
82 | " 2006 | \n",
83 | " 2007 | \n",
84 | " 2008 | \n",
85 | " 2009 | \n",
86 | " 2010 | \n",
87 | " 2011 | \n",
88 | " 2012 | \n",
89 | " 2013 | \n",
90 | " 2014 | \n",
91 | "
\n",
92 | " \n",
93 | " \n",
94 | " \n",
95 | " 0 | \n",
96 | " Aruba | \n",
97 | " CO2 emissions (metric tons per capita) | \n",
98 | " NaN | \n",
99 | " NaN | \n",
100 | " NaN | \n",
101 | " NaN | \n",
102 | " NaN | \n",
103 | " NaN | \n",
104 | " NaN | \n",
105 | " NaN | \n",
106 | " ... | \n",
107 | " 27.200708 | \n",
108 | " 26.947726 | \n",
109 | " 27.895023 | \n",
110 | " 26.229553 | \n",
111 | " 25.915322 | \n",
112 | " 24.670529 | \n",
113 | " 24.507516 | \n",
114 | " 13.157722 | \n",
115 | " 8.353561 | \n",
116 | " 8.410064 | \n",
117 | "
\n",
118 | " \n",
119 | " 1 | \n",
120 | " Afghanistan | \n",
121 | " CO2 emissions (metric tons per capita) | \n",
122 | " 0.046057 | \n",
123 | " 0.053589 | \n",
124 | " 0.073721 | \n",
125 | " 0.074161 | \n",
126 | " 0.086174 | \n",
127 | " 0.101285 | \n",
128 | " 0.107399 | \n",
129 | " 0.123410 | \n",
130 | " ... | \n",
131 | " 0.051744 | \n",
132 | " 0.062428 | \n",
133 | " 0.083893 | \n",
134 | " 0.151721 | \n",
135 | " 0.238399 | \n",
136 | " 0.289988 | \n",
137 | " 0.406424 | \n",
138 | " 0.345149 | \n",
139 | " 0.310341 | \n",
140 | " 0.293946 | \n",
141 | "
\n",
142 | " \n",
143 | " 2 | \n",
144 | " Angola | \n",
145 | " CO2 emissions (metric tons per capita) | \n",
146 | " 0.100835 | \n",
147 | " 0.082204 | \n",
148 | " 0.210531 | \n",
149 | " 0.202737 | \n",
150 | " 0.213560 | \n",
151 | " 0.205891 | \n",
152 | " 0.268941 | \n",
153 | " 0.172102 | \n",
154 | " ... | \n",
155 | " 0.985736 | \n",
156 | " 1.105019 | \n",
157 | " 1.203134 | \n",
158 | " 1.185000 | \n",
159 | " 1.234425 | \n",
160 | " 1.244092 | \n",
161 | " 1.252681 | \n",
162 | " 1.330219 | \n",
163 | " 1.253776 | \n",
164 | " 1.290307 | \n",
165 | "
\n",
166 | " \n",
167 | "
\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 | " Country Name | \n",
442 | " 1960 | \n",
443 | " 1961 | \n",
444 | " 1962 | \n",
445 | " 1963 | \n",
446 | " 1964 | \n",
447 | " 1965 | \n",
448 | " 1966 | \n",
449 | " 1967 | \n",
450 | " 1968 | \n",
451 | " ... | \n",
452 | " 2005 | \n",
453 | " 2006 | \n",
454 | " 2007 | \n",
455 | " 2008 | \n",
456 | " 2009 | \n",
457 | " 2010 | \n",
458 | " 2011 | \n",
459 | " 2012 | \n",
460 | " 2013 | \n",
461 | " 2014 | \n",
462 | "
\n",
463 | " \n",
464 | " \n",
465 | " \n",
466 | " 0 | \n",
467 | " Aruba | \n",
468 | " NULL | \n",
469 | " NULL | \n",
470 | " NULL | \n",
471 | " NULL | \n",
472 | " NULL | \n",
473 | " NULL | \n",
474 | " NULL | \n",
475 | " NULL | \n",
476 | " NULL | \n",
477 | " ... | \n",
478 | " 27.2007 | \n",
479 | " 26.9477 | \n",
480 | " 27.895 | \n",
481 | " 26.2296 | \n",
482 | " 25.9153 | \n",
483 | " 24.6705 | \n",
484 | " 24.5075 | \n",
485 | " 13.1577 | \n",
486 | " 8.35356 | \n",
487 | " 8.41006 | \n",
488 | "
\n",
489 | " \n",
490 | " 1 | \n",
491 | " Afghanistan | \n",
492 | " 0.0460567 | \n",
493 | " 0.0535888 | \n",
494 | " 0.0737208 | \n",
495 | " 0.0741607 | \n",
496 | " 0.0861736 | \n",
497 | " 0.101285 | \n",
498 | " 0.107399 | \n",
499 | " 0.12341 | \n",
500 | " 0.115142 | \n",
501 | " ... | \n",
502 | " 0.051744 | \n",
503 | " 0.0624275 | \n",
504 | " 0.0838928 | \n",
505 | " 0.151721 | \n",
506 | " 0.238399 | \n",
507 | " 0.289988 | \n",
508 | " 0.406424 | \n",
509 | " 0.345149 | \n",
510 | " 0.310341 | \n",
511 | " 0.293946 | \n",
512 | "
\n",
513 | " \n",
514 | " 2 | \n",
515 | " Angola | \n",
516 | " 0.100835 | \n",
517 | " 0.0822038 | \n",
518 | " 0.210531 | \n",
519 | " 0.202737 | \n",
520 | " 0.21356 | \n",
521 | " 0.205891 | \n",
522 | " 0.268941 | \n",
523 | " 0.172102 | \n",
524 | " 0.289718 | \n",
525 | " ... | \n",
526 | " 0.985736 | \n",
527 | " 1.10502 | \n",
528 | " 1.20313 | \n",
529 | " 1.185 | \n",
530 | " 1.23443 | \n",
531 | " 1.24409 | \n",
532 | " 1.25268 | \n",
533 | " 1.33022 | \n",
534 | " 1.25378 | \n",
535 | " 1.29031 | \n",
536 | "
\n",
537 | " \n",
538 | " 3 | \n",
539 | " Albania | \n",
540 | " 1.25819 | \n",
541 | " 1.37419 | \n",
542 | " 1.43996 | \n",
543 | " 1.18168 | \n",
544 | " 1.11174 | \n",
545 | " 1.1661 | \n",
546 | " 1.33306 | \n",
547 | " 1.36375 | \n",
548 | " 1.51955 | \n",
549 | " ... | \n",
550 | " 1.4125 | \n",
551 | " 1.30258 | \n",
552 | " 1.32233 | \n",
553 | " 1.48431 | \n",
554 | " 1.4956 | \n",
555 | " 1.57857 | \n",
556 | " 1.80371 | \n",
557 | " 1.69291 | \n",
558 | " 1.74921 | \n",
559 | " 1.97876 | \n",
560 | "
\n",
561 | " \n",
562 | " 4 | \n",
563 | " Andorra | \n",
564 | " NULL | \n",
565 | " NULL | \n",
566 | " NULL | \n",
567 | " NULL | \n",
568 | " NULL | \n",
569 | " NULL | \n",
570 | " NULL | \n",
571 | " NULL | \n",
572 | " NULL | \n",
573 | " ... | \n",
574 | " 7.29987 | \n",
575 | " 6.74605 | \n",
576 | " 6.51939 | \n",
577 | " 6.42781 | \n",
578 | " 6.12158 | \n",
579 | " 6.12259 | \n",
580 | " 5.86741 | \n",
581 | " 5.91688 | \n",
582 | " 5.90178 | \n",
583 | " 5.83291 | \n",
584 | "
\n",
585 | " \n",
586 | "
\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 |
--------------------------------------------------------------------------------