如何过滤 pandas 数据库并根据过滤后的数据集创建地图?

问题描述 投票:0回答:1

这是我针对此作业给出的提示:

将数据“芝加哥枪支暴力报告.csv”从画布导入到 Colab 笔记本中。这 数据包含 2016 年至 2021 年芝加哥涉及枪支的电池报告。 计算数据中每个警察“Beat”中的事件总数。哪个节拍的事件最多以及包含多少个?

回想一下约翰·斯诺(John Snow)使用地图分析了伦敦霍乱病例的聚集情况,并在我们之前的阅读中将其与芝加哥的枪支暴力进行了比较。在这里我们将采取类似的方法。创建报告最多的前 10% 节拍的“热点地图” 涉及枪支的电池。在每个节拍的中心放置一个圆形标记(由节拍中事件位置的平均值或中值定义),并使标记的大小与事件数量成比例。

我能够将数据集过滤到报告事件最多的前 10% 的节拍,但是,我无法将其放回数据框中以转换为地图图。

这是迄今为止我的代码:

`from pandas.core.groupby import groupby
import pandas as pd
import plotly.express as px
beats_path = '/content/drive/My Drive/chicago_gun_violence_reports.csv'
beats = pd.read_csv(beats_path)
# Check the loaded data
print(beats.head())
beats = pd.read_csv(beats_path)
#new events
beat_event_counts = beats['Beat'].value_counts().reset_index()
beat_event_counts.columns = ['Beat', 'Event Count']
#find most beats, number of beats
beat_with_most_events = beat_event_counts.iloc[0]['Beat']
most_events_count = beat_event_counts.iloc[0]['Event Count']
print(f"Beat {beat_with_most_events} has the most events at {most_events_count}")
# Find the 90th percentile threshold
sorted_beats = beats.sort_values(by='Beat', ascending=False)
top_10_percent_threshold = sorted_beats['Beat'].quantile(0.9)
# Filter the top 10% of beats
top_10_percent_beats = beat_event_counts[beat_event_counts['Event Count'] >= top_10_percent_threshold]
print(top_10_percent_beats)
#find centers
beat_centers = beats.groupby('Beat').agg({'Latitude': 'median', 'Longitude': 'median'}).reset_index()
    #create plot
    fig = px.scatter_mapbox(
    top_10_percent_beats,
    lat=beat_centers['Latitude'],
    lon=beat_centers['Longitude'],
    size='Event Count',
    hover_name='Beat',
)
fig.show()`

但是,使用这段代码,top_10_percent_beats仍然是一个空数据框,我不知道如何让它正常工作。

python pandas plot plotly
1个回答
0
投票

我发现了一个与你的数据集类似的数据集这里

使用该数据集,我没有得到

top_10_percent_beats
的空数据框,但存在一个潜在问题:“top_10_percent_beats”

© www.soinside.com 2019 - 2024. All rights reserved.