Introduction of the Project
Hello! Do you like birds? Are you curious to know where all of these birds migrate when climate changes? Today, we will create a simple and efficient code for Tracking Bird Migration with NumPy Module in Python. We will plot their migrations, speed, and location on graphs and maps! Wow, so interesting! So, what are you waiting for? Let’s code it to find their migration route and speed.
1. To run the code, you need Python; you can use VSCode or any python IDE.
2. Pre-installed Numpy, Pandas & Matplotlib Module.
3. Download the Dataset CSV file.
Steps For Tracking Bird Migration Using NumPy Module
Step 1: Install the modules; if you haven’t it in your system, paste the below command lines in your command prompt and press enter.
pip install matplotlib
pip install pandas
pip install numpy
Step 2: Paste the below code in your IDE/code editor.
# Import required modules import pandas as pd import matplotlib.pyplot as plt import numpy as np import datetime # To read the CSV file birdData = pd.read_csv("C:\\Users\\misss\\Downloads\\bird_tracking.csv") # To get the unique names of birds birdNames = pd.unique(birdData.bird_name) # To store the indices of the bird Eric i = birdData.bird_name == "Eric" x,y = birdData.longitude[i], birdData.latitude[i] # Create a new figure, or activate an existing figure plt.figure(figsize = (4.5,6)) plt.plot(x,y,"b.") # Plot each bird in the same figure plt.figure(figsize = (4.5,6)) # Plot latitude & longitude in graph for name in birdNames: i = birdData.bird_name == name x,y = birdData.longitude[i], birdData.latitude[i] plt.plot(x,y,".", label=name) # Labelling Longitute and Latitude plt.xlabel("Longitude") plt.ylabel("Latitude") plt.legend(loc="lower right") # To get the timestamps of a day timestamps =  for k in range(len(birdData)): timestamps.append(datetime.datetime.strptime(birdData.date_time.iloc[k][:-3], "%Y-%m-%d %H:%M:%S")) birdData["timestamp"] = pd.Series(timestamps, index = birdData.index) data = birdData[birdData.bird_name == "Eric"] times = data.timestamp elapsed_time = [time-times for time in times] elapsed_days = np.array(elapsed_time)/datetime.timedelta(days=1) # To find the mean speed next_day = 1 inds =  daily_mean_speed =  for (i,t) in enumerate(elapsed_days): if t < next_day: inds.append(i) else: daily_mean_speed.append(np.mean(data.speed_2d[inds])) next_day += 1 inds =  # For plotting the graph and labelling plt.figure(figsize = (5,6)) plt.plot(daily_mean_speed, "rs-") plt.xlabel(" Day ") plt.ylabel(" Mean Speed (m/s) "); # Display all open figures plt.show()
Explanation Of The Code
In the beginning, we imported all the necessary modules into our code.
1. Firstly, we read the CSV file and get the unique names of the birds from it.
2. After this, we get the indices of the bird named Eric and plot the figure using the plot function.
3. After this, we plot latitude and longitude in the second figure using x and y coordinates.
4. We are labeling the x and y-axis using the label function.
5. Now, we are calculating the timestamp for our third figure.
6. After it, we find the mean speed for the same bird – Eric.
7. Then, we plot the graph and label it according to the axis.
8. We have shown the speed in meters per second, and the x-axis represents the days.
9. Finally, we display all the open figures using the show function.
Below are the results of successfully running the code for Tracking Bird Migration Using the NumPy Module.
Figures 1 and 2. show the migrating route of the birds in terms of latitude and longitude.
Figure 3. shows the graphical representation of the mean speed of a bird per day when observed for a long time.
Things to Remember
- Download the CSV file before proceeding with the code.
- Install all the required modules before running the code.
- Alter the CSV file path in your code according to your CSV file location.
Cisco Ramon is an American software engineer who has experience in several popular and commercially successful programming languages and development tools. He has been writing content since last 5 years. He is a Senior Manager at Rude Labs Pvt. Ltd.