从csv读取值,然后使用python将它们放入一个字符串中

时间:2018-01-10 00:04:10

标签: python pandas google-maps csv folium

我有一张包含多伦多房地产信息的电子表格 - 其中包括该地区公寓的纬度和经度。实际上,它甚至还有一个带有lat和amp的列。长期合并。我想做的是将这些坐标放在地图上,可能是用叶片(但我可以选择其他方法)。据我所知,folium使用以下格式:

map_1 = folium.Map(location=[45.372, -121.6972],
                  zoom_start=12,
                  tiles='Stamen Terrain')
folium.Marker([45.3288, -121.6625], popup='Mt. Hood Meadows').add_to(map_1)
folium.Marker([45.3311, -121.7113], popup='Timberline Lodge').add_to(map_1)
map_1

据我所知,我需要做两件事:

1)使用以下内容生成足够数量的行:folium.Marker([x,y])。add_to(map_1)

2)使用电子表格中的纬度/经度值

填写x和y

到目前为止,我已经能够从csv中拉入lat / long列,但就我而言:

import pandas as pd
import folium

df_raw = pd.read_excel('df_condo_v9_t1.xlsx', sheetname=0, header=0)

df_raw.shape

df_raw.dtypes

df_lat = df_raw['Latlng']

df_lat.head()

如果您真的需要查看csv,请访问:https://github.com/vshideler/toronto-condos

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果您将来更多地使用此类数据,我强烈建议您通读pandas documentation。这包括10 minute "getting started" guide,涵盖了许多常见用例,包括与此非常类似的示例。

话虽如此,您在上面提供的代码中拥有了大部分组件。我看到的两个问题如下:

  1. 如果您查看DataFrame的数据类型(上面代码中的df_raw.dtypes),您会发现 Latlng 列实际上仍然存在一个字符串,而Pandas已经帮助您将 Latitude Longitude 列转换为浮点数。这应该告诉你,使用这两个可能更容易,因为它们可以直接用于定位你的标记。

  2. 您可能希望稍微配置您的地图 - 您从示例代码中获取的默认值会创建一个位于俄勒冈州某处的地形图。鉴于您正在多伦多绘制房产 - 这些都不是好的选择。我通常喜欢将我的地图置于数据的平均点。

  3. 让事情有效的一个简单例子如下:

    import pandas as pd
    import folium
    
    df = pd.read_csv("df_condo_v9_t1.csv")
    
    map_center = [df["Latitude"].mean(), df["Longitude"].mean()]
    map_1 = folium.Map(location=map_center, zoom_start=16)
    
    for i, row in df[["Latitude", "Longitude"]].dropna().iterrows():
        position = (row["Latitude"], row["Longitude"])
        folium.Marker(position).add_to(map_1)
    
    map_1