pv_forecasting/download.ipynb

370 KiB
Raw Permalink Blame History

In [3]:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()

options.headless = True

driver = webdriver.Chrome("/usr/bin/chromedriver", options=options)

driver.get("https://www.baidu.com/")
print(driver.title)
driver.quit()
百度一下,你就知道
In [3]:
import pygrib as pg
In [4]:
data = pg.open('./data/20230816/gfs.t18z.pgrb2.0p25.f001')
In [5]:
data.seek(0)
In [6]:
data.select(name="Downward short-wave radiation flux")
Out[6]:
[1:Downward short-wave radiation flux:W m**-2 (avg):regular_ll:surface:level 0:fcst time 0-1 hrs (avg):from 202308160000]
In [9]:
for grb in data:
    break
In [10]:
grb.latlons()[1]
Out[10]:
array([[0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,
        3.5975e+02],
       [0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,
        3.5975e+02],
       [0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,
        3.5975e+02],
       ...,
       [0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,
        3.5975e+02],
       [0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,
        3.5975e+02],
       [0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,
        3.5975e+02]])
In [11]:
lat = grb.latlons()[0][:, 0]
lon = grb.latlons()[1][0]
In [14]:
lon
Out[14]:
array([0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,
       3.5975e+02])
In [13]:
len(lat)
Out[13]:
721
In [ ]:
import pandas as pd
In [15]:
grb.values
Out[15]:
array([[18.56 , 15.12 , 13.168, ...,  0.   ,  0.   ,  0.   ],
       [17.664, 15.136, 14.656, ...,  0.   ,  0.   ,  0.   ],
       [17.904, 16.4  , 16.8  , ...,  0.   ,  0.   ,  0.   ],
       ...,
       [ 2.592,  2.816,  2.48 , ...,  0.   ,  0.   ,  0.   ],
       [ 3.408,  2.688,  2.816, ...,  0.   ,  0.   ,  0.   ],
       [ 6.816,  5.712,  2.768, ...,  0.   ,  0.   ,  0.   ]])
In [22]:
import matplotlib.pyplot as plt
In [23]:
plt.matshow(data.select(name="Downward short-wave radiation flux")[0].values)
Out[23]:
<matplotlib.image.AxesImage at 0x7faab5bb55e0>
No description has been provided for this image
In [24]:
import os
import urllib3
In [20]:
url = "https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/"
In [28]:
import requests
In [29]:
import datetime as dt
In [36]:
dt.datetime.strftime(dt.datetime.now() - dt.timedelta(days=1), "%Y%m%d")
Out[36]:
'20230815'
In [35]:
import numpy as np
from logzero import logger
import os
import pandas as pd
In [49]:
date = '20230816'
file_path = f"./data/{date}/"
files = [f"{file_path}/{x}" for x in os.listdir(file_path) if x.startswith('gfs')]
pred = list()
for file in files:
    data = pg.open(file)
    try:
        grb = data.select(name="Downward short-wave radiation flux")[0]
        values = grb.values
    except Exception as e:
        logger.info(f"error occurs when read {file}")
        values = np.full([721, 1440], np.nan)
        print(values)
    finally:
        pred.append(values)
rst = np.asarray(pred)
In [51]:
rst.shape
Out[51]:
(109, 721, 1440)
In [54]:
timeseries = pd.date_range('2023-08-15 18:00:00', '2023-08-20 17:00:00', freq='H')
In [55]:
len(timeseries)
Out[55]:
120
In [58]:
timeseries.values
Out[58]:
array(['2023-08-15T18:00:00.000000000', '2023-08-15T19:00:00.000000000',
       '2023-08-15T20:00:00.000000000', '2023-08-15T21:00:00.000000000',
       '2023-08-15T22:00:00.000000000', '2023-08-15T23:00:00.000000000',
       '2023-08-16T00:00:00.000000000', '2023-08-16T01:00:00.000000000',
       '2023-08-16T02:00:00.000000000', '2023-08-16T03:00:00.000000000',
       '2023-08-16T04:00:00.000000000', '2023-08-16T05:00:00.000000000',
       '2023-08-16T06:00:00.000000000', '2023-08-16T07:00:00.000000000',
       '2023-08-16T08:00:00.000000000', '2023-08-16T09:00:00.000000000',
       '2023-08-16T10:00:00.000000000', '2023-08-16T11:00:00.000000000',
       '2023-08-16T12:00:00.000000000', '2023-08-16T13:00:00.000000000',
       '2023-08-16T14:00:00.000000000', '2023-08-16T15:00:00.000000000',
       '2023-08-16T16:00:00.000000000', '2023-08-16T17:00:00.000000000',
       '2023-08-16T18:00:00.000000000', '2023-08-16T19:00:00.000000000',
       '2023-08-16T20:00:00.000000000', '2023-08-16T21:00:00.000000000',
       '2023-08-16T22:00:00.000000000', '2023-08-16T23:00:00.000000000',
       '2023-08-17T00:00:00.000000000', '2023-08-17T01:00:00.000000000',
       '2023-08-17T02:00:00.000000000', '2023-08-17T03:00:00.000000000',
       '2023-08-17T04:00:00.000000000', '2023-08-17T05:00:00.000000000',
       '2023-08-17T06:00:00.000000000', '2023-08-17T07:00:00.000000000',
       '2023-08-17T08:00:00.000000000', '2023-08-17T09:00:00.000000000',
       '2023-08-17T10:00:00.000000000', '2023-08-17T11:00:00.000000000',
       '2023-08-17T12:00:00.000000000', '2023-08-17T13:00:00.000000000',
       '2023-08-17T14:00:00.000000000', '2023-08-17T15:00:00.000000000',
       '2023-08-17T16:00:00.000000000', '2023-08-17T17:00:00.000000000',
       '2023-08-17T18:00:00.000000000', '2023-08-17T19:00:00.000000000',
       '2023-08-17T20:00:00.000000000', '2023-08-17T21:00:00.000000000',
       '2023-08-17T22:00:00.000000000', '2023-08-17T23:00:00.000000000',
       '2023-08-18T00:00:00.000000000', '2023-08-18T01:00:00.000000000',
       '2023-08-18T02:00:00.000000000', '2023-08-18T03:00:00.000000000',
       '2023-08-18T04:00:00.000000000', '2023-08-18T05:00:00.000000000',
       '2023-08-18T06:00:00.000000000', '2023-08-18T07:00:00.000000000',
       '2023-08-18T08:00:00.000000000', '2023-08-18T09:00:00.000000000',
       '2023-08-18T10:00:00.000000000', '2023-08-18T11:00:00.000000000',
       '2023-08-18T12:00:00.000000000', '2023-08-18T13:00:00.000000000',
       '2023-08-18T14:00:00.000000000', '2023-08-18T15:00:00.000000000',
       '2023-08-18T16:00:00.000000000', '2023-08-18T17:00:00.000000000',
       '2023-08-18T18:00:00.000000000', '2023-08-18T19:00:00.000000000',
       '2023-08-18T20:00:00.000000000', '2023-08-18T21:00:00.000000000',
       '2023-08-18T22:00:00.000000000', '2023-08-18T23:00:00.000000000',
       '2023-08-19T00:00:00.000000000', '2023-08-19T01:00:00.000000000',
       '2023-08-19T02:00:00.000000000', '2023-08-19T03:00:00.000000000',
       '2023-08-19T04:00:00.000000000', '2023-08-19T05:00:00.000000000',
       '2023-08-19T06:00:00.000000000', '2023-08-19T07:00:00.000000000',
       '2023-08-19T08:00:00.000000000', '2023-08-19T09:00:00.000000000',
       '2023-08-19T10:00:00.000000000', '2023-08-19T11:00:00.000000000',
       '2023-08-19T12:00:00.000000000', '2023-08-19T13:00:00.000000000',
       '2023-08-19T14:00:00.000000000', '2023-08-19T15:00:00.000000000',
       '2023-08-19T16:00:00.000000000', '2023-08-19T17:00:00.000000000',
       '2023-08-19T18:00:00.000000000', '2023-08-19T19:00:00.000000000',
       '2023-08-19T20:00:00.000000000', '2023-08-19T21:00:00.000000000',
       '2023-08-19T22:00:00.000000000', '2023-08-19T23:00:00.000000000',
       '2023-08-20T00:00:00.000000000', '2023-08-20T01:00:00.000000000',
       '2023-08-20T02:00:00.000000000', '2023-08-20T03:00:00.000000000',
       '2023-08-20T04:00:00.000000000', '2023-08-20T05:00:00.000000000',
       '2023-08-20T06:00:00.000000000', '2023-08-20T07:00:00.000000000',
       '2023-08-20T08:00:00.000000000', '2023-08-20T09:00:00.000000000',
       '2023-08-20T10:00:00.000000000', '2023-08-20T11:00:00.000000000',
       '2023-08-20T12:00:00.000000000', '2023-08-20T13:00:00.000000000',
       '2023-08-20T14:00:00.000000000', '2023-08-20T15:00:00.000000000',
       '2023-08-20T16:00:00.000000000', '2023-08-20T17:00:00.000000000'],
      dtype='datetime64[ns]')
In [42]:
import pandas as pd
In [43]:
data = pd.read_excel('./config/各市最佳倾角.xlsx')
In [44]:
data['省份'].ffill(inplace=True)
In [45]:
data.columns
Out[45]:
Index(['省份', '安装角度(°)', '峰值日照时数h/day', '每瓦首年发电量(kWh)/W', '年有效利用小时数(h)', '城市'], dtype='object')
In [46]:
new_dict = dict()
for i in range(data.shape[0]):
    prov = data.iloc[i]['省份']
    city = data.iloc[i]['城市']
    values= data.iloc[i][['安装角度(°)', '峰值日照时数h/day', '每瓦首年发电量(kWh)/W','年有效利用小时数(h)']].values.tolist()
    values = [float(x) for x in values]
    if prov not in new_dict:
        new_dict[prov] = {}
    new_dict[prov].update({city:values})
In [47]:
with open('./config/angle.json', 'w', encoding='utf-8') as fw:
    import json
    fw.write(json.dumps(new_dict))
In [48]:
list(new_dict.get('山东省').values())
Out[48]:
[[32.0, 4.27, 1.231, 1231.25],
 [30.0, 3.38, 0.975, 974.62],
 [35.0, 4.9, 1.413, 1412.92],
 [36.0, 4.98, 1.436, 1435.98],
 [35.0, 4.9, 1.413, 1412.92],
 [35.0, 4.94, 1.424, 1424.45],
 [32.0, 4.11, 1.349, 1185.12],
 [33.0, 4.94, 1.424, 1424.45],
 [32.0, 4.72, 1.361, 1361.01],
 [36.0, 4.93, 1.422, 1421.57],
 [33.0, 4.7, 1.355, 1355.25],
 [33.0, 4.77, 1.375, 1375.43],
 [35.0, 5.0, 1.442, 1441.75],
 [36.0, 4.93, 1.422, 1421.57],
 [37.0, 5.03, 1.45, 1450.4],
 [32.0, 4.72, 1.361, 1361.01]]
In [49]:
with open('./config/angle.json', 'r', encoding='utf-8') as fr:
    config = json.load(fr)
In [50]:
config
Out[50]:
{'北京市': {'北京市': [35.0, 4.21, 1.214, 1213.95]},
 '上海市': {'上海市': [25.0, 4.09, 1.179, 1179.35]},
 '天津市': {'天津市': [35.0, 4.57, 1.318, 1317.76]},
 '重庆市': {'重庆市': [8.0, 2.38, 0.686, 686.27]},
 '黑龙江省': {'哈尔滨市': [40.0, 4.3, 1.268, 1239.91],
  '齐齐哈尔市': [43.0, 4.81, 1.388, 1386.96],
  '牡丹江市': [40.0, 4.51, 1.301, 1300.46],
  '佳木斯市': [43.0, 4.3, 1.241, 1239.91],
  '鸡西市': [41.0, 4.53, 1.308, 1306.23],
  '鹤岗市': [43.0, 4.41, 1.272, 1271.62],
  '双鸭山市': [43.0, 4.41, 1.272, 1271.62],
  '黑河市': [46.0, 4.9, 1.415, 1412.92],
  '大庆市': [41.0, 4.61, 1.331, 1329.29],
  '大兴安岭地区': [49.0, 4.8, 1.384, 1384.08],
  '伊春市': [45.0, 4.73, 1.364, 1363.9],
  '七台河市': [42.0, 4.41, 1.272, 1271.62],
  '绥化市': [42.0, 4.52, 1.304, 1303.34]},
 '吉林省': {'长春市': [41.0, 4.74, 1.367, 1366.78],
  '延边朝鲜族自治州': [38.0, 4.27, 1.231, 1231.25],
  '白城市': [42.0, 4.74, 1.369, 1366.78],
  '松原市': [40.0, 4.63, 1.336, 1335.06],
  '吉林市': [41.0, 4.68, 1.351, 1349.48],
  '四平市': [40.0, 4.66, 1.344, 1343.71],
  '辽源市': [40.0, 4.7, 1.355, 1355.25],
  '通化市': [37.0, 4.45, 1.283, 1283.16],
  '白山市': [37.0, 4.31, 1.244, 1242.79]},
 '辽宁省': {'沈阳市': [36.0, 4.38, 1.264, 1262.97],
  '朝阳市': [37.0, 4.78, 1.378, 1378.31],
  '阜新市': [38.0, 4.64, 1.338, 1337.94],
  '铁岭市': [37.0, 4.4, 1.269, 1268.74],
  '抚顺市': [37.0, 4.41, 1.274, 1271.62],
  '本溪市': [36.0, 4.4, 1.271, 1268.74],
  '辽阳市': [36.0, 4.41, 1.272, 1271.62],
  '鞍山市': [35.0, 4.37, 1.262, 1260.09],
  '丹东市': [36.0, 4.41, 1.273, 1271.62],
  '大连市': [32.0, 4.3, 1.241, 1239.91],
  '营口市': [35.0, 4.4, 1.269, 1268.74],
  '盘锦市': [36.0, 4.36, 1.258, 1257.21],
  '锦州市': [37.0, 4.7, 1.358, 1355.25],
  '葫芦岛市': [36.0, 4.66, 1.344, 1343.71]},
 '河北省': {'石家庄市': [37.0, 5.03, 1.453, 1450.4],
  '保定市': [32.0, 4.1, 1.182, 1182.24],
  '承德市': [42.0, 5.46, 1.574, 1574.39],
  '唐山市': [36.0, 4.64, 1.338, 1337.94],
  '秦皇岛市': [38.0, 5.0, 1.442, 1441.75],
  '邯郸市': [36.0, 4.93, 1.422, 1421.57],
  '邢台市': [36.0, 4.93, 1.422, 1421.57],
  '张家口市': [38.0, 4.77, 1.375, 1375.43],
  '沧州市': [37.0, 5.07, 1.462, 1461.93],
  '廊坊市': [40.0, 5.17, 1.491, 1490.77],
  '衡水市': [36.0, 5.0, 1.442, 1441.75]},
 '山西省': {'太原市': [33.0, 4.65, 1.341, 1340.83],
  '大同市': [36.0, 5.11, 1.474, 1473.47],
  '朔州市': [36.0, 5.16, 1.489, 1487.89],
  '阳泉市': [33.0, 4.67, 1.348, 1346.59],
  '长治市': [28.0, 4.04, 1.165, 1164.93],
  '晋城市': [29.0, 4.28, 1.234, 1234.14],
  '忻州市': [34.0, 4.78, 1.378, 1378.31],
  '晋中市': [33.0, 4.65, 1.342, 1340.83],
  '临汾市': [30.0, 4.27, 1.231, 1231.25],
  '运城市': [26.0, 4.13, 1.193, 1190.89],
  '吕梁市': [32.0, 4.65, 1.341, 1340.83]},
 '内蒙古自治区': {'呼和浩特市': [35.0, 4.68, 1.349, 1349.48],
  '包头市': [41.0, 5.55, 1.6, 1600.34],
  '乌海市': [39.0, 5.51, 1.589, 1588.81],
  '赤峰市': [41.0, 5.35, 1.543, 1542.67],
  '通辽市': [44.0, 5.44, 1.569, 1568.62],
  '呼伦贝尔市': [47.0, 4.99, 1.439, 1438.87],
  '兴安盟': [46.0, 5.2, 1.499, 1499.42],
  '鄂尔多斯市': [40.0, 5.55, 1.6, 1600.34],
  '锡林郭勒盟': [43.0, 5.37, 1.548, 1548.44],
  '阿拉善盟': [36.0, 5.35, 1.543, 1542.67],
  '巴彦淖尔市': [41.0, 5.48, 1.58, 1580.16],
  '乌兰察布市': [40.0, 5.49, 1.574, 1583.04]},
 '河南省': {'郑州市': [29.0, 4.23, 1.22, 1219.72],
  '开封市': [32.0, 4.54, 1.309, 1309.11],
  '洛阳市': [31.0, 4.56, 1.315, 1314.88],
  '焦作市': [33.0, 4.68, 1.349, 1349.48],
  '平顶山市': [30.0, 4.28, 1.234, 1234.14],
  '鹤壁市': [33.0, 4.73, 1.364, 1363.9],
  '新乡市': [33.0, 4.68, 1.349, 1349.48],
  '安阳市': [30.0, 4.32, 1.246, 1245.67],
  '濮阳市': [33.0, 4.68, 1.349, 1349.48],
  '商丘市': [31.0, 4.56, 1.315, 1314.88],
  '许昌市': [30.0, 4.4, 1.269, 1268.74],
  '漯河市': [29.0, 4.16, 1.2, 1199.54],
  '信阳市': [27.0, 4.13, 1.191, 1190.89],
  '三门峡市': [31.0, 4.56, 1.315, 1314.88],
  '南阳市': [29.0, 4.16, 1.2, 1199.54],
  '周口市': [29.0, 4.16, 1.2, 1199.54],
  '驻马店市': [28.0, 4.34, 1.251, 1251.44],
  '济源市': [28.0, 4.1, 1.182, 1182.24]},
 '湖南省': {'长沙市': [20.0, 3.18, 0.917, 916.95],
  '张家界市': [23.0, 3.81, 1.099, 1098.61],
  '常德市': [20.0, 3.38, 0.975, 974.62],
  '益阳市': [16.0, 3.16, 0.912, 911.19],
  '岳阳市': [16.0, 3.22, 0.931, 928.49],
  '株洲市': [19.0, 3.46, 0.998, 997.69],
  '湘潭市': [16.0, 3.23, 0.933, 931.37],
  '衡阳市': [18.0, 3.39, 0.978, 977.51],
  '郴州市': [18.0, 3.46, 0.998, 997.69],
  '永州市': [15.0, 3.27, 0.944, 942.9],
  '邵阳市': [15.0, 3.25, 0.937, 937.14],
  '怀化市': [15.0, 2.96, 0.853, 853.52],
  '娄底市': [16.0, 3.19, 0.921, 919.84],
  '湘西土家族苗族自治州': [15.0, 2.83, 0.817, 816.03]},
 '湖北省': {'武汉市': [20.0, 3.17, 0.914, 914.07],
  '十堰市': [26.0, 3.87, 1.116, 1115.91],
  '襄阳市': [20.0, 3.52, 1.016, 1014.99],
  '荆门市': [20.0, 3.16, 0.913, 911.19],
  '孝感市': [20.0, 3.51, 1.012, 1012.11],
  '黄石市': [25.0, 3.89, 1.122, 1121.68],
  '咸宁市': [19.0, 3.37, 0.972, 971.74],
  '荆州市': [23.0, 3.75, 1.081, 1081.31],
  '宜昌市': [20.0, 3.44, 0.992, 991.92],
  '随州市': [22.0, 3.59, 1.036, 1035.18],
  '鄂州市': [21.0, 3.66, 1.057, 1055.36],
  '黄冈市': [21.0, 3.68, 1.063, 1061.13],
  '恩施土家族苗族自治州': [15.0, 2.73, 0.788, 787.2],
  '仙桃市': [17.0, 3.29, 0.949, 948.67],
  '天门市': [18.0, 3.15, 0.91, 908.3],
  '神农架林区': [21.0, 3.23, 0.934, 931.37],
  '潜江市': [27.0, 3.89, 1.122, 1121.68]},
 '四川省': {'成都市': [16.0, 2.76, 0.798, 795.85],
  '广元市': [19.0, 3.25, 0.937, 937.14],
  '绵阳市': [17.0, 2.82, 0.813, 813.15],
  '德阳市': [17.0, 2.79, 0.805, 804.5],
  '南充市': [14.0, 2.81, 0.81, 810.26],
  '广安市': [13.0, 2.77, 0.8, 798.73],
  '遂宁市': [11.0, 2.8, 0.808, 807.38],
  '内江市': [11.0, 2.59, 0.747, 746.83],
  '乐山市': [17.0, 2.77, 0.799, 798.73],
  '自贡市': [13.0, 2.62, 0.756, 755.48],
  '泸州市': [11.0, 2.6, 0.75, 749.71],
  '宜宾市': [12.0, 2.67, 0.771, 769.89],
  '攀枝花市': [27.0, 5.01, 1.445, 1444.63],
  '巴中市': [17.0, 2.94, 0.849, 847.75],
  '达州市': [14.0, 2.82, 0.814, 813.15],
  '资阳市': [15.0, 2.73, 0.789, 787.2],
  '眉山市': [16.0, 2.72, 0.786, 784.31],
  '雅安市': [16.0, 2.92, 0.842, 841.98],
  '甘孜藏族自治州': [30.0, 4.17, 1.203, 1202.42],
  '凉山彝族自治州': [25.0, 4.39, 1.266, 1265.86],
  '阿坝藏族羌族自治州': [35.0, 5.28, 1.523, 1522.49]},
 '云南省': {'昆明市': [25.0, 4.4, 1.271, 1268.74],
  '曲靖市': [25.0, 4.24, 1.224, 1222.6],
  '玉溪市': [24.0, 4.46, 1.288, 1286.04],
  '丽江市': [29.0, 5.18, 1.494, 1493.65],
  '普洱市': [21.0, 4.33, 1.25, 1248.56],
  '临沧市': [25.0, 4.63, 1.335, 1335.06],
  '德宏傣族景颇族自治州': [25.0, 4.74, 1.367, 1366.78],
  '怒江傈僳族自治州': [27.0, 4.68, 1.35, 1349.48],
  '迪庆藏族自治州': [28.0, 5.01, 1.446, 1444.63],
  '楚雄彝族自治州': [25.0, 4.49, 1.296, 1294.69],
  '昭通市': [22.0, 4.25, 1.225, 1225.49],
  '大理白族自治州': [27.0, 4.91, 1.416, 1415.8],
  '红河哈尼族彝族自治州': [23.0, 4.56, 1.314, 1314.88],
  '保山市': [29.0, 4.66, 1.344, 1343.71],
  '文山壮族苗族自治州': [22.0, 4.52, 1.303, 1303.34],
  '西双版纳傣族自治州': [20.0, 4.47, 1.291, 1288.92]},
 '贵州省': {'贵阳市': [15.0, 2.95, 0.852, 850.63],
  '六盘水市': [22.0, 3.84, 1.107, 1107.26],
  '遵义市': [13.0, 2.79, 0.805, 804.5],
  '安顺市': [13.0, 3.05, 0.879, 879.47],
  '毕节市': [21.0, 3.76, 1.086, 1084.2],
  '黔西南布依族苗族自治州': [20.0, 3.85, 1.111, 1110.15],
  '铜仁市': [15.0, 2.9, 0.836, 836.22]},
 '西藏自治区': {'拉萨市': [28.0, 6.4, 1.845, 1845.44],
  '阿里地区': [32.0, 6.59, 1.9, 1900.23],
  '昌都市': [32.0, 5.18, 1.494, 1493.65],
  '林芝市': [30.0, 5.33, 1.537, 1536.91],
  '日喀则市': [32.0, 6.61, 1.906, 1905.99],
  '山南市': [32.0, 6.13, 1.758, 1767.5],
  '那曲市': [35.0, 5.84, 1.648, 1683.96]},
 '新疆维吾尔自治区': {'乌鲁木齐市': [33.0, 4.22, 1.217, 1216.84],
  '昌吉回族自治州': [33.0, 4.22, 1.217, 1216.84],
  '克拉玛依市': [41.0, 4.87, 1.404, 1404.26],
  '吐鲁番市': [42.0, 5.55, 1.6, 1600.34],
  '哈密市': [40.0, 5.33, 1.537, 1536.91],
  '石河子市': [38.0, 5.12, 1.478, 1476.35],
  '伊犁哈萨克自治州': [40.0, 4.95, 1.427, 1427.33],
  '巴音郭楞蒙古自治州': [41.0, 5.42, 1.563, 1562.86],
  '和田地区': [35.0, 5.59, 1.612, 1611.88],
  '阿勒泰地区': [44.0, 5.17, 1.494, 1490.77],
  '塔城地区': [41.0, 4.88, 1.407, 1407.15],
  '阿克苏地区': [40.0, 5.35, 1.543, 1542.67],
  '博尔塔拉蒙古自治州': [40.0, 4.91, 1.416, 1415.8],
  '克孜勒苏柯尔克孜自治州': [40.0, 4.92, 1.419, 1418.68],
  '喀什地区': [40.0, 4.92, 1.419, 1418.68],
  '图木舒克市': [37.0, 5.0, 1.442, 1441.75],
  '阿拉尔市': [38.0, 4.92, 1.419, 1418.68],
  '五家渠市': [36.0, 4.65, 1.341, 1340.83]},
 '陕西省': {'西安市': [26.0, 3.57, 1.029, 1029.41],
  '宝鸡市': [30.0, 4.28, 1.234, 1234.14],
  '咸阳市': [26.0, 3.57, 1.029, 1029.41],
  '渭南市': [31.0, 4.45, 1.283, 1283.16],
  '铜川市': [33.0, 4.65, 1.341, 1340.83],
  '延安市': [35.0, 4.99, 1.439, 1438.87],
  '榆林市': [38.0, 5.4, 1.557, 1557.09],
  '汉中市': [29.0, 4.06, 1.171, 1170.7],
  '安康市': [26.0, 3.85, 1.11, 1110.15],
  '商洛市': [26.0, 3.57, 1.029, 1029.41]},
 '甘肃省': {'兰州市': [29.0, 4.21, 1.214, 1213.95],
  '酒泉市': [41.0, 5.54, 1.597, 1597.46],
  '嘉峪关市': [41.0, 5.54, 1.597, 1597.46],
  '张掖市': [42.0, 5.59, 1.612, 1611.88],
  '天水市': [32.0, 4.51, 1.3, 1300.46],
  '白银市': [38.0, 5.31, 1.531, 1531.14],
  '定西市': [38.0, 5.2, 1.499, 1499.42],
  '甘南藏族自治州': [32.0, 4.51, 1.3, 1300.46],
  '金昌市': [39.0, 5.6, 1.615, 1614.76],
  '临夏回族自治州': [38.0, 5.2, 1.499, 1499.42],
  '陇南市': [28.0, 4.51, 1.3, 1300.46],
  '平凉市': [34.0, 4.76, 1.373, 1372.55],
  '庆阳市': [34.0, 4.69, 1.352, 1352.36],
  '武威市': [40.0, 5.17, 1.491, 1490.77]},
 '宁夏回族自治区': {'银川市': [36.0, 5.06, 1.459, 1459.05],
  '石嘴山市': [39.0, 5.54, 1.597, 1597.46],
  '固原市': [34.0, 4.76, 1.373, 1372.55],
  '中卫市': [37.0, 5.39, 1.554, 1554.21],
  '吴忠市': [38.0, 5.3, 1.528, 1528.26]},
 '青海省': {'西宁市': [34.0, 4.7, 1.355, 1355.25],
  '果洛藏族自治州': [36.0, 5.19, 1.497, 1496.54],
  '海北藏族自治州': [34.0, 4.7, 1.355, 1355.25],
  '海东市': [34.0, 4.7, 1.355, 1355.25],
  '海南藏族自治州': [38.0, 5.88, 1.695, 1695.5],
  '海西蒙古族藏族自治州': [41.0, 5.65, 1.629, 1629.18],
  '黄南藏族自治州': [39.0, 5.81, 1.675, 1675.31],
  '玉树藏族自治州': [34.0, 5.37, 1.548, 1548.44]},
 '广东省': {'广州市': [20.0, 3.16, 0.91, 911.19],
  '清远市': [19.0, 3.43, 0.989, 989.04],
  '韶关市': [18.0, 3.67, 1.06, 1058.24],
  '河源市': [18.0, 3.66, 1.056, 1055.36],
  '梅州市': [20.0, 3.92, 1.132, 1130.33],
  '潮州市': [19.0, 4.0, 1.156, 1153.4],
  '汕头市': [19.0, 4.02, 1.16, 1159.17],
  '揭阳市': [18.0, 3.97, 1.147, 1144.75],
  '汕尾市': [17.0, 3.81, 1.1, 1098.61],
  '惠州市': [18.0, 3.74, 1.079, 1078.43],
  '东莞市': [17.0, 3.52, 1.017, 1014.99],
  '深圳市': [17.0, 3.78, 1.089, 1089.96],
  '珠海市': [17.0, 4.0, 1.153, 1153.4],
  '中山市': [17.0, 3.88, 1.118, 1118.8],
  '江门市': [17.0, 3.76, 1.084, 1084.2],
  '佛山市': [18.0, 3.43, 0.99, 989.04],
  '肇庆市': [18.0, 3.48, 1.003, 1003.46],
  '云浮市': [17.0, 3.53, 1.018, 1017.88],
  '阳江市': [16.0, 3.9, 1.127, 1124.57],
  '茂名市': [16.0, 3.84, 1.108, 1107.26],
  '湛江市': [14.0, 3.9, 1.125, 1124.57]},
 '广西壮族自治区': {'南宁市': [14.0, 3.62, 1.044, 1043.83],
  '桂林市': [17.0, 3.35, 0.967, 965.97],
  '百色市': [15.0, 3.79, 1.094, 1092.85],
  '玉林市': [16.0, 3.74, 1.079, 1078.43],
  '钦州市': [14.0, 3.67, 1.059, 1058.24],
  '北海市': [14.0, 3.76, 1.085, 1084.2],
  '梧州市': [16.0, 3.63, 1.046, 1046.71],
  '柳州市': [16.0, 3.46, 0.998, 997.69],
  '河池市': [14.0, 3.46, 0.998, 997.69],
  '防城港市': [14.0, 3.67, 1.059, 1058.24],
  '贺州市': [17.0, 3.54, 1.02, 1020.76],
  '来宾市': [14.0, 3.55, 1.024, 1023.64],
  '崇左市': [14.0, 3.74, 1.078, 1078.43],
  '贵港市': [15.0, 3.61, 1.042, 1040.94]},
 '海南省': {'海口市': [10.0, 4.33, 1.25, 1248.56],
  '三亚市': [15.0, 4.75, 1.371, 1369.66],
  '琼海市': [12.0, 4.71, 1.358, 1358.13],
  '白沙黎族自治县': [15.0, 4.76, 1.374, 1372.55],
  '保亭黎族苗族自治县': [15.0, 4.74, 1.368, 1366.78],
  '昌江黎族自治县': [13.0, 4.55, 1.314, 1311.99],
  '澄迈县': [13.0, 4.55, 1.313, 1311.99],
  '儋州市': [13.0, 4.48, 1.294, 1291.81],
  '定安县': [10.0, 4.32, 1.246, 1245.67],
  '东方市': [14.0, 4.84, 1.396, 1395.61],
  '乐东黎族自治县': [16.0, 4.77, 1.376, 1375.43],
  '临高县': [12.0, 4.51, 1.302, 1300.46],
  '陵水黎族自治县': [15.0, 4.74, 1.366, 1366.78],
  '琼中黎族苗族自治县': [13.0, 4.72, 1.362, 1361.01],
  '屯昌县': [13.0, 4.68, 1.351, 1349.48],
  '万宁市': [13.0, 4.67, 1.346, 1346.59],
  '文昌市': [10.0, 4.28, 1230.0, 1234.0],
  '五指山市': [15.0, 4.8, 1.387, 1384.08]},
 '江苏省': {'南京市': [23.0, 3.71, 1.07, 1069.78],
  '徐州市': [25.0, 3.95, 1.139, 1138.98],
  '连云港市': [26.0, 4.13, 1.19, 1190.89],
  '盐城市': [25.0, 3.98, 1.147, 1147.63],
  '泰州市': [23.0, 3.8, 1.097, 1095.73],
  '镇江市': [23.0, 3.68, 1.062, 1061.13],
  '南通市': [23.0, 3.92, 1.13, 1130.33],
  '常州市': [23.0, 3.73, 1.076, 1075.55],
  '无锡市': [23.0, 3.71, 1.07, 1069.78],
  '苏州市': [22.0, 3.68, 1.062, 1061.13],
  '淮安市': [25.0, 3.98, 1.148, 1147.63],
  '宿迁市': [25.0, 3.96, 1.141, 1141.87],
  '扬州市': [22.0, 3.69, 1.065, 1064.01]},
 '浙江省': {'杭州市': [20.0, 3.42, 0.988, 986.16],
  '绍兴市': [20.0, 3.56, 1.028, 1026.53],
  '宁波市': [20.0, 3.67, 1.057, 1058.24],
  '湖州市': [20.0, 3.7, 1.067, 1066.9],
  '嘉兴市': [20.0, 3.66, 1.057, 1055.36],
  '金华市': [20.0, 3.63, 1.047, 1046.71],
  '丽水市': [20.0, 3.77, 1.089, 1087.08],
  '温州市': [18.0, 3.77, 1.088, 1087.08],
  '台州市': [23.0, 3.8, 1.098, 1095.73],
  '舟山市': [20.0, 3.76, 1.085, 1084.2],
  '衢州市': [20.0, 3.69, 1.064, 1064.01]},
 '福建省': {'福州市': [17.0, 3.54, 1.021, 1020.76],
  '莆田市': [16.0, 3.59, 1.035, 1035.18],
  '南平市': [18.0, 4.17, 1.204, 1202.42],
  '厦门市': [17.0, 3.89, 1.121, 1121.68],
  '泉州市': [17.0, 3.92, 1.131, 1130.33],
  '漳州市': [18.0, 3.87, 1.116, 1115.91],
  '三明市': [18.0, 3.92, 1.132, 1130.33],
  '龙岩市': [20.0, 3.92, 1.13, 1130.33],
  '宁德市': [18.0, 3.62, 1.045, 1043.83]},
 '山东省': {'济南市': [32.0, 4.27, 1.231, 1231.25],
  '青岛市': [30.0, 3.38, 0.975, 974.62],
  '淄博市': [35.0, 4.9, 1.413, 1412.92],
  '东营市': [36.0, 4.98, 1.436, 1435.98],
  '潍坊市': [35.0, 4.9, 1.413, 1412.92],
  '烟台市': [35.0, 4.94, 1.424, 1424.45],
  '枣庄市': [32.0, 4.11, 1.349, 1185.12],
  '威海市': [33.0, 4.94, 1.424, 1424.45],
  '济宁市': [32.0, 4.72, 1.361, 1361.01],
  '泰安市': [36.0, 4.93, 1.422, 1421.57],
  '日照市': [33.0, 4.7, 1.355, 1355.25],
  '临沂市': [33.0, 4.77, 1.375, 1375.43],
  '德州市': [35.0, 5.0, 1.442, 1441.75],
  '聊城市': [36.0, 4.93, 1.422, 1421.57],
  '滨州市': [37.0, 5.03, 1.45, 1450.4],
  '菏泽市': [32.0, 4.72, 1.361, 1361.01]},
 '江西省': {'南昌市': [16.0, 3.59, 1.036, 1035.18],
  '九江市': [20.0, 3.56, 1.026, 1026.53],
  '景德镇市': [20.0, 3.63, 1.047, 1046.71],
  '上饶市': [20.0, 3.76, 1.084, 1084.2],
  '鹰潭市': [17.0, 3.68, 1.062, 1061.13],
  '宜春市': [15.0, 3.37, 0.973, 971.74],
  '萍乡市': [15.0, 3.33, 0.962, 960.21],
  '赣州市': [16.0, 3.67, 1.059, 1058.24],
  '吉安市': [16.0, 3.59, 1.037, 1035.18],
  '抚州市': [16.0, 3.64, 1.049, 1049.59],
  '新余市': [15.0, 3.55, 1.025, 1023.64]},
 '安徽省': {'合肥市': [27.0, 3.69, 1.064, 1064.01],
  '芜湖市': [26.0, 4.03, 1.162, 1162.05],
  '黄山市': [25.0, 3.84, 1.107, 1107.26],
  '安庆市': [25.0, 3.91, 1.127, 1127.45],
  '蚌埠市': [25.0, 3.92, 1.13, 1130.33],
  '亳州市': [23.0, 3.86, 1.115, 1113.03],
  '池州市': [22.0, 3.64, 1.048, 1049.59],
  '滁州市': [23.0, 3.66, 1.056, 1055.36],
  '阜阳市': [28.0, 4.21, 1.214, 1213.95],
  '淮北市': [30.0, 4.49, 1.295, 1294.69],
  '六安市': [23.0, 3.69, 1.065, 1064.01],
  '马鞍山市': [22.0, 3.68, 1.061, 1061.13],
  '宿州市': [30.0, 4.47, 1.289, 1288.92],
  '铜陵市': [22.0, 3.65, 1.054, 1052.48],
  '宣城市': [23.0, 3.65, 1.052, 1052.48],
  '淮南市': [28.0, 4.24, 1.223, 1222.6]},
 '香港特别行政区': {'香港特别行政区': [17.0, 3.78, 1.089, 1089.96]},
 '澳门特别行政区': {'澳门特别行政区': [17.0, 4.0, 1.153, 1153.4]},
 '台湾省': {'台北市': [24.0, 3.75, 1.081, 1081.31]}}
In [13]:
import numpy as np
In [14]:
230 * 0.2 * np.asarray( [201.2, 2001.5])
Out[14]:
array([ 9255.2, 92069. ])
In [1]:
import datetime as dt
In [2]:
start = dt.datetime(2023,8,11, 19) + dt.timedelta(hours=8)
end = dt.datetime(2023,8,21, 19) + dt.timedelta(hours=8)
In [4]:
import pandas as pd
In [8]:
pd.date_range(start+dt.timedelta(hours=8), end+dt.timedelta(hours=8), freq='H').astype(str).to_list()
Out[8]:
['2023-08-12 11:00:00',
 '2023-08-12 12:00:00',
 '2023-08-12 13:00:00',
 '2023-08-12 14:00:00',
 '2023-08-12 15:00:00',
 '2023-08-12 16:00:00',
 '2023-08-12 17:00:00',
 '2023-08-12 18:00:00',
 '2023-08-12 19:00:00',
 '2023-08-12 20:00:00',
 '2023-08-12 21:00:00',
 '2023-08-12 22:00:00',
 '2023-08-12 23:00:00',
 '2023-08-13 00:00:00',
 '2023-08-13 01:00:00',
 '2023-08-13 02:00:00',
 '2023-08-13 03:00:00',
 '2023-08-13 04:00:00',
 '2023-08-13 05:00:00',
 '2023-08-13 06:00:00',
 '2023-08-13 07:00:00',
 '2023-08-13 08:00:00',
 '2023-08-13 09:00:00',
 '2023-08-13 10:00:00',
 '2023-08-13 11:00:00',
 '2023-08-13 12:00:00',
 '2023-08-13 13:00:00',
 '2023-08-13 14:00:00',
 '2023-08-13 15:00:00',
 '2023-08-13 16:00:00',
 '2023-08-13 17:00:00',
 '2023-08-13 18:00:00',
 '2023-08-13 19:00:00',
 '2023-08-13 20:00:00',
 '2023-08-13 21:00:00',
 '2023-08-13 22:00:00',
 '2023-08-13 23:00:00',
 '2023-08-14 00:00:00',
 '2023-08-14 01:00:00',
 '2023-08-14 02:00:00',
 '2023-08-14 03:00:00',
 '2023-08-14 04:00:00',
 '2023-08-14 05:00:00',
 '2023-08-14 06:00:00',
 '2023-08-14 07:00:00',
 '2023-08-14 08:00:00',
 '2023-08-14 09:00:00',
 '2023-08-14 10:00:00',
 '2023-08-14 11:00:00',
 '2023-08-14 12:00:00',
 '2023-08-14 13:00:00',
 '2023-08-14 14:00:00',
 '2023-08-14 15:00:00',
 '2023-08-14 16:00:00',
 '2023-08-14 17:00:00',
 '2023-08-14 18:00:00',
 '2023-08-14 19:00:00',
 '2023-08-14 20:00:00',
 '2023-08-14 21:00:00',
 '2023-08-14 22:00:00',
 '2023-08-14 23:00:00',
 '2023-08-15 00:00:00',
 '2023-08-15 01:00:00',
 '2023-08-15 02:00:00',
 '2023-08-15 03:00:00',
 '2023-08-15 04:00:00',
 '2023-08-15 05:00:00',
 '2023-08-15 06:00:00',
 '2023-08-15 07:00:00',
 '2023-08-15 08:00:00',
 '2023-08-15 09:00:00',
 '2023-08-15 10:00:00',
 '2023-08-15 11:00:00',
 '2023-08-15 12:00:00',
 '2023-08-15 13:00:00',
 '2023-08-15 14:00:00',
 '2023-08-15 15:00:00',
 '2023-08-15 16:00:00',
 '2023-08-15 17:00:00',
 '2023-08-15 18:00:00',
 '2023-08-15 19:00:00',
 '2023-08-15 20:00:00',
 '2023-08-15 21:00:00',
 '2023-08-15 22:00:00',
 '2023-08-15 23:00:00',
 '2023-08-16 00:00:00',
 '2023-08-16 01:00:00',
 '2023-08-16 02:00:00',
 '2023-08-16 03:00:00',
 '2023-08-16 04:00:00',
 '2023-08-16 05:00:00',
 '2023-08-16 06:00:00',
 '2023-08-16 07:00:00',
 '2023-08-16 08:00:00',
 '2023-08-16 09:00:00',
 '2023-08-16 10:00:00',
 '2023-08-16 11:00:00',
 '2023-08-16 12:00:00',
 '2023-08-16 13:00:00',
 '2023-08-16 14:00:00',
 '2023-08-16 15:00:00',
 '2023-08-16 16:00:00',
 '2023-08-16 17:00:00',
 '2023-08-16 18:00:00',
 '2023-08-16 19:00:00',
 '2023-08-16 20:00:00',
 '2023-08-16 21:00:00',
 '2023-08-16 22:00:00',
 '2023-08-16 23:00:00',
 '2023-08-17 00:00:00',
 '2023-08-17 01:00:00',
 '2023-08-17 02:00:00',
 '2023-08-17 03:00:00',
 '2023-08-17 04:00:00',
 '2023-08-17 05:00:00',
 '2023-08-17 06:00:00',
 '2023-08-17 07:00:00',
 '2023-08-17 08:00:00',
 '2023-08-17 09:00:00',
 '2023-08-17 10:00:00',
 '2023-08-17 11:00:00',
 '2023-08-17 12:00:00',
 '2023-08-17 13:00:00',
 '2023-08-17 14:00:00',
 '2023-08-17 15:00:00',
 '2023-08-17 16:00:00',
 '2023-08-17 17:00:00',
 '2023-08-17 18:00:00',
 '2023-08-17 19:00:00',
 '2023-08-17 20:00:00',
 '2023-08-17 21:00:00',
 '2023-08-17 22:00:00',
 '2023-08-17 23:00:00',
 '2023-08-18 00:00:00',
 '2023-08-18 01:00:00',
 '2023-08-18 02:00:00',
 '2023-08-18 03:00:00',
 '2023-08-18 04:00:00',
 '2023-08-18 05:00:00',
 '2023-08-18 06:00:00',
 '2023-08-18 07:00:00',
 '2023-08-18 08:00:00',
 '2023-08-18 09:00:00',
 '2023-08-18 10:00:00',
 '2023-08-18 11:00:00',
 '2023-08-18 12:00:00',
 '2023-08-18 13:00:00',
 '2023-08-18 14:00:00',
 '2023-08-18 15:00:00',
 '2023-08-18 16:00:00',
 '2023-08-18 17:00:00',
 '2023-08-18 18:00:00',
 '2023-08-18 19:00:00',
 '2023-08-18 20:00:00',
 '2023-08-18 21:00:00',
 '2023-08-18 22:00:00',
 '2023-08-18 23:00:00',
 '2023-08-19 00:00:00',
 '2023-08-19 01:00:00',
 '2023-08-19 02:00:00',
 '2023-08-19 03:00:00',
 '2023-08-19 04:00:00',
 '2023-08-19 05:00:00',
 '2023-08-19 06:00:00',
 '2023-08-19 07:00:00',
 '2023-08-19 08:00:00',
 '2023-08-19 09:00:00',
 '2023-08-19 10:00:00',
 '2023-08-19 11:00:00',
 '2023-08-19 12:00:00',
 '2023-08-19 13:00:00',
 '2023-08-19 14:00:00',
 '2023-08-19 15:00:00',
 '2023-08-19 16:00:00',
 '2023-08-19 17:00:00',
 '2023-08-19 18:00:00',
 '2023-08-19 19:00:00',
 '2023-08-19 20:00:00',
 '2023-08-19 21:00:00',
 '2023-08-19 22:00:00',
 '2023-08-19 23:00:00',
 '2023-08-20 00:00:00',
 '2023-08-20 01:00:00',
 '2023-08-20 02:00:00',
 '2023-08-20 03:00:00',
 '2023-08-20 04:00:00',
 '2023-08-20 05:00:00',
 '2023-08-20 06:00:00',
 '2023-08-20 07:00:00',
 '2023-08-20 08:00:00',
 '2023-08-20 09:00:00',
 '2023-08-20 10:00:00',
 '2023-08-20 11:00:00',
 '2023-08-20 12:00:00',
 '2023-08-20 13:00:00',
 '2023-08-20 14:00:00',
 '2023-08-20 15:00:00',
 '2023-08-20 16:00:00',
 '2023-08-20 17:00:00',
 '2023-08-20 18:00:00',
 '2023-08-20 19:00:00',
 '2023-08-20 20:00:00',
 '2023-08-20 21:00:00',
 '2023-08-20 22:00:00',
 '2023-08-20 23:00:00',
 '2023-08-21 00:00:00',
 '2023-08-21 01:00:00',
 '2023-08-21 02:00:00',
 '2023-08-21 03:00:00',
 '2023-08-21 04:00:00',
 '2023-08-21 05:00:00',
 '2023-08-21 06:00:00',
 '2023-08-21 07:00:00',
 '2023-08-21 08:00:00',
 '2023-08-21 09:00:00',
 '2023-08-21 10:00:00',
 '2023-08-21 11:00:00',
 '2023-08-21 12:00:00',
 '2023-08-21 13:00:00',
 '2023-08-21 14:00:00',
 '2023-08-21 15:00:00',
 '2023-08-21 16:00:00',
 '2023-08-21 17:00:00',
 '2023-08-21 18:00:00',
 '2023-08-21 19:00:00',
 '2023-08-21 20:00:00',
 '2023-08-21 21:00:00',
 '2023-08-21 22:00:00',
 '2023-08-21 23:00:00',
 '2023-08-22 00:00:00',
 '2023-08-22 01:00:00',
 '2023-08-22 02:00:00',
 '2023-08-22 03:00:00',
 '2023-08-22 04:00:00',
 '2023-08-22 05:00:00',
 '2023-08-22 06:00:00',
 '2023-08-22 07:00:00',
 '2023-08-22 08:00:00',
 '2023-08-22 09:00:00',
 '2023-08-22 10:00:00',
 '2023-08-22 11:00:00']
In [10]:
import pygrib as pg
In [13]:
data = pg.open('./data/20230822/gfs.t18z.pgrb2.0p25.f001')
In [12]:
data.close()
In [16]:
data.seek(0)
In [1]:
import pandas as pd
import numpy as np
In [4]:
pd.DataFrame(np.random.rand(721, 1440)).to_csv('./data/test.csv', index=False, encoding='utf-8-sig')
In [23]:
tmp = np.random.rand(120, 721, 1440)
In [19]:
len(np.arange(-90, 90.1, 0.25))
Out[19]:
721
In [21]:
np.arange(0, 360, step=0.25)
Out[21]:
array([0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,
       3.5975e+02])
In [22]:
len(np.arange(0, 360, step=0.25))
Out[22]:
1440
In [31]:
sum(np.arange(90, -90.1, -0.25) == lat) == 721
Out[31]:
True
In [34]:
sum(np.arange(0, 360, step=0.25) == lon) == 1440 
Out[34]:
True
In [35]:
721 * 1440 * 120
Out[35]:
124588800
In [1]:
import jieba
In [5]:
jieba.lcut("阿勒泰地区", cut_all=True)
Out[5]:
['阿勒', '阿勒泰', '阿勒泰地区', '地区']
In [6]:
import pandas as pd
In [30]:
angle = pd.read_excel('./config/各市最佳倾角.xlsx')
city = pd.read_excel('city.xlsx', header=None)
In [31]:
city.columns = ['prov', 'city']
In [32]:
angle = angle.ffill()
In [38]:
def check_name(x, y):
    for c in y:
        if x in c:
            return c
        
In [34]:
prov_list = city.prov.unique().tolist()
In [35]:
prov_list
Out[35]:
['河北省',
 '山西省',
 '内蒙古自治区',
 '辽宁省',
 '吉林省',
 '黑龙江省',
 '江苏省',
 '浙江省',
 '安徽省',
 '福建省',
 '江西省',
 '山东省',
 '河南省',
 '湖北省',
 '湖南省',
 '广东省',
 '广西壮族自治区',
 '海南省',
 '四川省',
 '贵州省',
 '云南省',
 '西藏自治区',
 '陕西省',
 '甘肃省',
 '青海省',
 '宁夏回族自治区',
 '新疆维吾尔自治区']
In [36]:
angle['省份'] = angle['省份'].apply(lambda x: check_name(x, prov_list))
In [37]:
angle
Out[37]:
省份 城市 安装角度(°) 峰值日照时数h/day 每瓦首年发电量(kWh)/W 年有效利用小时数(h)
0 北京市 北京市 35 4.21 1.214 1213.95
1 上海市 上海市 25 4.09 1.179 1179.35
2 天津市 天津市 35 4.57 1.318 1317.76
3 重庆市 重庆市 8 2.38 0.686 686.27
4 黑龙江省 哈尔滨 40 4.30 1.268 1239.91
... ... ... ... ... ... ...
356 安徽省 宣城 23 3.65 1.052 1052.48
357 安徽省 淮南 28 4.24 1.223 1222.60
358 香港特别行政区 香港特别行政区 17 3.78 1.089 1089.96
359 澳门特别行政区 澳门特别行政区 17 4.00 1.153 1153.40
360 台湾省 台北市 24 3.75 1.081 1081.31

361 rows × 6 columns

In [39]:
angle['地级行政区'] = angle.apply(lambda x: check_name(x['城市'], city[city.prov==x['省份']].city.values.tolist()), axis=1)
In [41]:
angle.to_excel('./各市最佳倾角.xlsx', index=False)
In [ ]: