사용 제한된 파이썬 경험). 제 3 자 API (wundergorund)에서 역사적인 날씨 데이터를 다운로드하는 애플리케이션을 작성 중입니다. 문제는 주어진 시간대에 가치가없는 경우입니다 (예 : 오전 5시에 20도, 오전 6시에 값 없음, 오전 7시에 21도). 주어진 시간에 정확하게 하나의 온도 값을 가져야하므로, 필자가 가지고있는 데이터에 적합하고 실종 된 점 (SciPy의 polyfit 사용)을 평가할 수 있다고 생각했습니다. 모든 것이 멋지지만 목록에 시간이 없는지 감지하기 위해 프로그램을 처리하는 데 문제가 있습니다. 그렇다면 누락 된 시간을 삽입하고 온도 값을 계산하십시오. 나는이 만드는 희망 의미 ..채우기 누락 된 값은
는 시간과 온도 목록을 처리하려고 시도한 다음입니다 :
from scipy import polyfit
# Evaluate simple cuadratic function
def tempcal (array,x):
return array[0]*x**2 + array[1]*x + array[2]
# Sample data, note it has missing hours.
# My final hrs list should look like range(25), with matching temperatures at every point
hrs = [1,2,3,6,9,11,13,14,15,18,19,20]
temps = [14.0,14.5,14.5,15.4,17.8,21.3,23.5,24.5,25.5,23.4,21.3,19.8]
# Fit coefficients
coefs = polyfit(hrs,temps,2)
# Cycle control
i = 0
done = False
while not done:
# It has missing hour, insert it and calculate a temperature
if hrs[i] != i:
hrs.insert(i,i)
temps.insert(i,tempcal(coefs,i))
# We are done, leave now
if i == 24:
done = True
i += 1
이 프로그램은 결국 액세스 인덱스에 노력할 것입니다 작동하지 않는 이유를 볼 수 있습니다 hrs 목록의 범위. 또한 루프 내에서리스트의 길이를 수정하는 것은 조심스럽게 이루어져야한다는 것을 알고 있습니다. 분명히 충분히 조심스럽지 않거나 단순한 해결책을 모두 간과하고 있습니다.
내 자신을 돕기위한 인터넷 검색 시도에서 나는 판다 (도서관)를 발견했지만 그 문제없이이 문제를 해결할 수 있다고 느낀다.
모든 입력 사항에 크게 감사드립니다. 고마워.
'weather_dict = {1 : 14.0,2 : 14.5,3 : 14.5,4 : None, etc.}'목록 대신'dictionary'를 사용해야합니다. 'dict'을 모든 임의의 값으로 초기화 한 다음 가지고있는 데이터를 채울 수 있습니다. – IanAuld
감사합니다, 그것을 줄 것이다! – cilop