python - 如何在meteostat的函数Point(lat=float,lon=float)中使用填充有浮点数的列?Python
问题描述
我正在尝试使用Daily ( Point (lat,lon), start-date, end-date)构建数据框, meteostat 库的一个函数返回Point(lat,lon)指示的位置的所有每日天气统计数据使用纬度和经度,从开始日期到结束日期。
问题是(lat, lon)参数需要是浮点数,因此只指示一个位置。我想添加几个位置并收集每个位置的每日气象数据。
import meteostat
from datetime import datetime
from meteostat import Point, Daily
import matplotlib.pyplot as plt
from meteostat import Stations
import pandas as pd
import numpy
data = pd.read_csv(r'C:\Users\leoac\OneDrive\Desktop\Coding\Python apps\Correlation temp-goals in Serie A\seasons 09-19.csv', ";")
date_not_converted = data['Date']
date_being_converted = datetime.strptime(date_not_converted,'%d,%m,%Y') #1bis non può essere una serie...allora provo a cambiare il tipo di dati
date = date_being_converted.strftime('%Y,%m,%d')
#plot = Daily(Point(data['lat'][15],data['lon'][15]),d1,d2).fetch()
data['temp'] = Daily(Point(data['lat'][1],data['lon'][1]),datetime(date),datetime(date)).fetch() #1 sistemare il formato data
print(data['temp']) #2 trovare un modo per inserire i vettori date e lat/lon nel df
data['temp'].plot(y=['tavg'])
plt.show()
print(data)
解决方案
这是受此github 问题启发的解决方案。它对不同的位置发出并行请求,然后将结果合并到 pandas 数据框中。
from datetime import datetime
from meteostat import Point, Daily
from multiprocessing import cpu_count
from joblib import Parallel, delayed
import pandas as pd
def get_bulk_data(row):
location = Point(row.lat, row.lon)
data = Daily(location, row.Date, row.Date).fetch()
data["latitude"] = row.lat
data["longitude"] = row.lon
return data
if __name__ == "__main__":
df = pd.read_csv("seasons.csv", sep=";")
df["Date"] = pd.to_datetime(df["Date"], format="%d,%m,%Y")
executor = Parallel(n_jobs=cpu_count(), backend='multiprocessing')
tasks = (
delayed(get_bulk_data)(row)
for _, row in df.iterrows()
)
list_of_locations_data = executor(tasks)
data_full = pd.concat(list_of_locations_data)
print(data_full)
它适用于以下 csv 和日期格式,如果您的代码略有不同,您可以调整代码:
Date;lat;lon
18,02,1997;50.3;-4.7
12,07,1998;41.3;1.5
推荐阅读
- c++ - 使用 ESP8266 和 Blynk 应用程序进行实时步进电机控制
- ubuntu - 使用 ssh -t 可以通过 Jump Host 进行连接,但 ssh -W 不起作用
- python - 如何在 sudo 命令之后从 Python 转换输出
到 字符串? - regex - 正则表达式:可选组不起作用
- html - 如何组织在网格中?
- java - 如何编写由两个或多个单词组成的字符串?
- python - Python 3.x:确定缺失值的函数
- scala - Scala Double 确定性地从二进制文件中保存和读取
- java - 将大型 Java 应用从 MyBatis 迁移到 ORM
- android - 在Android中逗号后有4个数字的kotlin double