销售部扔给我一个Excel,说要做成地图报表。打开一看,我差点当场去世...
事情是这样的。
上周销售部找到我,说有个需求:把107个经销商的数据做成地图报表,方便开会的时候展示。听起来挺简单对吧?我接过文件,泡了杯咖啡,准备半小时搞定。
然后打开Excel,我人傻了。
107个客户,2021年到2026年的销售汇总。数据量不大,但脏得离谱。
国家字段,写法五花八门:
州名更是离谱:
- 全称:California、Texas、Florida
- 还有"Al"(这是Alabama还是Alaska?)
国际客户更头大:
- 加拿大客户的城市写着"ABBOTSFORD, BC CANADA",州字段却是空的
- 新加坡客户的国家字段是"-No Value-",但城市里有"Singapore"
我当时的心情:
这数据,比我的人生还乱。
但活儿接了就得干。我开始琢磨:怎么把这团乱麻理清楚?
第一步:定义"什么是正确的"

我建了一个大字典,把所有可能的写法都映射到标准格式:
# 州名映射(各种妖魔鬼怪 -> 标准缩写)
STATE_NAME_MAP = {
# 全称
'CALIFORNIA': 'CA', 'TEXAS': 'TX', 'FLORIDA': 'FL',
# 缩写(大写)
'CA': 'CA', 'TX': 'TX', 'FL': 'FL',
# 小写变体
'Ca': 'CA', 'ca': 'CA', 'Fl': 'FL', 'Tx': 'TX',
# 奇葩写法
'Al': 'AL', # Alabama,不是Alaska
}
第二步:四步清洗法
每一行数据,我都走这四步:
第1步:洗国家
- "-No Value-" → 默认美国(因为大部分是美国客户)
- "United States" / "USA" / "U.S.A" → 统一成"US"
第2步:洗州名
- 从城市字段偷信息:"Miami, FL" → 州就是"FL"
第3步:找坐标
第4步:处理漏网之鱼
第三步:看看战果
原始数据:107个客户
清洗后:107个客户(一个没丢)
无法精确定位:15个(先用默认值)
那15个倒霉蛋长这样:
- 排名41:Sxxxy Playsystems —— 除了名字啥都没有,连城市都没有
- 排名47:AxxxPlay Sports —— 写了United States但没写州
- 排名56:Pxxxxxe Builder —— 新加坡客户,但地址字段全空
我的感悟:
真实世界的数据,永远比你想象的更乱。但别急着删,给个默认值先留着,说不定后面能补上。
技术选型
我选了这套组合:
- CartoDB地图:不用申请API key,本地文件也能显示
核心难题:标记重叠
107个客户,美国占大头。佛罗里达州有10+个客户,如果都用同一个坐标,地图上就是一个大红点,根本分不清谁是谁。
我的解决方案:螺旋式偏移
同一州的第1个客户放中心,第2个往右上偏一点,第3个往右偏,第4个往右下偏... 像螺旋一样散开:
# 螺旋偏移算法
angle = count * 0.5
radius = 1.2 * (1 + count // 6)
lat_offset = radius * 0.3 * (count % 3 - 1)
lon_offset = radius * 0.5 * (count % 5 - 2)
效果:同一州的标记呈螺旋状散开,既不会重叠,又都在该州范围内。

交互设计
左右联动:
- 点击排名1 → 地图自动飞到Alabama,弹出详情
颜色分级:
这样一眼就能看出谁是核心客户。

打开生成的HTML文件,销售部看到的是:
✅ 107个客户全部在地图上,一个没漏
✅ 点击任意客户,地图自动定位,显示详细信息
✅ 颜色区分排名,核心客户一目了然
✅ 手机和电脑都能看,响应式设计
销售部说:
"这玩意儿比Excel直观多了,开会直接投屏,客户分布看得清清楚楚。"
耗时:半小时。
从接到需求到交付,半小时。当然,这半小时的前提是:我已经有一套数据清洗的套路,和现成的地图可视化代码模板。
1. 数据清洗比可视化更重要
这个项目我花了80%时间在清洗数据,20%时间做地图。但如果没有那80%,后面的20%就是空中楼阁。
经验:
2. 默认值策略
15个客户没有完整地理信息,但我没有删掉他们,而是给了美国中心坐标。
好处:
3. 用户体验细节

- Python + openpyxl(读Excel)
- HTML/CSS/JavaScript(前端页面)
这个项目让我深刻体会到:
数据清洗是体力活,但也是技术活。规则要清晰,边界要定义好,默认值要合理。
最重要的是——
不要嫌弃 messy 的数据,把它变成 masterpiece,这才是价值所在。
本文案例基于真实项目,数据已脱敏处理
关于作者
我是小龙哥,一个喜欢折腾数据的程序员。平时会分享一些数据可视化、AI工具、效率提升的实战经验。如果你也对这些感兴趣,欢迎扫码关注我的公众号「小龙哥AI」,一起交流。
