Чтение значений из CSV, а затем положить их в строку с помощью Python

У меня есть таблица с информацией о недвижимости в Торонто, которая включает широту и долготу квартир в этом районе. На самом деле, у него даже есть колонка с широтой и долготой вместе. То, что я хотел бы сделать, это поместить эти координаты на карту, возможно, с фолием (но я открыт для альтернатив). Из того, что я могу сказать, 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 значениями lat/long из электронной таблицы

До сих пор я был в состоянии извлечь столбец lat/long из CSV, но это насколько я получил:

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 ответ

Решение

Если вы собираетесь работать с такими данными в будущем, я настоятельно рекомендую вам ознакомиться с документацией к pandas. Это включает в себя 10-минутное руководство по началу работы, которое охватывает многие из распространенных вариантов использования, включая примеры, очень похожие на этот.

Тем не менее, у вас есть большинство компонентов, которые вам нужны в коде, который вы дали выше. Вот две проблемы, которые я вижу:

  1. Если вы посмотрите на типы данных DataFrame (df_raw.dtypes в приведенном выше коде) вы увидите, что ваш столбец Latlng на самом деле все еще является строкой, в то время как Pandas уже помог вам преобразовать столбцы широты и долготы в числа с плавающей точкой Это должно сказать вам, что может быть легче работать с этими двумя, так как они будут непосредственно использоваться для позиционирования вашего маркера.

  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
Другие вопросы по тегам