You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Pandas筛选Top10%警区数据为空及地图绘制问题?

问题解决:芝加哥涉枪袭击数据Top10%警区筛选与地图绘制修复

你的代码存在两个核心问题,导致筛选出空DataFrame且地图无法正确生成:

1. Top10%警区筛选逻辑错误

原代码错误地使用了**警区编号(Beat)的分位数来计算阈值,而我们需要的是事件数(Event Count)**的90分位数——毕竟要找的是事件最多的10%警区,和警区编号大小无关。

2. 地图数据关联错误

绘制地图时,top_10_percent_beats(事件数数据)和beat_centers(经纬度数据)没有关联,直接混用会导致经纬度与警区不匹配,必须将两个数据集按Beat字段合并后再绘图。


修正后的完整代码

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)

# 查看数据前几行(可选)
print(beats.head())

# 计算每个警区的事件总数
beat_event_counts = beats['Beat'].value_counts().reset_index()
beat_event_counts.columns = ['Beat', 'Event Count']

# 找出事件最多的警区
beat_with_most_events = beat_event_counts.iloc[0]['Beat']
most_events_count = beat_event_counts.iloc[0]['Event Count']
print(f"警区 {beat_with_most_events} 事件数最多,共 {most_events_count} 起")

# 计算事件数的90分位数(Top10%的阈值)
top_10_percent_threshold = beat_event_counts['Event Count'].quantile(0.9)

# 筛选事件数Top10%的警区
top_10_percent_beats = beat_event_counts[beat_event_counts['Event Count'] >= top_10_percent_threshold]
print("Top10%警区数据:")
print(top_10_percent_beats)

# 计算每个警区的经纬度中位数中心
beat_centers = beats.groupby('Beat').agg({'Latitude': 'median', 'Longitude': 'median'}).reset_index()

# 合并事件数数据和经纬度数据(关键:确保警区与坐标对应)
top_10_with_centers = pd.merge(top_10_percent_beats, beat_centers, on='Beat')

# 绘制热点地图
fig = px.scatter_mapbox(
    top_10_with_centers,
    lat='Latitude',
    lon='Longitude',
    size='Event Count',
    hover_name='Beat',
    hover_data={'Event Count': True, 'Latitude': False, 'Longitude': False},
    mapbox_style='carto-positron',  # 可选:更换地图样式
    zoom=10  # 调整地图初始缩放级别
)
fig.show()

关键修改说明

  • 阈值计算修正:从sorted_beats['Beat'].quantile(0.9)改为beat_event_counts['Event Count'].quantile(0.9),确保基于事件数筛选。
  • 数据合并:用pd.merge将事件数数据和经纬度数据按Beat合并,保证每个警区的事件数和坐标一一对应。
  • 地图参数优化:添加了mapbox_style和zoom参数,让地图显示更合理;调整hover_data隐藏冗余的经纬度信息。

内容的提问来源于stack exchange,提问作者kleyway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:13:21