Viet Anh Nguyen/

Competition - Bee friendly plants - Nguyen Viet Anh


Which plants are better for bees: native or non-native?

📖 Background

You work for the local government environment agency and have taken on a project about creating pollinator bee-friendly spaces. You can use both native and non-native plants to create these spaces and therefore need to ensure that you use the correct plants to optimize the environment for these bees.

The team has collected data on native and non-native plants and their effects on pollinator bees. Your task will be to analyze this data and provide recommendations on which plants create an optimized environment for pollinator bees.

💾 The Data

You have assembled information on the plants and bees research in a file called plants_and_bees.csv. Each row represents a sample that was taken from a patch of land where the plant species were being studied.

sample_idThe ID number of the sample taken.
species_numThe number of different bee species in the sample.
dateDate the sample was taken.
seasonSeason during sample collection ("early.season" or "late.season").
siteName of collection site.
native_or_nonWhether the sample was from a native or non-native plant.
samplingThe sampling method.
plant_speciesThe name of the plant species the sample was taken from. None indicates the sample was taken from the air.
timeThe time the sample was taken.
bee_speciesThe bee species in the sample.
sexThe gender of the bee species.
specialized_onThe plant genus the bee species preferred.
parasiticWhether or not the bee is parasitic (0:no, 1:yes).
nestingThe bees nesting method.
statusThe status of the bee species.
nonnative_beeWhether the bee species is native or not (0:no, 1:yes).

Source (data has been modified)

🧑‍⚖️ Judging criteria

This is a community-based competition. The top 5 most upvoted entries will win.

The winners will receive DataCamp merchandise.

✅ Checklist before publishing

  • Rename your workspace to make it descriptive of your work. N.B. you should leave the notebook name as notebook.ipynb.
  • Remove redundant cells like the judging criteria, so the workbook is focused on your work.
  • Check that all the cells run without error.

⌛️ Time is ticking. Good luck!

import pandas as pd
data = pd.read_csv("data/plants_and_bees.csv")
import pandas as pd
import matplotlib.pyplot as plt

# Load the data
filename = "data/plants_and_bees.csv"
df = pd.read_csv(filename)
# Assuming the sample data is stored in a DataFrame called 'df'

# Drop any unnecessary columns
df = df.drop(columns=["species_num", "date", "season", "site", "native_or_non", "sampling", "time", "sex",
                      "specialized_on", "parasitic", "nesting", "status", "nonnative_bee"])

# Convert relevant columns to categorical data type
df["plant_species"] = df["plant_species"].astype("category")
df["bee_species"] = df["bee_species"].astype("category")

# Convert the remaining columns to appropriate data types if needed
# df["sample_id"] = df["sample_id"].astype(int)

# Reset the index of the DataFrame
df = df.reset_index(drop=True)

# Display the preprocessed DataFrame
# Filter the dataset based on native and non-native bee species
native_bees = data[data["native_or_non"] == "native"]
non_native_bees = data[data["native_or_non"] == "non-native"]

# Calculate plant preferences for native and non-native bees
native_bee_plant_preference = native_bees["plant_species"].value_counts()
non_native_bee_plant_preference = non_native_bees["plant_species"].value_counts()

# Display the top preferred plants for native and non-native bees
print("Native bee plant preference:")

print("\nNon-native bee plant preference:")
# Assuming the sample data is stored in a DataFrame called 'df'

# Select the desired sample ID
sample_id = 17400

# Filter the data for the selected sample ID
sample = df[df["sample_id"] == sample_id]

# Count the occurrences of bee and plant species
bee_counts = sample["bee_species"].value_counts()
plant_counts = sample["plant_species"].value_counts()

# Create a bar plot of bee and plant species distribution
fig, ax = plt.subplots()
bee_counts.plot(kind="bar", ax=ax, label="Bee Species")
plant_counts.plot(kind="bar", ax=ax, label="Plant Species")

# Set the labels and title
ax.set_title("Distribution of Bee and Plant Species in Sample {}".format(sample_id))

# Show the plot
# Select the top three plant species to support native bees
top_plants = native_bee_plant_preference.head(3).index.tolist()

print("Top three plant species to support native bees:")
print(", ".join(top_plants)) 
  • AI Chat
  • Code