import pandas as pd
import arrow
from IPython.display import display, HTML
Can we fill in the gaps? Looking at the beginning and end of 1929, it seems the number of pages for each session on a weekday are consistent:
So 5 pages per weekday. Saturdays have 2 pages.
Notes from when Maggie and I looked at the bound volumes
1901 – five pages a day, 1 for mining forenoon, 2 for noon and 2 for afternoon – mix of small and large pages
1915 - five pages a day, 1 for mining forenoon, 2 for noon and 2 for afternoon – mix of small and large pages, some tiny font used in miscellaneous which continues
1924 - five pages a day, 1 for mining forenoon, 2 for noon and 2 for afternoon – only large pages, handwritten ‘investment sales’
1934 - five pages a day, 1 for mining forenoon, 2 for noon and 2 for afternoon – only large pages, handwritten ‘investment sales’
1940 – nine pages a day, 3 forenoon, 3 noon and 3 afternoon, Saturdays only have 3 pages for morning (we didn’t record how many pages for Saturday before)
1950 – eight pages a day, 4 for morning and 4 for afternoon, thinner paper, no Saturday trading
There's an increase in pages after vol 135, in 1934.
df_series = pd.read_csv('series_list.csv')
all_holidays = pd.read_csv('nsw_holidays_1900_1950.csv')
#all_holidays.loc[:, 'date'] = pd.to_datetime(all_holidays.loc[:, 'date'], errors='coerce')
def get_holidays(year):
holidays = all_holidays.loc[all_holidays['year'] == year]['date']
return holidays.to_list()
def daterange(start_date, end_date):
for n in range(int ((end_date - start_date).days)):
yield start_date.shift(days=+n)
def predict_pages(start_date, end_date, weekday_pages=5, saturday_pages=2, include_saturday=True):
pages = 0
year = start_date.year
holidays = sorted(get_holidays(year))
for single_date in daterange(start_date, end_date):
if single_date.format('YYYY-MM-DD') not in holidays and single_date.weekday() != 6:
if single_date.weekday() == 5:
if include_saturday is True:
pages += saturday_pages
else:
pages += weekday_pages
return pages
pages_per_vol = {
'1_134': {
'weekday': 5,
'saturday': 2
},
'135_145': {
'weekday': 6,
'saturday': 2
},
'146_164': {
'weekday': 9,
'saturday': 3
},
'165_190': {
'weekday': 6,
'saturday': 3
},
'191_199': {
'weekday': 8,
'saturday': 0
}
}
def get_pages(vol_num):
for key, pages in pages_per_vol.items():
vols = key.split('_')
vols = [int(y) for y in vols]
if len(vols) == 2:
vols = list(range(vols[0], vols[1] + 1))
if vol_num in vols:
return pages
predictions = []
for row in df_series.dropna(subset=['start_date', 'end_date'])[:-1].itertuples():
start_date = arrow.get(row.start_date, 'YYYY-MM-DD')
end_date = arrow.get(row.end_date, 'YYYY-MM-DD').shift(days=+1)
vol_num = int(row.Item_number.split('-')[-1])
pages_vol = get_pages(vol_num)
prediction = predict_pages(start_date, end_date, weekday_pages=pages_vol['weekday'], saturday_pages=pages_vol['saturday'])
#print(f'Volume {row.Item_number}: {prediction} predicted / {row.Pages} actual pages')
predictions.append({'volume': row.Item_number, 'predicted': prediction, 'actual': row.Pages})
df_predictions = pd.DataFrame(predictions)
df_predictions.loc[:, 'difference'] = df_predictions['predicted'] - df_predictions['actual']
pd.set_option("display.max_rows", 200)
import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)
df_predictions.style.background_gradient(cmap=cm, subset=pd.IndexSlice[:, ['difference']])
actual | predicted | volume | difference | |
---|---|---|---|---|
0 | 303 | 322 | AU NBAC N193-001 | 19 |
1 | 312 | 334 | AU NBAC N193-002 | 22 |
2 | 345 | 351 | AU NBAC N193-003 | 6 |
3 | 312 | 319 | AU NBAC N193-004 | 7 |
4 | 305 | 312 | AU NBAC N193-005 | 7 |
5 | 334 | 341 | AU NBAC N193-006 | 7 |
6 | 349 | 351 | AU NBAC N193-007 | 2 |
7 | 318 | 319 | AU NBAC N193-008 | 1 |
8 | 327 | 329 | AU NBAC N193-009 | 2 |
9 | 327 | 334 | AU NBAC N193-010 | 7 |
10 | 350 | 351 | AU NBAC N193-011 | 1 |
11 | 310 | 319 | AU NBAC N193-012 | 9 |
12 | 330 | 334 | AU NBAC N193-013 | 4 |
13 | 329 | 329 | AU NBAC N193-014 | 0 |
14 | 349 | 351 | AU NBAC N193-015 | 2 |
15 | 313 | 314 | AU NBAC N193-016 | 1 |
16 | 331 | 329 | AU NBAC N193-017 | -2 |
17 | 322 | 334 | AU NBAC N193-018 | 12 |
18 | 348 | 348 | AU NBAC N193-019 | 0 |
19 | 312 | 312 | AU NBAC N193-020 | 0 |
20 | 330 | 331 | AU NBAC N193-021 | 1 |
21 | 314 | 334 | AU NBAC N193-022 | 20 |
22 | 344 | 346 | AU NBAC N193-023 | 2 |
23 | 310 | 312 | AU NBAC N193-024 | 2 |
24 | 323 | 327 | AU NBAC N193-025 | 4 |
25 | 332 | 336 | AU NBAC N193-026 | 4 |
26 | 349 | 351 | AU NBAC N193-027 | 2 |
27 | 314 | 319 | AU NBAC N193-028 | 5 |
28 | 328 | 329 | AU NBAC N193-029 | 1 |
29 | 327 | 334 | AU NBAC N193-030 | 7 |
30 | 339 | 351 | AU NBAC N193-031 | 12 |
31 | 316 | 319 | AU NBAC N193-032 | 3 |
32 | 329 | 329 | AU NBAC N193-033 | 0 |
33 | 322 | 334 | AU NBAC N193-034 | 12 |
34 | 351 | 351 | AU NBAC N193-035 | 0 |
35 | 317 | 319 | AU NBAC N193-036 | 2 |
36 | 300 | 312 | AU NBAC N193-037 | 12 |
37 | 328 | 336 | AU NBAC N193-038 | 8 |
38 | 350 | 351 | AU NBAC N193-039 | 1 |
39 | 320 | 319 | AU NBAC N193-040 | -1 |
40 | 325 | 324 | AU NBAC N193-041 | -1 |
41 | 318 | 334 | AU NBAC N193-042 | 16 |
42 | 344 | 343 | AU NBAC N193-043 | -1 |
43 | 317 | 317 | AU NBAC N193-044 | 0 |
44 | 331 | 331 | AU NBAC N193-045 | 0 |
45 | 317 | 329 | AU NBAC N193-046 | 12 |
46 | 350 | 351 | AU NBAC N193-047 | 1 |
47 | 314 | 314 | AU NBAC N193-048 | 0 |
48 | 296 | 312 | AU NBAC N193-049 | 16 |
49 | 338 | 341 | AU NBAC N193-050 | 3 |
50 | 351 | 351 | AU NBAC N193-051 | 0 |
51 | 314 | 319 | AU NBAC N193-052 | 5 |
52 | 326 | 329 | AU NBAC N193-053 | 3 |
53 | 315 | 329 | AU NBAC N193-054 | 14 |
54 | 167 | 351 | AU NBAC N193-055 | 184 |
55 | 315 | 319 | AU NBAC N193-056 | 4 |
56 | 318 | 319 | AU NBAC N193-057 | 1 |
57 | 309 | 314 | AU NBAC N193-058 | 5 |
58 | 347 | 351 | AU NBAC N193-059 | 4 |
59 | 313 | 319 | AU NBAC N193-060 | 6 |
60 | 317 | 317 | AU NBAC N193-061 | 0 |
61 | 312 | 329 | AU NBAC N193-062 | 17 |
62 | 345 | 348 | AU NBAC N193-063 | 3 |
63 | 309 | 317 | AU NBAC N193-064 | 8 |
64 | 317 | 319 | AU NBAC N193-065 | 2 |
65 | 307 | 329 | AU NBAC N193-066 | 22 |
66 | 343 | 346 | AU NBAC N193-067 | 3 |
67 | 313 | 317 | AU NBAC N193-068 | 4 |
68 | 310 | 310 | AU NBAC N193-069 | 0 |
69 | 325 | 326 | AU NBAC N193-070 | 1 |
70 | 352 | 351 | AU NBAC N193-071 | -1 |
71 | 296 | 312 | AU NBAC N193-072 | 16 |
72 | 321 | 324 | AU NBAC N193-073 | 3 |
73 | 314 | 329 | AU NBAC N193-074 | 15 |
74 | 348 | 351 | AU NBAC N193-075 | 3 |
75 | 306 | 309 | AU NBAC N193-076 | 3 |
76 | 331 | 334 | AU NBAC N193-077 | 3 |
77 | 309 | 314 | AU NBAC N193-078 | 5 |
78 | 351 | 351 | AU NBAC N193-079 | 0 |
79 | 318 | 319 | AU NBAC N193-080 | 1 |
80 | 281 | 300 | AU NBAC N193-081 | 19 |
81 | 333 | 341 | AU NBAC N193-082 | 8 |
82 | 350 | 351 | AU NBAC N193-083 | 1 |
83 | 312 | 314 | AU NBAC N193-084 | 2 |
84 | 315 | 317 | AU NBAC N193-085 | 2 |
85 | 307 | 329 | AU NBAC N193-086 | 22 |
86 | 349 | 346 | AU NBAC N193-087 | -3 |
87 | 316 | 317 | AU NBAC N193-088 | 1 |
88 | 306 | 307 | AU NBAC N193-089 | 1 |
89 | 316 | 326 | AU NBAC N193-090 | 10 |
90 | 343 | 344 | AU NBAC N193-091 | 1 |
91 | 319 | 319 | AU NBAC N193-092 | 0 |
92 | 325 | 327 | AU NBAC N193-093 | 2 |
93 | 301 | 329 | AU NBAC N193-094 | 28 |
94 | 351 | 351 | AU NBAC N193-095 | 0 |
95 | 317 | 319 | AU NBAC N193-096 | 2 |
96 | 314 | 314 | AU NBAC N193-097 | 0 |
97 | 308 | 327 | AU NBAC N193-098 | 19 |
98 | 346 | 351 | AU NBAC N193-099 | 5 |
99 | 318 | 319 | AU NBAC N193-100 | 1 |
100 | 316 | 314 | AU NBAC N193-101 | -2 |
101 | 314 | 314 | AU NBAC N193-102 | 0 |
102 | 352 | 351 | AU NBAC N193-103 | -1 |
103 | 313 | 309 | AU NBAC N193-104 | -4 |
104 | 320 | 324 | AU NBAC N193-105 | 4 |
105 | 312 | 329 | AU NBAC N193-106 | 17 |
106 | 351 | 351 | AU NBAC N193-107 | 0 |
107 | 310 | 309 | AU NBAC N193-108 | -1 |
108 | 331 | 331 | AU NBAC N193-109 | 0 |
109 | 310 | 329 | AU NBAC N193-110 | 19 |
110 | 345 | 346 | AU NBAC N193-111 | 1 |
111 | 317 | 317 | AU NBAC N193-112 | 0 |
112 | 305 | 310 | AU NBAC N193-113 | 5 |
113 | 326 | 326 | AU NBAC N193-114 | 0 |
114 | 351 | 351 | AU NBAC N193-115 | 0 |
115 | 314 | 314 | AU NBAC N193-116 | 0 |
116 | 322 | 324 | AU NBAC N193-117 | 2 |
117 | 307 | 329 | AU NBAC N193-118 | 22 |
118 | 352 | 351 | AU NBAC N193-119 | -1 |
119 | 317 | 319 | AU NBAC N193-120 | 2 |
120 | 322 | 324 | AU NBAC N193-121 | 2 |
121 | 314 | 332 | AU NBAC N193-122 | 18 |
122 | 347 | 351 | AU NBAC N193-123 | 4 |
123 | 318 | 319 | AU NBAC N193-124 | 1 |
124 | 296 | 317 | AU NBAC N193-125 | 21 |
125 | 340 | 341 | AU NBAC N193-126 | 1 |
126 | 351 | 351 | AU NBAC N193-127 | 0 |
127 | 312 | 314 | AU NBAC N193-128 | 2 |
128 | 327 | 329 | AU NBAC N193-129 | 2 |
129 | 307 | 329 | AU NBAC N193-130 | 22 |
130 | 348 | 348 | AU NBAC N193-131 | 0 |
131 | 315 | 317 | AU NBAC N193-132 | 2 |
132 | 303 | 307 | AU NBAC N193-133 | 4 |
133 | 309 | 326 | AU NBAC N193-134 | 17 |
134 | 390 | 360 | AU NBAC N193-135 | -30 |
135 | 366 | 376 | AU NBAC N193-136 | 10 |
136 | 375 | 378 | AU NBAC N193-137 | 3 |
137 | 366 | 390 | AU NBAC N193-138 | 24 |
138 | 418 | 416 | AU NBAC N193-139 | -2 |
139 | 371 | 372 | AU NBAC N193-140 | 1 |
140 | 381 | 390 | AU NBAC N193-141 | 9 |
141 | 374 | 388 | AU NBAC N193-142 | 14 |
142 | 417 | 416 | AU NBAC N193-143 | -1 |
143 | 366 | 378 | AU NBAC N193-144 | 12 |
144 | 359 | 364 | AU NBAC N193-145 | 5 |
145 | 605 | 606 | AU NBAC N193-146 | 1 |
146 | 621 | 624 | AU NBAC N193-147 | 3 |
147 | 564 | 567 | AU NBAC N193-148 | 3 |
148 | 585 | 585 | AU NBAC N193-149 | 0 |
149 | 555 | 585 | AU NBAC N193-150 | 30 |
150 | 623 | 624 | AU NBAC N193-151 | 1 |
151 | 555 | 558 | AU NBAC N193-152 | 3 |
152 | 600 | 603 | AU NBAC N193-153 | 3 |
153 | 573 | 585 | AU NBAC N193-154 | 12 |
154 | 606 | 618 | AU NBAC N193-155 | 12 |
155 | 559 | 564 | AU NBAC N193-156 | 5 |
156 | 579 | 585 | AU NBAC N193-157 | 6 |
157 | 606 | 606 | AU NBAC N193-158 | 0 |
158 | 633 | 624 | AU NBAC N193-159 | -9 |
159 | 556 | 558 | AU NBAC N193-160 | 2 |
160 | 593 | 597 | AU NBAC N193-161 | 4 |
161 | 571 | 585 | AU NBAC N193-162 | 14 |
162 | 633 | 624 | AU NBAC N193-163 | -9 |
163 | 600 | 606 | AU NBAC N193-164 | 6 |
164 | 439 | 411 | AU NBAC N193-165 | -28 |
165 | 408 | 405 | AU NBAC N193-166 | -3 |
166 | 429 | 429 | AU NBAC N193-167 | 0 |
167 | 414 | 420 | AU NBAC N193-168 | 6 |
168 | 417 | 411 | AU NBAC N193-169 | -6 |
169 | 408 | 408 | AU NBAC N193-170 | 0 |
170 | 428 | 429 | AU NBAC N193-171 | 1 |
171 | 392 | 396 | AU NBAC N193-172 | 4 |
172 | 437 | 414 | AU NBAC N193-173 | -23 |
173 | 393 | 402 | AU NBAC N193-174 | 9 |
174 | 426 | 426 | AU NBAC N193-175 | 0 |
175 | 384 | 387 | AU NBAC N193-176 | 3 |
176 | 394 | 396 | AU NBAC N193-177 | 2 |
177 | 400 | 405 | AU NBAC N193-178 | 5 |
178 | 411 | 423 | AU NBAC N193-179 | 12 |
179 | 384 | 387 | AU NBAC N193-180 | 3 |
180 | 405 | 405 | AU NBAC N193-181 | 0 |
181 | 379 | 402 | AU NBAC N193-182 | 23 |
182 | 264 | 291 | AU NBAC N193-183 | 27 |
183 | 389 | 390 | AU NBAC N193-184 | 1 |
184 | 397 | 396 | AU NBAC N193-185 | -1 |
185 | 387 | 402 | AU NBAC N193-186 | 15 |
186 | 430 | 429 | AU NBAC N193-187 | -1 |
187 | 387 | 390 | AU NBAC N193-188 | 3 |
188 | 346 | 381 | AU NBAC N193-189 | 35 |
189 | 378 | 417 | AU NBAC N193-190 | 39 |
190 | 489 | 520 | AU NBAC N193-191 | 31 |
191 | 468 | 472 | AU NBAC N193-192 | 4 |
192 | 488 | 488 | AU NBAC N193-193 | 0 |
193 | 468 | 488 | AU NBAC N193-194 | 20 |
194 | 520 | 520 | AU NBAC N193-195 | 0 |
195 | 461 | 464 | AU NBAC N193-196 | 3 |
196 | 496 | 496 | AU NBAC N193-197 | 0 |
197 | 468 | 488 | AU NBAC N193-198 | 20 |