def prec_chart(data, units): """"Gets the precipitation chart data.""" # Get the data. prec_data1, prec_data2 = datasets.split_list(datasets.get_column(data, 3)) prec_split = datasets.split_list2(datasets.get_column(data, 3)) prec_data1 = datasets.none_to_zero(prec_data1) prec_data1 = datasets.convert_float(prec_data1) prec_low = min(prec_data1) prec_high = max(prec_data1) prec_avg = calculations.mean(prec_data1) prec_median = calculations.median(prec_data1) # Calculate and add the data. data2 = [] for i in range(0, len(data)): prec = [data[i][0], "%.2f %s" % (prec_data1[i], units["prec"])] if prec_avg == prec_data1[i]: average = "Average Value" else: average = prec_avg - prec_data1[i] average = "%.2f %s %s" % (abs(average), units["prec"], "above" if prec_avg < prec_data1[i] else "below") prec.append(average) if prec_low == prec_data1[i]: low = "Lowest Value" else: low = prec_low - prec_data1[i] low = "%.2f %s %s" % (abs(low), units["prec"], "above" if prec_low < prec_data1[i] else "below") prec.append(low) if prec_high == prec_data1[i]: high = "Highest Value" else: high = prec_high - prec_data1[i] high = "%.2f %s %s" % (abs(high), units["prec"], "above" if prec_high < prec_data1[i] else "below") prec.append(high) if prec_median == prec_data1[i]: median = "Median Value" else: median = prec_median - prec_data1[i] median = "%.2f %s %s" % (abs(median), units["prec"], "above" if prec_median < prec_data1[i] else "below") prec.append(median) data2.append(prec) return data2
def prec_info(data, units): """"Gets the precipitation info.""" # Get the data. num_days = len(data) prec_data1, prec_data2 = datasets.split_list(datasets.get_column(data, 3)) prec_split = datasets.split_list2(datasets.get_column(data, 3)) prec_data1 = datasets.none_to_zero(prec_data1) prec_data1 = datasets.convert_float(prec_data1) try: prec_low = min(prec_data1) prec_high = max(prec_data1) prec_avg = calculations.mean(prec_data1) prec_median = calculations.median(prec_data1) prec_range = calculations.range(prec_data1) except ZeroDivisionError: prec_low = "None" prec_high = "None" prec_avg = "None" prec_median = "None" prec_range = "None" prec_total = 0 prec_total_rain = 0 prec_total_snow = 0 prec_total_hail = 0 prec_total_sleet = 0 prec_none = 0 prec_rain = 0 prec_snow = 0 prec_hail = 0 prec_sleet = 0 for i in prec_split: if i[1] != "None": prec_total += float(i[0]) if i[1] == "None": prec_none += 1 elif i[1] == "Rain": prec_total_rain += float(i[0]) prec_rain += 1 elif i[1] == "Snow": prec_total_snow += float(i[0]) prec_snow += 1 elif i[1] == "Hail": prec_total_hail += float(i[0]) prec_hail += 1 elif i[1] == "Sleet": prec_total_sleet += float(i[0]) prec_sleet += 1 prec_mode, prec_mode_count = calculations.mode(prec_data2) if prec_total == 0: prec_per_rain = "0%" prec_per_snow = "0%" prec_per_hail = "0%" prec_per_sleet = "0%" else: prec_per_rain = "%.2f%%" % ((prec_total_rain / prec_total) * 100) prec_per_snow = "%.2f%%" % ((prec_total_snow / prec_total) * 100) prec_per_hail = "%.2f%%" % ((prec_total_hail / prec_total) * 100) prec_per_sleet = "%.2f%%" % ((prec_total_sleet / prec_total) * 100) # Change any values, if needed. prec_low = "None" if prec_low == "None" else ("%.2f %s" % (prec_low, units["prec"])) prec_high = "None" if prec_high == "None" else ("%.2f %s" % (prec_high, units["prec"])) prec_avg = "None" if prec_avg == "None" else ("%.2f %s" % (prec_avg, units["prec"])) prec_median = "None" if prec_median == "None" else ( "%.2f %s" % (prec_median, units["prec"])) prec_range = "None" if prec_range == "None" else ( "%.2f %s" % (prec_range, units["prec"])) # Create the data list. data2 = [ ["Lowest precipitation", prec_low], ["Highest precipitation", prec_high], ["Average precipitation", prec_avg], ["Median precipitation", prec_median], ["Range of precipitation", prec_range], ["Total precipitation", "%.2f %s" % (prec_total, units["prec"])], [ "Total rain", "%.2f %s (%s)" % (prec_total_rain, units["prec"], prec_per_rain) ], [ "Total snow", "%.2f %s (%s)" % (prec_total_snow, units["prec"], prec_per_snow) ], [ "Total hail", "%.2f %s (%s)" % (prec_total_hail, units["prec"], prec_per_hail) ], [ "Total sleet", "%.2f %s (%s)" % (prec_total_sleet, units["prec"], prec_per_sleet) ], [ "Days with no precipitation", "%d day%s (%.2f%%)" % (prec_none, "" if prec_none == 1 else "s", (prec_none / num_days) * 100) ], [ "Days with rain", "%d day%s (%.2f%%)" % (prec_rain, "" if prec_rain == 1 else "s", (prec_rain / num_days) * 100) ], [ "Days with snow", "%d day%s (%.2f%%)" % (prec_snow, "" if prec_snow == 1 else "s", (prec_snow / num_days) * 100) ], [ "Days with hail", "%d day%s (%.2f%%)" % (prec_hail, "" if prec_hail == 1 else "s", (prec_hail / num_days) * 100) ], [ "Days with sleet", "%d day%s (%.2f%%)" % (prec_sleet, "" if prec_sleet == 1 else "s", (prec_sleet / num_days) * 100) ], [ "Most common precipitation type", "%s (%d occurrences)" % (prec_mode if prec_mode != "" else "None", prec_mode_count) ] ] return data2
def prec_info(data, units): """"Gets the precipitation info.""" # Get the data. num_days = len(data) prec_data1, prec_data2 = datasets.split_list(datasets.get_column(data, 3)) prec_split = datasets.split_list2(datasets.get_column(data, 3)) prec_data1 = datasets.none_to_zero(prec_data1) prec_data1 = datasets.convert_float(prec_data1) try: prec_low = min(prec_data1) prec_high = max(prec_data1) prec_avg = calculations.mean(prec_data1) prec_median = calculations.median(prec_data1) prec_range = calculations.range(prec_data1) except: prec_low = "None" prec_high = "None" prec_avg = "None" prec_median = "None" prec_range = "None" prec_total = 0 prec_total_rain = 0 prec_total_snow = 0 prec_total_hail = 0 prec_total_sleet = 0 prec_none = 0 prec_rain = 0 prec_snow = 0 prec_hail = 0 prec_sleet = 0 for i in prec_split: if i[1] != "None": prec_total += float(i[0]) if i[1] == "None": prec_none += 1 elif i[1] == "Rain": prec_total_rain += float(i[0]) prec_rain += 1 elif i[1] == "Snow": prec_total_snow += float(i[0]) prec_snow += 1 elif i[1] == "Hail": prec_total_hail += float(i[0]) prec_hail += 1 elif i[1] == "Sleet": prec_total_sleet += float(i[0]) prec_sleet += 1 prec_mode, prec_mode_count = calculations.mode(prec_data2) if prec_total == 0: prec_per_rain = "0%" prec_per_snow = "0%" prec_per_hail = "0%" prec_per_sleet = "0%" else: prec_per_rain = "%.2f%%" % ((prec_total_rain / prec_total) * 100) prec_per_snow = "%.2f%%" % ((prec_total_snow / prec_total) * 100) prec_per_hail = "%.2f%%" % ((prec_total_hail / prec_total) * 100) prec_per_sleet = "%.2f%%" % ((prec_total_sleet / prec_total) * 100) # Change any values, if needed. prec_low = "None" if prec_low == "None" else ("%.2f %s" % (prec_low, units["prec"])) prec_high = "None" if prec_high == "None" else ("%.2f %s" % (prec_high, units["prec"])) prec_avg = "None" if prec_avg == "None" else ("%.2f %s" % (prec_avg, units["prec"])) prec_median = "None" if prec_median == "None" else ("%.2f %s" % (prec_median, units["prec"])) prec_range = "None" if prec_range == "None" else ("%.2f %s" % (prec_range, units["prec"])) # Create the data list. data2 = [ ["Lowest precipitation", prec_low], ["Highest precipitation", prec_high], ["Average precipitation", prec_avg], ["Median precipitation", prec_median], ["Range of precipitation", prec_range], ["Total precipitation", "%.2f %s" % (prec_total, units["prec"])], ["Total rain", "%.2f %s (%s)" % (prec_total_rain, units["prec"], prec_per_rain)], ["Total snow", "%.2f %s (%s)" % (prec_total_snow, units["prec"], prec_per_snow)], ["Total hail", "%.2f %s (%s)" % (prec_total_hail, units["prec"], prec_per_hail)], ["Total sleet", "%.2f %s (%s)" % (prec_total_sleet, units["prec"], prec_per_sleet)], ["Days with no precipitation", "%d day%s (%.2f%%)" % (prec_none, "" if prec_none == 1 else "s", (prec_none / num_days) * 100)], ["Days with rain", "%d day%s (%.2f%%)" % (prec_rain, "" if prec_rain == 1 else "s", (prec_rain / num_days) * 100)], ["Days with snow", "%d day%s (%.2f%%)" % (prec_snow, "" if prec_snow == 1 else "s", (prec_snow / num_days) * 100)], ["Days with hail", "%d day%s (%.2f%%)" % (prec_hail, "" if prec_hail == 1 else "s", (prec_hail / num_days) * 100)], ["Days with sleet", "%d day%s (%.2f%%)" % (prec_sleet, "" if prec_sleet == 1 else "s", (prec_sleet / num_days) * 100)], ["Most common precipitation type", "%s (%d occurrences)" % (prec_mode if prec_mode != "" else "None", prec_mode_count)] ] return data2
def get_data(data): """Gets the graph data.""" # Get the date data. date_data = datasets.get_column(data, 0) new_dates = get_dates(date_data) # Get the data. temp_data = datasets.convert_float(datasets.get_column(data, 1)) chil_data = datasets.convert_float(datasets.get_column(data, 2)) prec_data1, prec_data2 = datasets.split_list(datasets.get_column(data, 3)) prec_data = datasets.convert_float(datasets.none_to_zero(prec_data1)) wind_data1, wind_data2 = datasets.split_list(datasets.get_column(data, 4)) wind_data = datasets.convert_float(datasets.none_to_zero(wind_data1)) humi_data = datasets.convert_float(datasets.get_column(data, 5)) airp_data1, airp_data2 = datasets.split_list(datasets.get_column(data, 6)) airp_data = datasets.convert_float(airp_data1) visi_data = datasets.convert_float(datasets.get_column(data, 7)) clou_data1, clou_data2 = datasets.split_list3(datasets.get_column(data, 8)) clou_data2 = datasets.strip_items(clou_data2, ["(", ")"]) prec_split = datasets.split_list2(datasets.get_column(data, 3)) prec_total = 0 prec_total_rain = 0 prec_total_snow = 0 prec_total_hail = 0 prec_total_sleet = 0 prec_none = 0 prec_rain = 0 prec_snow = 0 prec_hail = 0 prec_sleet = 0 for i in prec_split: if i[1] != "None": prec_total += float(i[0]) if i[1] == "None": prec_none += 1 elif i[1] == "Rain": prec_total_rain += float(i[0]) prec_rain += 1 elif i[1] == "Snow": prec_total_snow += float(i[0]) prec_snow += 1 elif i[1] == "Hail": prec_total_hail += float(i[0]) prec_hail += 1 elif i[1] == "Sleet": prec_total_sleet += float(i[0]) prec_sleet += 1 prec_amount = [prec_total_rain, prec_total_snow, prec_total_hail, prec_total_sleet] prec_days = [prec_none, prec_rain, prec_snow, prec_hail, prec_sleet] airp_steady = 0 airp_rising = 0 airp_falling = 0 for i in airp_data2: if i == "Steady": airp_steady += 1 elif i == "Rising": airp_rising += 1 elif i == "Falling": airp_falling += 1 airp_change = [airp_steady, airp_rising, airp_falling] clou_sunny = 0 clou_msunny = 0 clou_pcloudy = 0 clou_mcloudy = 0 clou_cloudy = 0 for i in clou_data1: if i == "Sunny": clou_sunny += 1 elif i == "Mostly Sunny": clou_msunny += 1 elif i == "Partly Cloudy": clou_pcloudy += 1 elif i == "Mostly Cloudy": clou_mcloudy += 1 elif i == "Cloudy": clou_cloudy += 1 clou_days = [clou_sunny, clou_msunny, clou_pcloudy, clou_mcloudy, clou_cloudy] clou_types = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for i in clou_data2: if i == "None": clou_types[0] += 1 elif i == "Unknown": clou_types[1] += 1 elif i == "Cirrus": clou_types[2] += 1 elif i == "Cirrocumulus": clou_types[3] += 1 elif i == "Cirrostratus": clou_types[4] += 1 elif i == "Cumulonimbus": clou_types[5] += 1 elif i == "Altocumulus": clou_types[6] += 1 elif i == "Altostratus": clou_types[7] += 1 elif i == "Stratus": clou_types[8] += 1 elif i == "Cumulus": clou_types[9] += 1 elif i == "Stratocumulus": clou_types[10] += 1 data = [date_data, new_dates, temp_data, prec_data, wind_data, humi_data, airp_data, prec_amount, prec_days, airp_change, clou_days, clou_types, chil_data, visi_data] return data
def get_data(data): """Gets the graph data.""" # Get the date data. date_data = datasets.get_column(data, 0) new_dates = dates.get_datetimes(date_data) # Get the data. temp_data = datasets.convert_float(datasets.get_column(data, 1)) chil_data = datasets.convert_float(datasets.get_column(data, 2)) prec_data1, prec_data2 = datasets.split_list(datasets.get_column(data, 3)) prec_data = datasets.convert_float(datasets.none_to_zero(prec_data1)) wind_data1, wind_data2 = datasets.split_list(datasets.get_column(data, 4)) wind_data = datasets.convert_float(datasets.none_to_zero(wind_data1)) humi_data = datasets.convert_float(datasets.get_column(data, 5)) airp_data1, airp_data2 = datasets.split_list(datasets.get_column(data, 6)) airp_data = datasets.convert_float(airp_data1) visi_data = datasets.convert_float(datasets.get_column(data, 7)) clou_data1, clou_data2 = datasets.split_list3(datasets.get_column(data, 8)) clou_data2 = datasets.strip_items(clou_data2, ["(", ")"]) prec_split = datasets.split_list2(datasets.get_column(data, 3)) prec_total = 0 prec_total_rain = 0 prec_total_snow = 0 prec_total_hail = 0 prec_total_sleet = 0 prec_none = 0 prec_rain = 0 prec_snow = 0 prec_hail = 0 prec_sleet = 0 for i in prec_split: if i[1] != "None": prec_total += float(i[0]) if i[1] == "None": prec_none += 1 elif i[1] == "Rain": prec_total_rain += float(i[0]) prec_rain += 1 elif i[1] == "Snow": prec_total_snow += float(i[0]) prec_snow += 1 elif i[1] == "Hail": prec_total_hail += float(i[0]) prec_hail += 1 elif i[1] == "Sleet": prec_total_sleet += float(i[0]) prec_sleet += 1 prec_amount = [ prec_total_rain, prec_total_snow, prec_total_hail, prec_total_sleet ] prec_days = [prec_none, prec_rain, prec_snow, prec_hail, prec_sleet] airp_steady = 0 airp_rising = 0 airp_falling = 0 for i in airp_data2: if i == "Steady": airp_steady += 1 elif i == "Rising": airp_rising += 1 elif i == "Falling": airp_falling += 1 airp_change = [airp_steady, airp_rising, airp_falling] clou_sunny = 0 clou_msunny = 0 clou_pcloudy = 0 clou_mcloudy = 0 clou_cloudy = 0 for i in clou_data1: if i == "Sunny": clou_sunny += 1 elif i == "Mostly Sunny": clou_msunny += 1 elif i == "Partly Cloudy": clou_pcloudy += 1 elif i == "Mostly Cloudy": clou_mcloudy += 1 elif i == "Cloudy": clou_cloudy += 1 clou_days = [ clou_sunny, clou_msunny, clou_pcloudy, clou_mcloudy, clou_cloudy ] clou_types = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for i in clou_data2: if i == "None": clou_types[0] += 1 elif i == "Unknown": clou_types[1] += 1 elif i == "Cirrus": clou_types[2] += 1 elif i == "Cirrocumulus": clou_types[3] += 1 elif i == "Cirrostratus": clou_types[4] += 1 elif i == "Cumulonimbus": clou_types[5] += 1 elif i == "Altocumulus": clou_types[6] += 1 elif i == "Altostratus": clou_types[7] += 1 elif i == "Stratus": clou_types[8] += 1 elif i == "Cumulus": clou_types[9] += 1 elif i == "Stratocumulus": clou_types[10] += 1 data = { "date_labels": date_data, "date_ticks": new_dates, "temp_data": temp_data, "prec_data": prec_data, "wind_data": wind_data, "humi_data": humi_data, "airp_data": airp_data, "prec_amount": prec_amount, "prec_days": prec_days, "airp_change": airp_change, "clou_days": clou_days, "clou_types": clou_types, "chil_data": chil_data, "visi_data": visi_data } return data