日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

pandas溫差查詢案例的實(shí)現(xiàn)_python

作者:mighty13 ? 更新時(shí)間: 2022-08-10 編程語言

任務(wù)詳情

給定一各地 2016 年 1 月和 2 月各個時(shí)間點(diǎn)的溫度表格,表格預(yù)覽見頁面下方。
數(shù)據(jù)表的第二列表示當(dāng)前時(shí)間,數(shù)據(jù)表第一行第三列到第一行最后一列表示地點(diǎn)。
如:表格的第二行第三列 30.36 表示:Vancouver (溫哥華)在 2016-01-01 00:00:00 這一時(shí)刻的溫度是 30.36 度(華氏度)。
程序給定一個日期(date)和一個地點(diǎn)(place),要求返回該地在這個日期下的溫差(攝氏度)。
注意:華氏度需要轉(zhuǎn)換成攝氏度!
華氏度轉(zhuǎn)攝氏度公式:攝氏度 = (華氏度 - 32) * 5 / 9
溫差:某日最高溫度 - 某日最低溫度

任務(wù)要求

程序給定日期 date 和地點(diǎn) place 的數(shù)據(jù)類型均是 str 類型;
程序返回結(jié)果的數(shù)據(jù)類型是 float 類型,如果最終結(jié)果是 numpy.float64 數(shù)據(jù)類型,請手動轉(zhuǎn)換成 Python 原生的 float 數(shù)據(jù)類型;
結(jié)果需要四舍五入保留小數(shù)點(diǎn)后 2 位,請?jiān)诘玫阶罱K結(jié)果后處理小數(shù)問題,否則可能導(dǎo)致結(jié)果有偏差。

測試用例

輸入:date = ‘2月5日’,place = ‘Dallas’
輸出:-5.05
解釋:查詢表格可知,Dallas 在 2月 5 日溫度的最高值和最低值分別是 57.09 華氏度和 34.18 華氏度,
兩者的溫差是 22.91 華氏度,轉(zhuǎn)換為攝氏度:(22.91 - 32) * 5 / 9 = -5.05

輸入:date= ‘2月18日’,place = ‘Houston’
輸出:-1.78
解釋:查詢表格可知,Dallas 在 2月 5 日溫度的最高值和最低值分別是 75.7 華氏度和 46.9 華氏度,
兩者的溫差是 28.8 華氏度,轉(zhuǎn)換為攝氏度:(28.8 - 32) * 5 / 9 = -1.7777…. ≈ 1.78

輸入:date = ‘1月21日’,place = 'Las Vegas’
輸出:-1.99

任務(wù)實(shí)現(xiàn)

import pandas
class Solution:
? ? def temperature(self, date: str, place: str) -> float:
? ? ? ? # 將查詢?nèi)掌谵D(zhuǎn)換為日期字符串
? ? ? ? month, day_ = date.split("月")
? ? ? ? day, _ = day_.split("日")
? ? ? ? if len(month) == 1:
? ? ? ? ? ? month = "0" + month
? ? ? ? if len(day) == 1:
? ? ? ? ? ? day = "0" + day
? ? ? ? date_str = "2016" + "-" + month + "-" + day
? ? ? ? # 讀取數(shù)據(jù)
? ? ? ? url = "http://ws1.itmc.org.cn:80/JS00101/data/user/4799/208/fj_4097_temperature_2016_1_2.csv"
? ? ? ? temperature_data = pandas.read_csv(url, sep=",")
? ? ? ? # 獲取數(shù)據(jù)的日期字符串
? ? ? ? temperature_data["day"] = temperature_data["datetime"].str[:10]
? ? ? ? # 根據(jù)日期字符串選擇指定日期數(shù)據(jù)行
? ? ? ? day = temperature_data[temperature_data["day"] == date_str]
? ? ? ? # 根據(jù)地點(diǎn)選擇選擇溫度數(shù)據(jù)行
? ? ? ? city = day[place]
? ? ? ? # 溫度單位轉(zhuǎn)換
? ? ? ? temperature = (city.max() - city.min() - 32) * 5 / 9
? ? ? ? # 溫度精度處理
? ? ? ? return float(temperature.round(2))

print(Solution.temperature(Solution, date="2月5日", place="Dallas"))
print(Solution.temperature(Solution, date="2月18日", place="Houston"))
print(Solution.temperature(Solution, date="1月21日", place="Las Vegas"))

輸出為:

-5.05
-1.78
-1.99

原文鏈接:https://blog.csdn.net/mighty13/article/details/121265399

欄目分類
最近更新