【问题标题】:Reading values from a csv, then putting them in a string using python从 csv 读取值,然后使用 python 将它们放入字符串中
【发布时间】:2018-01-10 00:04:09
【问题描述】:

我有一个包含多伦多房地产信息的电子表格 - 其中包括该地区公寓的纬度和经度。事实上,它甚至还有一个包含 lat & long 组合的列。我想做的是将这些坐标放在地图上,可能是用folium(但我愿意接受其他选择)。据我所知,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

任何建议将不胜感激!

【问题讨论】:

  • 所以你问了??
  • 显然问题是“我该怎么做?”

标签: python pandas google-maps csv folium


【解决方案1】:

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

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

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

  2. 您可能需要稍微配置一下地图 - 您从示例代码中获取的默认设置会创建一个以俄勒冈州某处为中心的地形图。鉴于您正在多伦多规划房产 - 这些似乎都不是好的选择。我通常喜欢将地图集中在数据的平均点。

一个简单的例子可以如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 2021-06-16
    • 2015-06-25
    相关资源
    最近更新 更多