2017-10-23 11 views
0

私は何か誤りがあると言ってもプログラミングをしないので、私に許してください。私は現在、フォリアを使って地図に火山をプロットする小さなプロジェクトに取り組んでいます。私が使用しているデータセットはここにあります:https://www.ngdc.noaa.gov/nndc/struts/form?t=102557&s=50&d=50これを私のプログラムに読み込むためのCSVファイルとして保存しました。フォルニウムNaNエラー - Python

私は私のプログラムを実行すると、私は次のエラーを取得しています:

...line 31, in <module> 
folium.Marker(location=[lat, lon], popup=name, icon=folium.Icon(color=colour(elev), icon='cloud')).add_to(map)... 
ValueError: Location values cannot contain NaNs, got: 
[nan, nan] 

プログラムはライン31上の数字として[緯度、経度]の値を読んでいませんので、私は右のこの思考にあるのですか?私は当初16行目にもこのエラーが出ていましたが、問題を修正したように見える[lat、lon]に変更しましたが、です最初はそれらの平均です。いずれにしても、問題を引き起こしているものは混乱しています。どんな助けも大いにありがとう!次のように

私のコードは次のとおりです。

import pandas as pd 
import folium 

df = pd.read_csv('data.csv') 

latmean = df['Latitude'].mean() 
lonmean = df['Longitude'].mean() 

map = folium.Map(location=[latmean, lonmean], zoom_start=7, tiles='Stamen 
Terrain') 

def colour(elev): 
    if elev in range (0, 1000): 
     col = 'blue' 
    elif elev in range (1001, 1999): 
     col = 'green' 
    elif elev in range (2000, 2999): 
     col = 'orange' 
    else: 
     col = 'red' 
    return col 

for lat, lon, name, elev in zip(df['Latitude'], df['Longitude'], df['Name'], 
df['Elevation']): 
    folium.Marker(location=[lat, lon], popup=name, icon=folium.Icon(color=colour(elev), icon='cloud')).add_to(map) 

print(map.save('test.html')) 

答えて

0

あなたが正しいです。 Latとlonは数値以外の値を返すか、「Not a numbers」(NaN)を返します。 .mean()は数式を実行する型強制を実行しているため、Latmeanとlonmeanは機能します。

あなたが反復する前に、あなたのデータフレームの各オブジェクトにpd.to_numeric()を呼び出すことによって、型変換を実行することができます。

df['Latitude'] = pd.to_numeric(df['Latitude'])

http://pandas.pydata.org/pandas-docs/version/0.20/generated/pandas.to_numeric.html

+0

入力していただきありがとうございますが、問題が解決していないようです。私はまだその厄介なValueErrorを取得しています –

0

を緯度と経度のいくつかは、あなたからの座標と思われますデータがnumpy.nan値を返しています。 try-exceptを実装して、Marker()の位置引数にどの値が渡されているかを確認することで、これを回避できます。

関連する問題