Чтение значений из 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-минутное руководство по началу работы, которое охватывает многие из распространенных вариантов использования, включая примеры, очень похожие на этот.
Тем не менее, у вас есть большинство компонентов, которые вам нужны в коде, который вы дали выше. Вот две проблемы, которые я вижу:
Если вы посмотрите на типы данных DataFrame (
df_raw.dtypes
в приведенном выше коде) вы увидите, что ваш столбец Latlng на самом деле все еще является строкой, в то время как Pandas уже помог вам преобразовать столбцы широты и долготы в числа с плавающей точкой Это должно сказать вам, что может быть легче работать с этими двумя, так как они будут непосредственно использоваться для позиционирования вашего маркера.Вы, вероятно, захотите немного настроить свою карту - значения по умолчанию, которые вы взяли из примера кода, создают карту местности с центром где-то в Орегоне. Учитывая, что вы строите недвижимость в Торонто, ни один из этих вариантов не выглядит хорошим. Я обычно люблю центрировать свою карту в средней точке моих данных.
Простой пример того, как все работает, может выглядеть так:
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