Identified Australian Wars and Resistance

(c) Bill Pascoe and Kaine Usher, 2025

For important information on how to understand this notebook, see the Introduction AWR_Introduction.html.

This notebook reads in a file of adjusted data on Australian Wars and Resistance prior to the 1930s, including clustering results and produces maps of:

  • stages within wars
  • wars
  • regions within which wars occurred
  • periods within which regions were at war

This file is the result of careful observation of results from statio-temporal distance based and k-nearest neighbour clustering methods. This method uses massacres to identify periods of intense conflict that can be regarded as a 'war'. However, many other factors are relevant to wars, so this method can be expected to be roughly accurate but require some adjustment.

Each site was reviewed by Dr Bill Pascoe, who has been working the massacre data for 8 years, to check whether:

  • the clusters distinguished by automated methods made sense as wars from his knowledge of historical sources and transmitted Indigenous knowledge
  • whether each site should be in the cluster identified

If not, appropriate changes were made. The clustering method proved generally effective in identifying wars with only slight adjustments and corrections needed.

For example, different thresholds result in differently sized clusters in different parts of the country, so clusters identified at different thresholds were selected for different regions. In some cases sites there were outliers and removed from a cluster. For example a massacre happening a decade or more after nearby sites would not have skewed the cluster or war to a very late end date, and not appropriately represented the period of greatest intensity of conflict in that region, though that massacre remains an important part of history. In other cases, clusters could not take into account factors like the Great Dividing Range seperating peoples and sphere's of activity, or yet other cases where massacres did involve people and events across such divides, because the range was used strategically and tactically.

This reviewed and adjusted data contains groupings at several scales:

  • Stages: These are stages within a war and are important for understanding the ebb and flow of the war, such as a war starting in one region and ending in another.
  • War: These can be understood as distinct wars, for example involving the same peoples, in the same region over a distinct period of time. Wars are often closely related to each other, but to understand them as connected we must first understand them as distinct.
  • Regions: These wars happened within broader regions, such as the Kimberley, or the gulf Country, or the East Coast.
  • Periods: There are distinct overall periods or phases (early, south, north and late).

The names used for each of these groupings are only temporary working terms related to the location they are in. The naming of these wars needs to be considered with the involvement of Aboriginal and Torres Strait Islander people.

At this early stage, while there are no clear and fixed boundaries, massacres indicate the extent of open mortal violence across country, and a minimal start and end date for each war. Massacres are only a part of the story. It is expected that the extent of wars will be adjusted in response to further information, and that other events are already, or will come to be regarded as signalling the 'start' or 'end' of war.

These points may be debated for years or decades to come, but it is important to have identified a kernel of each war (indicated by these clusters of extreme violence in the form of massacres) as a basis from which to improve our knowledge of history.

Parameter Selection

In [1]:
# Enter file path of dataset:
file_path = "MassacresInAustralianWars.csv"
In [2]:
# this setting enables displaying output multiple times in one cell, such as when looping, instead of just the last call.
from IPython.core.interactiveshell import InteractiveShell  
InteractiveShell.ast_node_interactivity = "all" 

Prepare Data

In [3]:
import pandas as pd
df_initial = pd.read_csv(file_path)

#df = df_initial.drop(["Narrative", "Sources", "Group", "Linkback"], axis=1)
df = df_initial.filter(["ghap_id", "title", "description", "latitude", "longitude", "datestart", "dateend", "linkback", "Victims", "VictimsDead", "Attackers", "AttackersDead", "MassacreGroup", "KNN1", "War", "Stage", "Region", "Period"], axis=1)

df["ghap_id"] = df["ghap_id"].astype(str)

from geojikuu.preprocessing.projection import MGA2020Projector
mga_2020_projector = MGA2020Projector("wgs84")
results = mga_2020_projector.project(list(zip(df["latitude"], df["longitude"])))
df["mga_2020"] = results["mga2020_coordinates"]
unit_conversion = results["unit_conversion"]

from geojikuu.preprocessing.conversion_tools import DateConvertor
date_convertor = DateConvertor(date_format_in="%Y-%m-%d", date_format_out="%Y-%m-%d")
#df['date_converted'] = df['datestart'].apply(date_convertor.date_to_days)

from datetime import datetime

def date_to_days(date_str, date_format="%Y-%m-%d"):
    try:
        unix_epoch = datetime(1970, 1, 1)
        date_obj = datetime.strptime(date_str, date_format)
        return (date_obj - unix_epoch).days
    except Exception as e:
        print(f"Failed to convert '{date_str}': {e}")
        return None

df['date_converted'] = df['datestart'].apply(lambda x: date_to_days(x, "%Y-%m-%d"))
In [4]:
import geopandas

Output

Methods For Cluster Summary

In [5]:
# This should be refactored. You'd want to just form the cluster once, then get all these properties off the one object
# but it works, and right now getting the results urgently is more important than perfect code.

def getConvexHull(bycol, id, polygononly):
    ## query df_initial for assigned_cluster = id, and make into list, and make into convex hull and add to summary
    cluster = df_initial[df_initial[bycol] == id]

    # temporarily use geopandas to create a 'geometry' from the coordinates in this cluster so we can call the convexhull method on it
    gdf = geopandas.GeoDataFrame(
        cluster, geometry=geopandas.points_from_xy(cluster.longitude, cluster.latitude), crs="EPSG:4326"
    )
    # print ("Convex Hull")
    chull = gdf.geometry.union_all().convex_hull

    if (not polygononly) :
        return chull
    if len(cluster.index) > 2 and polygononly :
        return chull
    else :
        return None

def getCentroid(bycol, id, polygononly):
    ## query df_initial for assigned_cluster = id, and make into list, and make into convex hull and add to summary
    cluster = df_initial[df_initial[bycol] == id]

    # temporarily use geopandas to create a 'geometry' from the coordinates in this cluster so we can call the convexhull method on it
    gdf = geopandas.GeoDataFrame(
        cluster, geometry=geopandas.points_from_xy(cluster.longitude, cluster.latitude), crs="EPSG:4326"
    )
    return gdf.geometry.union_all().centroid

def getStart(bycol, id):
    sortedC = df_initial[df_initial[bycol] == id]
    sortedC = sortedC.sort_values(by=["datestart"], ascending=True)
    return sortedC['datestart'].values[:1][0]

def getEnd(bycol, id):
    sortedC = df_initial[df_initial[bycol] == id]
    sortedC = sortedC.sort_values(by=["dateend"], ascending=False)
    return sortedC['dateend'].values[:1][0]

def getCount(bycol, id):
    countthis = df_initial[df_initial[bycol] == id]
    return len(countthis.index)

Visualisation

In [6]:
import random
import folium
from folium import plugins

def flipLatLng(ll) :
    return (ll[1],ll[0])

def showMap(df_initial, summary, keyname, fillpolygon):
    
    map_center = [df_initial['latitude'].mean(), df_initial['longitude'].mean()]
    mapc = folium.Map(location=map_center, zoom_start=4)
    
    folium.TileLayer(
        tiles = 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
        attr = 'Esri',
        title = 'Esri Satellite',
        overlay = False,
        control = True
        ).add_to(mapc)

 
        # R < ee, R - 6 < G < R-3, B < G+2
    def random_color():
        red = ''.join([random.choice('12ABCDE') for _ in range(2)])
        green = ''.join([random.choice('12ABCDE') for _ in range(2)])
        blue =  ''.join([random.choice('12ABCDE') for _ in range(2)])
        return "#" + red + green + blue
#        return "#" + ''.join([random.choice('23456789ABCDE') for _ in range(6)])
   

    cluster_colors = {cluster: random_color() for cluster in df_initial[keyname].unique()}

    # Add polygons

    if fillpolygon : 
        popacity = 0.4
    else :
        popacity = 0
    
    for _, row in summary.iterrows():
        if (not row["wkt"]) :
            continue
   #     if (row[keyname] == 'Outlier') :
   #         continue
        # geopanda, spacey etc generate lat lng in the opposite order to what folium and leaflet assume, so we have to flip the coordinates
        locpoly = list(map(flipLatLng, list(row["wkt"].exterior.coords)))
        
        folium.Polygon(
            locations=locpoly,
            color='#EEEEEE', #cluster_colors[row['War']],
            weight=1,
            opacity=1,
            line_join='round',
            fill_color=cluster_colors[row[keyname]],
            fill_opacity=popacity,
            fill=True,
            popup=f"<b>Title:</b> {row[keyname]}<br><br>"
                  f"<b>Count:</b> {row['count']}<br><br>"
                  f"<b>Centroid:</b> {row['centroid']}<br><br>"
                  f"<b>Earliest massacre:</b> {row['startdate']}<br><br>"
                  f"<b>Latest massacre:</b> {row['enddate']}<br><br>",
             #     f"<b>Temporal Midpoint:</b> {row['temporal_midpoint']}<br><br>"
             #     f"<b>Spatial Midpoint:</b> {row['spatial_midpoint']}<br><br>",
            tooltip="Cluster details",
        ).add_to(mapc)

    # "ghap_id", "title", "datestart", "dateend", "linkback", "Victims", "VictimsDead", "Attackers", "AttackersDead", "count", "mbr", "earliest_date", "latest_date", "temporal_midpoint", "spatial_midpoint", "lat_mid", "lon_mid"
    

    # Add points colour coded in clusters
    for _, row in df_initial.iterrows():
        folium.CircleMarker(
            location=(row['latitude'], row['longitude']),
            radius=5,
            color=cluster_colors[row[keyname]],
            fill=True,
            fill_color=cluster_colors[row[keyname]],
            fillOpacity=1,
            popup=f"<b>Site:</b> {row['title']}<br>"
                  f"<b>Lat:</b> {row['latitude']}<br>"
                  f"<b>Lon:</b> {row['longitude']}<br>"
                  f"<b>Date:</b> {row['datestart']}<br>"
                  f"<b>Victims Dead:</b> {row['VictimsDead']}<br>"
                  f"<b>Attackers Dead:</b> {row['AttackersDead']}<br>"
                  f"<b>Assigned Cluster:</b> {row['KNN1']}<br>"
                  f"<b>War:</b>  {row['War']}<br>"
                  f"<b>Stage:</b>  {row['Stage']}<br>"
                  f"<b>Region:</b>  {row['Region']}<br>"
                  f"<b>Period:</b>  {row['Period']}<br>"
                  f"<b>Link:</b> <a href='{row['linkback']}' target='_blank'>{row['linkback']}</a><br>"
        ).add_to(mapc)
    folium.plugins.Fullscreen(
        position="topright",
        title="Expand me",
        title_cancel="Exit me",
        force_separate_button=True,
    ).add_to(mapc)
    return mapc

Results

Wars

In [7]:
# Go through the spreadsheet, and get each unique key for war, stage, region, period

warTitles = df_initial['War'].unique()

allWars = []

for war in warTitles:
    print(war + ": " + getStart("War", war) + " to " + getEnd("War", war) + " (" + str(getCount("War", war)) + " incidents)" )
    if (war == "Outlier") :
        continue
    allWars.append(
        {
            'War': war,
            'wkt': getConvexHull("War", war, True),
            'count': getCount("War", war),
            'centroid': getCentroid("War", war, True),
            'startdate': getStart("War", war),
            'enddate': getEnd("War", war)
        }
    )

df_war = pd.DataFrame(allWars)
#display(df_war)
#df_initial.head

showMap(df_initial, df_war, "War", True)
Southern Wiradjuri: 1839-01-01 to 1854-12-31 (3 incidents)
Tiwi: 1824-01-20 to 1828-07-21 (3 incidents)
Eyre Peninsula: 1849-05-01 to 1856-01-14 (3 incidents)
Flinders Ranges: 1852-03-17 to 1863-11-27 (3 incidents)
Murray River: 1836-05-27 to 1848-06-30 (12 incidents)
Inland Rivers: 1841-01-01 to 1870-12-31 (7 incidents)
Upper Dawson: 1857-10-27 to 1864-12-13 (15 incidents)
Roper River: 1872-07-01 to 1904-12-31 (12 incidents)
Cape York: 1864-12-16 to 1902-12-31 (14 incidents)
Tropical Coast: 1864-01-01 to 1890-06-30 (13 incidents)
Channel Country and Thargomindah: 1865-01-01 to 1899-12-31 (9 incidents)
Northern Downs: 1861-10-30 to 1872-12-31 (7 incidents)
Kalkadoon and Selwyn Ranges: 1879-02-01 to 1884-09-30 (8 incidents)
Bowen: 1866-07-01 to 1880-12-31 (4 incidents)
Rockhampton: 1855-12-27 to 1872-12-31 (5 incidents)
Gulf Country: 1861-12-01 to 1918-12-31 (24 incidents)
Anewan: 1841-05-01 to 1860-06-30 (4 incidents)
Victoria River: 1886-04-01 to 1924-12-31 (18 incidents)
Central Desert: 1873-07-18 to 1928-10-15 (21 incidents)
Kimberley East: 1880-01-01 to 1926-07-31 (31 incidents)
Pilbara: 1864-01-01 to 1899-12-31 (5 incidents)
Bunuba and Kimberley West: 1892-06-01 to 1927-12-10 (10 incidents)
Noongar: 1829-01-01 to 1880-11-30 (13 incidents)
Yolngu: 1875-08-08 to 1913-12-31 (7 incidents)
Daly and Mary River: 1864-09-08 to 1895-07-30 (7 incidents)
Torres Strait: 1834-08-01 to 1869-06-30 (6 incidents)
Hunter Valley and Port Macquarie: 1824-01-01 to 1828-12-31 (8 incidents)
Northern Rivers: 1834-01-01 to 1895-06-07 (20 incidents)
Outlier: 1806-03-01 to 1900-07-20 (3 incidents)
Bays: 1831-07-01 to 1862-08-31 (17 incidents)
Gomeroi: 1835-01-01 to 1838-08-31 (9 incidents)
Mandandanji: 1848-01-01 to 1853-09-29 (10 incidents)
McIntyre River: 1842-09-11 to 1849-06-30 (9 incidents)
South Road: 1836-01-01 to 1843-12-15 (12 incidents)
Sydney: 1794-09-01 to 1818-10-01 (5 incidents)
Gunai Kurnai: 1840-01-01 to 1851-05-31 (13 incidents)
Eumeralla: 1833-03-01 to 1860-01-12 (28 incidents)
Lutruwita: 1804-05-03 to 1830-08-27 (34 incidents)
Wiradjuri/Bathurst: 1823-06-01 to 1824-09-30 (6 incidents)
Central WA: 1886-01-01 to 1910-09-11 (5 incidents)
Out[7]:
Make this Notebook Trusted to load map: File -> Trust Notebook

Stages

In [8]:
# Go through the spreadsheet, and get each unique key for war, stage, region, period

stageTitles = df_initial['WarStage'].unique()

allStages = []

for stage in stageTitles:
    print(stage + ": " + getStart("WarStage", stage) + " to " + getEnd("WarStage", stage) + " (" + str(getCount("WarStage", stage)) + " incidents)" )
    allStages.append(
        {
            'WarStage': stage,
            'wkt': getConvexHull("WarStage", stage, False),
            'count': getCount("WarStage", stage),
            'centroid': getCentroid("WarStage", stage, False),
            'startdate': getStart("WarStage", stage),
            'enddate': getEnd("WarStage", stage)
        }
    )

df_stage = pd.DataFrame(allStages)

#showMap(df_initial, df_stage, "WarStage", True)
Southern Wiradjuri: Early: 1839-01-01 to 1839-08-31 (2 incidents)
Tiwi: Tiwi Island: 1824-01-20 to 1828-07-21 (2 incidents)
Eyre Peninsula: South Australia: 1856-01-14 to 1856-01-14 (1 incidents)
Flinders Ranges: South Australia: 1856-01-01 to 1863-11-27 (2 incidents)
Murray River: Tar Ru: 1839-12-01 to 1841-08-27 (3 incidents)
Inland Rivers: Late: 1866-08-01 to 1870-12-31 (2 incidents)
Upper Dawson: South West: 1861-10-19 to 1864-12-13 (3 incidents)
Roper River: Mataranka: 1875-08-05 to 1882-10-30 (4 incidents)
Upper Dawson: Upper Dawson: 1857-10-27 to 1860-03-08 (6 incidents)
Cape York: Late: 1889-06-01 to 1902-12-31 (7 incidents)
Tropical Coast: Early: 1864-01-01 to 1873-03-27 (8 incidents)
Channel Country and Thargomindah: Early: 1872-01-01 to 1879-04-30 (4 incidents)
Tropical Coast: Late: 1880-01-01 to 1890-06-30 (5 incidents)
Cape York: Mid: 1873-11-05 to 1881-10-31 (5 incidents)
Northern Downs: West: 1866-10-01 to 1868-12-31 (2 incidents)
Kalkadoon and Selwyn Ranges: Kalkadoon: 1883-08-01 to 1884-09-30 (3 incidents)
Bowen: Early: 1866-07-01 to 1867-04-30 (2 incidents)
Northern Downs: East: 1864-01-01 to 1870-12-31 (3 incidents)
Rockhampton: Late: 1865-01-01 to 1872-12-31 (3 incidents)
Gulf Country: Early: 1872-01-01 to 1876-12-20 (4 incidents)
Rockhampton: Early: 1855-12-27 to 1856-01-10 (2 incidents)
Anewan: Anewan: 1852-08-01 to 1860-06-30 (3 incidents)
Victoria River: Wave Hill Late: 1919-12-10 to 1924-12-31 (3 incidents)
Central Desert: Early: 1873-07-18 to 1897-12-31 (12 incidents)
Kimberley East: Mid: 1893-09-18 to 1900-12-31 (12 incidents)
Kimberley East: Early: 1880-01-01 to 1899-12-31 (10 incidents)
Pilbara: Late: 1890-01-01 to 1899-12-31 (1 incidents)
Kimberley East: Late: 1908-01-01 to 1926-07-31 (10 incidents)
Kimberley West: Late: 1912-01-06 to 1927-12-10 (3 incidents)
Bunuba: Geike Gorge: 1894-11-19 to 1895-06-30 (3 incidents)
Noongar: Albany: 1880-10-01 to 1880-11-30 (1 incidents)
Pilbara: South : 1868-05-01 to 1869-07-31 (2 incidents)
Noongar: South West: 1837-01-10 to 1860-12-31 (4 incidents)
Noongar: Swan River: 1829-01-01 to 1834-10-28 (5 incidents)
Roper River: Roper River: 1872-07-24 to 1875-08-29 (4 incidents)
Victoria River: Willeroo Station: 1892-10-20 to 1895-11-30 (3 incidents)
Victoria River: Downs: 1894-08-01 to 1900-06-30 (4 incidents)
Yolngu: Late: 1903-01-01 to 1913-12-31 (4 incidents)
Central Desert: Mid: 1902-08-01 to 1921-12-31 (5 incidents)
Central Desert: Late: 1928-08-15 to 1928-10-15 (4 incidents)
Roper River: Late: 1901-01-01 to 1904-12-31 (2 incidents)
Daly and Mary River: Mid: 1884-09-02 to 1884-10-17 (2 incidents)
Daly and Mary River: Early: 1864-09-08 to 1878-05-01 (4 incidents)
Eyre Peninsula: Eyre Peninsula: 1849-05-01 to 1849-05-17 (2 incidents)
Murray River: Adelaide Overland: 1841-05-01 to 1841-08-26 (3 incidents)
Torres Strait: Islands: 1859-12-01 to 1869-06-30 (4 incidents)
Torres Strait: Mainland Islands: 1834-08-01 to 1867-12-31 (2 incidents)
Gulf Country: Mid: 1880-10-01 to 1897-05-15 (15 incidents)
Upper Dawson: Nogoa: 1861-10-17 to 1861-10-28 (3 incidents)
Hunter Valley and Port Macquarie: Worimi: 1828-01-01 to 1828-12-31 (1 incidents)
Northern Rivers: Worimi: 1834-01-01 to 1841-12-31 (5 incidents)
Outlier: Late: 1900-07-20 to 1900-07-20 (1 incidents)
Inland Rivers: Early: 1841-01-01 to 1841-12-31 (1 incidents)
Inland Rivers: Marshes: 1841-10-01 to 1845-09-30 (2 incidents)
Bays: Early: 1831-07-01 to 1832-12-31 (2 incidents)
Gomeroi: Big River/Gwydir: 1837-10-15 to 1838-08-31 (5 incidents)
Bays: Wide Bay: 1849-06-01 to 1854-11-01 (3 incidents)
Mandandanji: South : 1848-01-01 to 1853-09-29 (4 incidents)
Mandandanji: North : 1848-10-01 to 1852-11-30 (6 incidents)
McIntyre River: East: 1842-09-11 to 1849-05-31 (4 incidents)
McIntyre River: West: 1844-01-01 to 1849-06-30 (5 incidents)
Northern Rivers: Macleay and Nambucca: 1840-05-20 to 1856-12-31 (6 incidents)
Bays: Moreton Bay and Darlling Downs: 1841-10-01 to 1847-04-20 (8 incidents)
Anewan: Macleay and Nambucca: 1841-05-01 to 1841-05-31 (1 incidents)
Murray River: Early: 1836-05-27 to 1839-11-11 (3 incidents)
Gomeroi: South : 1835-01-01 to 1836-07-31 (2 incidents)
South Road: East: 1836-01-01 to 1836-12-31 (1 incidents)
Hunter Valley and Port Macquarie: Upper Hunter: 1828-04-01 to 1828-04-30 (1 incidents)
Hunter Valley and Port Macquarie: Valley: 1826-09-01 to 1827-02-25 (2 incidents)
Sydney: South : 1816-04-17 to 1818-10-01 (2 incidents)
Sydney: Hawkesbury: 1794-09-01 to 1805-04-27 (3 incidents)
South Road: Yorta Yorta: 1837-11-01 to 1843-12-15 (5 incidents)
Gunai Kurnai: East: 1846-12-20 to 1851-05-31 (3 incidents)
Eumeralla: North West: 1843-08-06 to 1854-11-30 (6 incidents)
Gunai Kurnai: Warrigal Creek: 1843-07-01 to 1843-07-31 (5 incidents)
Eumeralla: Grampains: 1840-08-12 to 1841-06-30 (3 incidents)
Eumeralla: Henty: 1838-10-15 to 1840-12-31 (6 incidents)
South Road: Kulin: 1836-07-16 to 1838-08-31 (3 incidents)
Lutruwita: South West: 1828-10-23 to 1830-08-27 (5 incidents)
Lutruwita: South East: 1826-01-01 to 1829-06-30 (11 incidents)
Lutruwita: North : 1829-02-18 to 1830-04-18 (3 incidents)
Lutruwita: Gog Range: 1826-09-15 to 1827-12-31 (7 incidents)
Lutruwita: North East: 1829-01-31 to 1829-09-01 (2 incidents)
Lutruwita: Centre: 1827-11-01 to 1828-03-31 (2 incidents)
Lutruwita: Early: 1804-05-03 to 1815-11-30 (2 incidents)
Bunuba: West: 1892-06-01 to 1895-12-31 (2 incidents)
Wiradjuri/Bathurst: North : 1824-05-24 to 1824-09-30 (3 incidents)
Northern Rivers: Clarence and Richmond: 1841-01-01 to 1854-01-31 (8 incidents)
Cape York: Early: 1864-12-16 to 1864-12-18 (2 incidents)
Southern Wiradjuri: Late: 1854-01-01 to 1854-12-31 (1 incidents)
Victoria River: Ranges: 1910-06-01 to 1914-06-30 (3 incidents)
Hunter Valley and Port Macquarie: Port Macquarie: 1824-01-01 to 1826-02-28 (3 incidents)
Central WA: Goldfields: 1890-01-01 to 1910-09-11 (4 incidents)
Central WA: Outlier: 1886-01-01 to 1886-12-31 (1 incidents)
Daly and Mary River: Late: 1895-07-01 to 1895-07-30 (1 incidents)
Victoria River: Bradshaw Station: 1895-12-11 to 1896-12-31 (3 incidents)
Macassans: Outlier: 1893-01-01 to 1893-06-30 (1 incidents)
Murray River: Coorong: 1840-07-01 to 1840-07-14 (1 incidents)
South Road: West: 1838-07-01 to 1840-01-31 (3 incidents)
Eumeralla: Sealing and Whaling: 1833-03-01 to 1834-03-31 (1 incidents)
Gulf Country: Burketown: 1861-12-01 to 1868-05-31 (3 incidents)
Yolngu: Mid: 1885-01-01 to 1896-12-31 (2 incidents)
Eumeralla: Isolated: 1846-08-01 to 1846-08-02 (1 incidents)
Northern Downs: North : 1861-10-30 to 1872-12-31 (2 incidents)
Roper River: Calico Creek: 1872-07-01 to 1878-12-22 (2 incidents)
Bowen: Late: 1878-08-01 to 1880-12-31 (2 incidents)
Kalkadoon and Selwyn Ranges: Selwyn Ranges: 1879-02-01 to 1879-02-28 (5 incidents)
Northern Rivers: Late: 1895-06-07 to 1895-06-07 (1 incidents)
Hunter Valley and Port Macquarie: Yengo: 1825-11-15 to 1825-11-30 (1 incidents)
Victoria River: Wave Hill Early: 1886-04-01 to 1890-08-16 (2 incidents)
Channel Country and Thargomindah: Late: 1890-01-01 to 1899-12-31 (3 incidents)
Upper Dawson: Expedition Range: 1861-12-10 to 1862-12-31 (3 incidents)
Bays: Late: 1861-01-01 to 1862-08-31 (4 incidents)
Channel Country and Thargomindah: Thargomindah: 1865-01-01 to 1865-12-31 (2 incidents)
Gulf Country: Late: 1910-07-01 to 1918-12-31 (2 incidents)
Bunuba: South : 1896-08-14 to 1896-08-14 (1 incidents)
Pilbara: North : 1865-04-04 to 1865-04-06 (1 incidents)
Noongar: North : 1854-06-03 to 1854-08-11 (1 incidents)
Inland Rivers: Mid: 1858-01-01 to 1859-02-24 (2 incidents)
Gomeroi: East: 1838-06-10 to 1838-06-10 (1 incidents)
Gomeroi: West: 1838-01-26 to 1838-01-26 (1 incidents)
Tiwi: Peninsula: 1827-07-30 to 1827-07-30 (1 incidents)
Sydney: South Maritime: 1806-03-01 to 1806-03-01 (1 incidents)
Gunai Kurnai: West: 1840-01-01 to 1842-12-31 (4 incidents)
Eumeralla: South East: 1839-10-01 to 1860-01-12 (9 incidents)
Gunai Kurnai: Lowlands: 1842-12-01 to 1842-12-31 (1 incidents)
Eumeralla: North East: 1840-11-01 to 1841-07-25 (2 incidents)
Wiradjuri/Bathurst: South : 1823-06-01 to 1824-06-02 (3 incidents)
Noongar: York: 1832-07-01 to 1837-11-16 (2 incidents)
Pilbara: Mid: 1864-01-01 to 1864-08-31 (1 incidents)
Lutruwita: North West: 1828-01-01 to 1828-02-10 (2 incidents)
Yolngu: Early: 1875-08-08 to 1875-08-09 (1 incidents)
Flinders Ranges: Flinders Ranges: 1852-03-17 to 1852-03-17 (1 incidents)
Murray River: Late: 1846-01-01 to 1848-06-30 (2 incidents)

Regions

In [9]:
# Go through the spreadsheet, and get each unique key for war, stage, region, period

regionTitles = df_initial['Region'].unique()

allRegions = []

for region in regionTitles:
    print(region + ": " + getStart("Region", region) + " to " + getEnd("Region", region) + " (" + str(getCount("Region", region)) + " incidents)" )
    allRegions.append(
        {
            'Region': region,
            'wkt': getConvexHull("Region", region, True),
            'count': getCount("Region", region),
            'centroid': getCentroid("Region", region, True),
            'startdate': getStart("Region", region),
            'enddate': getEnd("Region", region)
        }
    )

df_region = pd.DataFrame(allRegions)

showMap(df_initial, df_region, "Region", True)
East: 1794-09-01 to 1900-07-20 (90 incidents)
North: 1824-01-20 to 1913-12-31 (30 incidents)
South: 1849-05-01 to 1863-11-27 (6 incidents)
South East: 1833-03-01 to 1860-01-12 (65 incidents)
North East Inland: 1848-01-01 to 1872-12-31 (32 incidents)
North East: 1834-08-01 to 1902-12-31 (42 incidents)
Centre: 1865-01-01 to 1928-10-15 (43 incidents)
Gulf Country: 1861-12-01 to 1918-12-31 (24 incidents)
North West: 1880-01-01 to 1927-12-10 (59 incidents)
Pilbara: 1864-01-01 to 1899-12-31 (5 incidents)
South West: 1829-01-01 to 1880-11-30 (13 incidents)
Lutruwita: 1804-05-03 to 1830-08-27 (34 incidents)
Out[9]:
Make this Notebook Trusted to load map: File -> Trust Notebook

Periods

In [10]:
# Go through the spreadsheet, and get each unique key for war, stage, region, period

periodTitles = df_initial['Period'].unique()

allPeriods = []

for period in periodTitles:
    if period == "Outlier": continue
    print(period + ": " + getStart("Period", period) + " to " + getEnd("Period", period) + " (" + str(getCount("Period", period)) + " incidents)" )
    allPeriods.append(
        {
            'Period': period,
            'wkt': getConvexHull("Period", period, True),
            'count': getCount("Period", period),
            'centroid': getCentroid("Period", period, True),
            'startdate': getStart("Period", period),
            'enddate': getEnd("Period", period)
        }
    )

df_period = pd.DataFrame(allPeriods)

showMap(df_initial, df_period, "Period", True)
South: 1835-01-01 to 1870-12-31 (143 incidents)
Early: 1794-09-01 to 1838-12-31 (72 incidents)
North: 1848-10-01 to 1904-12-31 (188 incidents)
Late: 1903-01-01 to 1928-10-15 (36 incidents)
Out[10]:
Make this Notebook Trusted to load map: File -> Trust Notebook