Use Python and SQLAlchemy to do basic climate analysis and data exploration of climate database. All of the following analysis should be completed using SQLAlchemy ORM queries, Pandas, and Matplotlib.
-
Use hawaii.sqlite to complete climate analysis and data exploration.
-
Choose a start date and end date for your trip. Make sure that your vacation range is approximately 3-15 days total.
-
Use SQLAlchemy
create_engineto connect to your sqlite database. -
Use SQLAlchemy
automap_base()to reflect your tables into classes and save a reference to those classes calledStationandMeasurement.
-
Design a query to retrieve the last 12 months of precipitation data.
-
Select only the
dateandprcpvalues. -
Load the query results into a Pandas DataFrame and set the index to the date column.
-
Sort the DataFrame values by
date. -
Plot the results using the DataFrame
plotmethod. -
Use Pandas to print the summary statistics for the precipitation data.
-
Design a query to calculate the total number of stations.
-
Design a query to find the most active stations.
-
List the stations and observation counts in descending order.
-
Which station has the highest number of observations?
-
Hint: You may need to use functions such as
func.min,func.max,func.avg, andfunc.countin your queries.
-
-
Design a query to retrieve the last 12 months of temperature observation data (tobs).
Now that you have completed your initial analysis, design a Flask API based on the queries that you have just developed.
- Use FLASK to create your routes.
-
/-
Home page.
-
List all routes that are available.
-
-
/api/v1.0/precipitation-
Convert the query results to a Dictionary using
dateas the key andprcpas the value. -
Return the JSON representation of your dictionary.
-
-
/api/v1.0/stations- Return a JSON list of stations from the dataset.
-
/api/v1.0/tobs- query for the dates and temperature observations from a year from the last data point.
- Return a JSON list of Temperature Observations (tobs) for the previous year.
-
/api/v1.0/<start>and/api/v1.0/<start>/<end>-
Return a JSON list of the minimum temperature, the average temperature, and the max temperature for a given start or start-end range.
-
When given the start only, calculate
TMIN,TAVG, andTMAXfor all dates greater than and equal to the start date. -
When given the start and the end date, calculate the
TMIN,TAVG, andTMAXfor dates between the start and end date inclusive.
-
-
You will need to join the station and measurement tables for some of the analysis queries.
-
Use Flask
jsonifyto convert your API data into a valid JSON response object.
- The following are optional challenge queries. These are highly recommended to attempt, but not required for the homework.
-
Use the
calc_tempsfunction to calculate the min, avg, and max temperatures for your trip using the matching dates from the previous year (i.e., use "2017-01-01" if your trip start date was "2018-01-01"). -
Plot the min, avg, and max temperature from your previous query as a bar chart.
-
Calculate the rainfall per weather station using the previous year's matching dates.
-
Calculate the daily normals. Normals are the averages for the min, avg, and max temperatures.
-
You are provided with a function called
daily_normalsthat will calculate the daily normals for a specific date. This date string will be in the format%m-%d. Be sure to use all historic tobs that match that date string. -
Create a list of dates for your trip in the format
%m-%d. Use thedaily_normalsfunction to calculate the normals for each date string and append the results to a list. -
Load the list of daily normals into a Pandas DataFrame and set the index equal to the date.
-
Use Pandas to plot an area plot (
stacked=False) for the daily normals.




