Leveraging Python for Environmental Justice: Control Structures and Functions in Data Analysis

Environmental justice (EJ) focuses on the fair treatment and meaningful involvement of all people, regardless of race or income, concerning environmental laws, regulations, and policies. A critical aspect of EJ involves analyzing data to identify disparities in environmental impacts among different communities. Control structures and functions in Python are essential tools for processing and analyzing this data effectively.

Conditional Statements in Environmental Data Analysis

Conditional statements (if, elif, else) in Python enable precise decision-making when analyzing EJ data. For instance, when assessing pollution levels across different neighborhoods, a conditional statement can categorize these areas based on their exposure levels—such as “low,” “moderate,” or “high” pollution zones. This categorization helps in identifying communities that are disproportionately affected by environmental hazards.

pollution_level = 120
if pollution_level > 100:
category = “High”
elif pollution_level > 50:
category = “Moderate”
else:
category = “Low”

In the context of EJ, such conditional logic could automatically trigger alerts or recommend actions when pollution levels exceed certain thresholds in vulnerable communities.

Loops for Repeated Data Processing

Python loops (for and while) are invaluable for handling large EJ datasets, allowing repetitive operations across multiple data points. For instance, if you have air quality data from multiple locations, a for loop can efficiently analyze each data point to determine the level of environmental risk for each community.

pollution_levels = [40, 85, 130, 75, 95]
for level in pollution_levels:
if level > 100:
print(“High pollution risk”)
elif level > 50:
print(“Moderate pollution risk”)
else:
print(“Low pollution risk”)

This approach ensures that every data point is evaluated consistently, highlighting areas that need immediate attention due to high pollution levels.

Functions for Code Reusability in EJ Projects

Functions in Python enhance the reusability and organization of code, which is especially beneficial when analyzing EJ data. For instance, a function that calculates the average pollution level for a given dataset can be reused across different datasets or projects.

def average_pollution(data):
return sum(data) / len(data)

pollution_data = [55, 78, 120, 95, 63]
avg_pollution = average_pollution(pollution_data)
print(f”Average pollution level: {avg_pollution}”)

This function simplifies the process of comparing pollution levels across various regions, aiding in the identification of EJ issues.

Error Handling in Environmental Data Collection

In EJ data analysis, errors can arise from missing or incorrect data entries. Basic error handling in Python (try, except) ensures that your program can manage these issues without crashing, allowing for smoother data processing and analysis.

try:
pollution_data = [55, 78, None, 95, 63]
avg_pollution = average_pollution(pollution_data)
print(f”Average pollution level: {avg_pollution}”)
except TypeError:
print(“Error: Non-numeric data found in pollution data.”)

This example shows how error handling can maintain the integrity of EJ analyses, ensuring that non-numeric or missing data is appropriately managed.

Integrating control structures, loops, functions, and error handling into Python programs allows for robust and efficient analysis of environmental justice data. These programming techniques are essential for identifying and addressing disparities in environmental impacts, making them powerful tools for advocating for fair treatment in environmental policymaking.

EJ-PY 102

Understanding control structures and functions in Python is crucial for mastering program flow and enhancing code reusability. This article will cover conditional statements, loops, function definition and calling, and basic error handling. Additionally, we’ll provide a practical exercise to categorize temperature data based on user-defined thresholds.

Conditional Statements (if, elif, else)

Conditional statements allow the execution of specific blocks of code based on certain conditions. In Python, the primary conditional statements are if, elif, and else.

If Statement

The if statement evaluates a condition and executes the code block if the condition is True.

Copyx = 10
if x > 5:
print(“x is greater than 5”)
# Output: x is greater than 5

Elif Statement

The elif (short for else if) statement allows you to check multiple expressions for True and execute a block of code as soon as one condition is True.

Copyx = 10
if x > 15:
print(“x is greater than 15”)
elif x > 5:
print(“x is greater than 5 but less than or equal to 15”)
# Output: x is greater than 5 but less than or equal to 15

Else Statement

The else statement allows you to execute a block of code if none of the previous conditions are True.

Copyx = 3
if x > 5:
print(“x is greater than 5”)
elif x > 2:
print(“x is greater than 2 but less than or equal to 5”)
else:
print(“x is less than or equal to 2”)
# Output: x is greater than 2 but less than or equal to 5

Loops (for and while)

Loops are used to execute a block of code repeatedly until a specified condition is met.

For Loop

A for loop iterates over a sequence (e.g., a list, a tuple, a dictionary, a set, or a string) and executes a block of code for each item in the sequence.

Copyfruits = [“apple”, “banana”, “cherry”]
for fruit in fruits:
print(fruit)
# Output:
# apple
# banana
# cherry

While Loop

A while loop executes a block of code as long as a specified condition is True.

Copyi = 1
while i < 6:
print(i)
i += 1
# Output:
# 1
# 2
# 3
# 4
# 5

Function Definition and Calling

Functions are reusable blocks of code that perform a specific task. They help in organizing code and improving its readability and reuse.

Defining a Function

In Python, you define a function using the def keyword, followed by the function name, parentheses (), and a colon :. Inside the parentheses, you can define parameters.

Copydef greet(name):
print(f”Hello, {name}!”)

Calling a Function

To call a function, use the function name followed by parentheses containing arguments.

Copygreet(“Alice”)
# Output: Hello, Alice!

Returning Values

Functions can return a value using the return statement.

Copydef add(a, b):
return a + b

result = add(5, 3)
print(result)
# Output: 8

Basic Error Handling

Error handling is essential to ensure that your program can handle unexpected situations gracefully. Python provides the try, except, else, and finally blocks to handle exceptions.

Try and Except

The try block lets you test a block of code for errors. The except block lets you handle the error.

Copytry:
x = 10 / 0
except ZeroDivisionError:
print(“Cannot divide by zero”)
# Output: Cannot divide by zero

Else and Finally

The else block lets you execute code if no errors were raised. The finally block lets you execute code regardless of whether an error was raised or not.

Copytry:
x = 10 / 2
except ZeroDivisionError:
print(“Cannot divide by zero”)
else:
print(“The division was successful”)
finally:
print(“This will always be executed”)
# Output:
# The division was successful
# This will always be executed

Practical Exercise: Temperature Data Categorization

Let’s write a function that categorizes temperature data into “cold”, “moderate”, and “hot” based on user-defined thresholds. We’ll then use this function to analyze a week’s worth of temperature data.

Step-by-Step Instructions

Define the function:

The function will take the temperature data and thresholds as parameters.

It will return a list of categories.

Get temperature data:

Prompt the user to input temperature data for seven days.

Categorize the temperatures:

Use the function to categorize the temperatures based on the thresholds.

Print the categorized data:

Display the categorized temperatures to the user.

Sample Code

Copydef categorize_temperature(temp, cold_threshold, hot_threshold):
if temp < cold_threshold:
return “cold”
elif temp > hot_threshold:
return “hot”
else:
return “moderate”

def main():
# Initialize an empty list to store temperatures
temperatures = []

# Collect temperature data for 7 days
for i in range(7):
temp = float(input(f”Enter temperature for day {i + 1}: “))
temperatures.append(temp)

# Get user-defined thresholds
cold_threshold = float(input(“Enter the cold threshold: “))
hot_threshold = float(input(“Enter the hot threshold: “))

# Categorize temperatures
categorized_temperatures = [categorize_temperature(temp, cold_threshold, hot_threshold) for temp in temperatures]

# Print the categorized temperatures
for i in range(7):
print(f”Day {i + 1}: {temperatures[i]}°C – {categorized_temperatures[i]}”)

# Run the main function
if __name__ == “__main__”:
main()

Explanation of the Code

Define the categorize_temperature function:

This function takes three parameters: temp, cold_threshold, and hot_threshold.

It returns “cold” if the temperature is below the cold threshold, “hot” if it’s above the hot threshold, and “moderate” otherwise.

Define the main function:

The main() function contains the main logic of the program.

Initialize an empty list:

temperatures = [] creates an empty list to store temperatures.

Collect temperature data:

A for loop runs seven times to collect temperature data for each day.

The input() function is used to prompt the user for input.

float() converts the input string to a floating-point number.

The temperature is appended to the temperatures list.

Get user-defined thresholds:

The user is prompted to input the cold and hot thresholds.

Categorize temperatures:

List comprehension is used to categorize each temperature using the categorize_temperature function.

Print the categorized temperatures:

A for loop is used to print the temperature and its category for each day.

FAQs

Q1: What is the difference between a for loop and a while loop?

A: A for loop iterates over a sequence and runs the code block for each item in the sequence. A while loop runs the code block as long as the specified condition is True.

Q2: How do I define a function in Python?

A: You define a function using the def keyword, followed by the function name, parentheses (), and a colon :. Inside the parentheses, you can define parameters.

Q3: What is basic error handling in Python?

A: Basic error handling in Python involves using the try, except, else, and finally blocks to handle exceptions and ensure that the program can handle unexpected situations gracefully.

Q4: How can I categorize temperature data based on thresholds?

A: You can write a function that takes the temperature and thresholds as parameters and returns a category (“cold”, “moderate”, or “hot”). Use this function to categorize each temperature in your data set.

Q5: Can I have multiple elif statements in a conditional block?

A: Yes, you can have multiple elif statements to check different conditions sequentially until one of them evaluates to True.

Resources and Citations

Python if, if…else Statement (With Examples) – Programiz

Python While Loops – W3Schools

Python Functions – How to Define and Call a Function

8. Errors and Exceptions — Python 3.12.5 documentation

​Expert Perspectives on Sustainability, Climate Resilience, Data Analytics, and AI Solutions to Environmental Challenges