1 AI Tool Usage

We analyze which AI tools participants are currently using in their work.

Code
from collections import Counter
import matplotlib.pyplot as plt

# Find the column for current AI tool usage
# Using partial string matching to be robust against column name changes
ai_tools_col = [c for c in df.columns if "currently use" in c][0]

# Drop NaNs and convert to strings
tools_series = df[ai_tools_col].dropna().astype(str)

# Split multiple entries (assumed comma separated), clean, and flatten
all_tools = []
for entry in tools_series:
    # Split by comma
    tools = entry.split(',')
    for tool in tools:
        # Clean whitespace and normalize case
        tool_clean = tool.strip().lower()
        # Map common variations
        if 'copilot' in tool_clean:
            all_tools.append('Copilot')
        elif 'chatgpt' in tool_clean:
            all_tools.append('ChatGPT')
        elif 'gemini' in tool_clean:
            all_tools.append('Gemini')
        elif 'claude' in tool_clean:
            all_tools.append('Claude')
        elif 'none' in tool_clean or tool_clean == '' or tool_clean == 'nan':
            pass
        else:
            # Capitalize first letter for other tools
            all_tools.append(tool.strip().capitalize())

# Count frequencies
tool_counts = Counter(all_tools)

# Create a DataFrame for better display
tools_df = pd.DataFrame.from_dict(tool_counts, orient='index', columns=['Count']).sort_values('Count', ascending=False)

# Display as a markdown table
Markdown(tools_df.to_markdown(index=True))
Table 1: Most commonly used AI tools in transport planning work.
Count
Copilot 8
ChatGPT 4
Chat pdf 1
Simplifying text 1
Etc. 1
Geospatial problem-solving 1
Knime 1

As shown in Table 1, Copilot and ChatGPT are the dominant tools.

Code
# Simple bar plot
plt.figure(figsize=(10, 6))
tools_df['Count'].plot(kind='bar')
plt.title('AI Tools Currently Used in Work')
plt.ylabel('Number of Respondents')
plt.xlabel('AI Tool')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
Figure 1: Bar chart of AI tools currently used in work.

2 Automation Opportunities

We analyze which tasks participants believe are most suitable for automation.

Code
# Find the column for automation
auto_col = [c for c in df.columns if "suitable for automation" in c][0]

# Drop NaNs
auto_responses = df[auto_col].dropna().astype(str).tolist()

# Define keywords to categorize responses
keywords = {
    "Data Analysis & Processing": ["data", "analysis", "cleaning", "processing", "collection", "formatting", "merging"],
    "Reporting & Writing": ["report", "writing", "email", "drafting", "summarising"],
    "Mapping & GIS": ["map", "gis", "spatial", "geo", "coordinates"],
    "Routine/Repetitive": ["repetitive", "routine", "dashboard"]
}

category_counts = {k: 0 for k in keywords}

for response in auto_responses:
    response_lower = response.lower()
    for category, keys in keywords.items():
        if any(k in response_lower for k in keys):
            category_counts[category] += 1

# Create dataframe for summary
categories_df = pd.DataFrame.from_dict(category_counts, orient='index', columns=['Mentions']).sort_values('Mentions', ascending=False)

# Display summary table
Markdown(categories_df.to_markdown(index=True))
Table 2: Tasks identified as suitable for automation, categorized by theme.
Mentions
Data Analysis & Processing 8
Reporting & Writing 3
Mapping & GIS 2
Routine/Repetitive 1

See Table 2 for the breakdown of tasks. Data-related tasks are the most frequently cited candidates for automation.

Code
# Visualize themes
categories_df.plot(kind='barh', figsize=(10, 5))
plt.title('Tasks Identified as Suitable for Automation')
plt.xlabel('Mentions')
plt.tight_layout()
plt.show()
Figure 2: Horizontal bar chart of tasks identified as suitable for automation.

Reuse