2024-10-06, 22:19-今日內容

Geopy 可以吧地理的string 帮助我们coding到coordinate。 非常方便, 他是一个python的library Gpd的linestring是很多个point 组成的, 他的value都存在一个cell里面,我们如果想要访问他, 必须要用list… 如果要链接两个df, 那么join会自己首先看看两个df的index是不是匹配。 所以最好是吧index设置成那个ID比较好。 我们… 连接两个df, 如果是同样的column, 那么我们用concat 就可以直接把row链接在一起。 Pd要给index重新命名,reindexed = reviews.rename_axis(‘wines’, axis=’rows… 对于df 分组之后, 其实这个group返回的是很多的df。 所以他的儿子不是每一行或者每一个column。 所以我们的groupby… 在pd 里面,apply是更复杂的存在。 和map相比。apply可以series 也可以对df 进行操作。 Pd里面找出最大value所在的index, 那么就要用idxmax。 然后我们抽取这个index所在的row。 一个例子: 如果有的csv 自己就偷偷的指定了第一个column时index, 那么我们可以让pd 直接让他作为index。,具体的是set_index… choropleth 的map只接受geojson的数据, 所以我需要把gpd的数据, 调取他的__geo_interface__… Choropleth 是一种地图的样式, 可以用不同的颜色来画出某个区域的某个数据的分布数量。 Folium的heatmap会帮我们画出想要的x 和y 的coor的数据的row出现的频率, 因为一个row就代表一个incident… Folium 如果想要画出一个地区的数据的发案时间,按照颜色分类,这叫做bubble map: Folium的非常重要的概念是child。 map是一个容器, 可以有很多的child。 也就是marker, layer, markercluster… Folium 有插件可以用,叫做marker cluster。 这样我们就可以把某个组的可视化的marker集中起来。 Pd的df ,可以对他进行iter, 可以返回index和row的Series。 我们可以抽取每个数据的某个column的数据,… Python 的range (9, 18) 是从早上9点到晚上的5点 Df 的dropna 可以只选择一些column来drop他们的row Folium 里的zoom如果数字越大,证明我们离的越近, 相当于鼠标的缩放越高, 看的越清楚小东西 m_1 = folium.Map… Folium 用来创建可以交互的map。可以直接给他coordiantes的位置, 然后save 到一个html就可以在网页上查看… Gpd的point 的dtype也是geometry, 那么他就有x和y的属性, 那么women就可以筛选不同的经度纬度了。 维度… Point () —> Linestring() Shapely 里面的linestring可以把点连成线段。 一个例子: birds.groupby(‘tag-local-identifier… Pd的高级索引, 我们在处理的时候, 可以设置多级别的索引, 写在最前面的最先索引。 依次排开。 如果是datemtime的index, 那么我们通过这个时间索引, 抽取他的一些hour, month , qurter 等等的信息…

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Geopy 可以吧地理的string 帮助我们coding到coordinate。 非常方便, 他是一个python的library

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Gpd的linestring是很多个point 组成的, 他的value都存在一个cell里面,我们如果想要访问他, 必须要用list… Gpd的linestring是很多个point 组成的, 他的value都存在一个cell里面,我们如果想要访问他, 必须要用list 来显示,或者我们for迭代也可以。 for coord in plate_boundaries[‘geometry’].iloc[0].coords : print(coord)

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

如果要链接两个df, 那么join会自己首先看看两个df的index是不是匹配。 所以最好是吧index设置成那个ID比较好。 我们… 如果要链接两个df, 那么join会自己首先看看两个df的index是不是匹配。 所以最好是吧index设置成那个ID比较好。 我们可以用set_index()来做: powerlifting_combined = powerlifting_meets.set_index(“MeetID”).join(powerlifting_competitors.set_index(“MeetID”))

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

连接两个df, 如果是同样的column, 那么我们用concat 就可以直接把row链接在一起。 combined_products = pd.concat([gaming_products, movie_products])

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Pd要给index重新命名,reindexed = reviews.rename_axis(‘wines’, axis=’rows… Pd要给index重新命名,reindexed = reviews.rename_axis(‘wines’, axis=’rows’) 应该这么写, 但是不能写成reviews.index = ‘wines’ # 试图将 ‘wines’ 赋值给所有索引值,这是不允许的

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

对于df 分组之后, 其实这个group返回的是很多的df。 所以他的儿子不是每一行或者每一个column。 所以我们的groupby… 对于df 分组之后, 其实这个group返回的是很多的df。 所以他的儿子不是每一行或者每一个column。 所以我们的groupby 之后如果 想要apply, 不需要直行column 或者row, 因为他们apply的应该是每个df , 而不是下一个层级的row 或者column

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

在pd 里面,apply是更复杂的存在。 和map相比。apply可以series 也可以对df 进行操作。 def stars(row): if row.country == ‘Canada’: return 3 elif row.points >= 95: return 3 elif row.points >= 85: return 2 else: return 1

star_ratings = reviews.apply(stars, axis=’columns’)

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Pd里面找出最大value所在的index, 那么就要用idxmax。 然后我们抽取这个index所在的row。 一个例子: Solution: 溶液: bargain_idx = (reviews.points / reviews.price).idxmax() bargain_wine = reviews.loc[bargain_idx, ‘title’]

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

如果有的csv 自己就偷偷的指定了第一个column时index, 那么我们可以让pd 直接让他作为index。,具体的是set_index… 如果有的csv 自己就偷偷的指定了第一个column时index, 那么我们可以让pd 直接让他作为index。,具体的是set_index=0 . 这0就是这个column所在的位置

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

choropleth 的map只接受geojson的数据, 所以我需要把gpd的数据, 调取他的__geo_interface__… choropleth 的map只接受geojson的数据, 所以我需要把gpd的数据, 调取他的__geo_interface__ 来转化远门的geometry的数据到geo interface的数据

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Choropleth 是一种地图的样式, 可以用不同的颜色来画出某个区域的某个数据的分布数量。

Create a base map

m_6 = folium.Map(location=[42.32,-71.0589], tiles=’cartodbpositron’, zoom_start=12)

Add a choropleth map to the base map

Choropleth(geo_data=districts.geo_interface, data=plot_dict, key_on=”feature.id”, fill_color=’YlGnBu’, legend_name=’Major criminal incidents (Jan-Aug 2018)’ ).add_to(m_6)

Display the map

m_6

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Folium的heatmap会帮我们画出想要的x 和y 的coor的数据的row出现的频率, 因为一个row就代表一个incident… Folium的heatmap会帮我们画出想要的x 和y 的coor的数据的row出现的频率, 因为一个row就代表一个incident。

heatmap

m_5 = folium.Map(location=[42.32, -71.0589], tiles=”cartodbpositron”, zoom_start=13)

HeatMap(data=daytime_robberies[[“Lat”, “Long”]], radius=10).add_to(m_5)

save

m_5.save(“m_5.html”) 

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Folium 如果想要画出一个地区的数据的发案时间,按照颜色分类,这叫做bubble map:

bubble map

m_4 = folium.Map(location=[42.32, -71.0589], tiles=”cartodbpositron”, zoom_start=13)

def color_producer(val): if val <= 12: return “forestgreen” else: return “darkred”

Add a bubble map to the base map

for i in range(0, len(daytime_robberies)): Circle( location=[daytime_robberies.iloc[i][“Lat”], daytime_robberies.iloc[i][“Long”]], radius=20, color=color_producer(daytime_robberies.iloc[i][“HOUR”]), ).add_to(m_4) m_4.save(“m_4.html”) 效果是这样的: 

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Folium的非常重要的概念是child。 map是一个容器, 可以有很多的child。 也就是marker, layer, markercluster… Folium的非常重要的概念是child。 map是一个容器, 可以有很多的child。 也就是marker, layer, markercluster(mc)

marker cluster

m_3 = folium.Map(location=[42.32, -71.0589], zoom_start=13) mc = MarkerCluster()

for idx, row in daytime_robberies.iterrows(): mc.add_child(Marker([row[“Lat”], row[“Long”]]))

m_3.add_child(mc) m_3.save(“m_3.html”)

我们要把这些child 加入map, 就需要addchild。 即使我们定义了marker, 但是不加入mc, 他依然不会显示在地图上。 Map ├── MarkerCluster │ ├── Marker (child 1) │ ├── Marker (child 2) │ └── Marker (child 3) └── Other Map Elements (e.g., tile layers, controls, etc.)

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Folium 有插件可以用,叫做marker cluster。 这样我们就可以把某个组的可视化的marker集中起来。

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Pd的df ,可以对他进行iter, 可以返回index和row的Series。 我们可以抽取每个数据的某个column的数据,… Pd的df ,可以对他进行iter, 可以返回index和row的Series。 我们可以抽取每个数据的某个column的数据, 然后对他采取进一步的数据。 这样就可以画出folium的数据。

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Python 的range (9, 18) 是从早上9点到晚上的5点

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Df 的dropna 可以只选择一些column来drop他们的row crimes.dropna(subset=[‘Lat’, ‘Long’, ‘DISTRICT’], inplace=True)

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Folium 里的zoom如果数字越大,证明我们离的越近, 相当于鼠标的缩放越高, 看的越清楚小东西 m_1 = folium.Map… Folium 里的zoom如果数字越大,证明我们离的越近, 相当于鼠标的缩放越高, 看的越清楚小东西 m_1 = folium.Map(location=[45.521238, -73.653719], zoom_start=15)

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Folium 用来创建可以交互的map。可以直接给他coordiantes的位置, 然后save 到一个html就可以在网页上查看… Folium 用来创建可以交互的map。可以直接给他coordiantes的位置, 然后save 到一个html就可以在网页上查看了。 import folium from folium import Choropleth, Circle, Marker from folium.plugins import HeatMap, MarkerCluster import pandas as pd import matplotlib.pyplot as plt

#montreal m_1 = folium.Map(location=[45.5017, -73.5673], zoom_start=12)

m_1.save(“m_1.html”)

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Gpd的point 的dtype也是geometry, 那么他就有x和y的属性, 那么women就可以筛选不同的经度纬度了。 维度… Gpd的point 的dtype也是geometry, 那么他就有x和y的属性, 那么women就可以筛选不同的经度纬度了。 维度就是y。 经度就是x。 这个例子就是筛选赤道以南, 也就是y小于0 的数据了。 ax = south_america.plot(figsize=(10,10), color=’white’, edgecolor=’gray’) protected_areas[protected_areas[‘MARINE’]!=’2’].plot(ax=ax, alpha=0.4, zorder=1) birds[birds.geometry.y < 0].plot(ax=ax, color=’red’, alpha=0.6, markersize=10, zorder=2) plt.show()

birds.head() birds.geometry

在地理坐标系中:

Latitude (纬度) 指示某地点相对于赤道的南北位置。纬度值范围从 -90°(南极)到 +90°(北极)。北半球为正值,南半球为负值。

Longitude (经度) 指示某地点相对于本初子午线(通过英国格林尼治的经线)的东西位置。经度值范围从 -180°(西经)到 +180°(东经)。

纬度和经度一起定义了地球表面上某一点的位置。

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Point () —> Linestring()

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Shapely 里面的linestring可以把点连成线段。 一个例子: birds.groupby(‘tag-local-identifier… Shapely 里面的linestring可以把点连成线段。 一个例子: birds.groupby(‘tag-local-identifier’)[‘geometry’].apply(list).apply(LineString).head()

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

Pd的高级索引, 我们在处理的时候, 可以设置多级别的索引, 写在最前面的最先索引。 依次排开。 store_sales = store_sales.set_index([‘store_nbr’, ‘family’, ‘date’]).sort_index() 这意味着 store_nbr 是第一个索引级别,family 是第二个索引级别,date 是第三个索引级别。查询时会按这个顺序进行。

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️

如果是datemtime的index, 那么我们通过这个时间索引, 抽取他的一些hour, month , qurter 等等的信息… 如果是datemtime的index, 那么我们通过这个时间索引, 抽取他的一些hour, month , qurter 等等的信息。 或者直接只保留一些天的信息。一个简单的例子: store_sales[‘date’] = store_sales.date.dt.to_period(‘D’)

#匯總今日內容