一个小小的地铁名,就是一座城市风貌的一部分,它反映着不同地方的水土,也承载着各个城市的文化和历史。

本文试图从地铁站名出发,一探这一个个名字能否反映出每一寸土地的性格,文化。

参考文章:183条地铁线路,3034个地铁站,发现中国地铁名字的秘密。

  • 数据集准备:

  • 爬取高德地图地铁图:http://map.amap.com/subway/index.html

 1 '''
 2 获取地铁线路图数据
 3 存为metro.csv
 4 '''
 5 import urllib
 6 import re
 7 import json
 8 import requests
 9 from lxml import etree
10
11 header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}

  •   首先对城市信息进行处理,需要获得城市对应ID,城市名英文名称,根据xpath进行对应字段爬取。

 1 def City():
 2     '''
 3     爬取城市名及对应ID
 4     '''
 5     url = 'http://map.amap.com/subway/index.html'
 6     response = requests.get(url,header)
 7     #print(response.encoding)   #编码格式为 ISO-8859-1
 8     html =response.text
 9     html =html.encode('ISO-8859-1').decode('utf-8') #对网页内容编码再解码,name才能正常显示中文
10
11     content = etree.HTML(html)
12     name = content.xpath("//div[@class='sw-city']//a/text()")
13     city_name = content.xpath("//div[@class='sw-city']//a/@cityname")
14     city_num =  content.xpath("//div[@class='sw-city']//a/@id")
15
16     for i in range(len(name)):
17         Metro(name[i],city_name[i],city_num[i])
18         print('正在下载'+name[i]+'地铁线路图')

  •   将获得的城市信息传进相关城市地铁url,如广州地铁图为 http://map.amap.com/service/subway?_1558630393009&srhdata=4401_info_guangzhou.json

  •  1 def Metro(name,city_name,city_num):
     2     '''
     3     爬取详细地铁站名
     4     '''
     5     url = 'http://map.amap.com/service/subway?srhdata='+city_num + '_drw_'+ city_name +  '.json'
     6     response = requests.get(url,header)
     7     html = response.text
     8     result = json.loads(html)
     9
    10     for i in result['l']:
    11         for j in i['st']:
    15             with open('./metro.csv','a+') as f:
    16                 f.write(name+','+i['ln']+','+j['n']+'\n')

    实际爬取网页过程中,往往从单个城市出发,再初步添加参数多城市进行爬取

  • 爬取得到metro.csv文件

  • 数据可视化

  • 获得数据后,对数据进行清洗并进行可视化

 1 '''
 2 对数据进行清洗及可视化
 3 '''
 4 #可视化包pyecharts使用:https://blog.csdn.net/wsp_1138886114/article/details/80509375
 5 #本案例使用版本为pip install pyecharts==0.5.11,最新的1.0.版本用法不同
 6
 7 import pandas as pd
 8 from pyecharts import Bar,Geo
 9 import matplotlib.pyplot as plt
10 import numpy as np
11 import seaborn as sns
12 import jieba
13 from wordcloud import WordCloud, ImageColorGenerator 

  •   打开数据集,根据城市名进行分组,将地铁站名数量相加后再放入数据集中。

 1 def main():
 2
 3     df = pd.read_csv('./metro.csv',header=None,names=['city','line','station'])
 4
 5
 6     #按城市和线路分组,计算出每条线路的站台数量,再重新设置索引进行排序
 7     df_line = df.groupby(['city','line']).count().reset_index()
 8
 9     #各城市的地铁线路数量
10     #df_city = df_line.groupby(['city']).count().sort_values(by='line',ascending=False).reset_index()
11     df_city = df_line.groupby(['city']).count()
12     df_city['station'] =df_line.groupby('city').sum()
13     df_city = df_city.sort_values(by='line',ascending=False).reset_index()

  • print(df)
  • print(df_city)
  • 找出地铁线路最多的前十个城市

def Line_Show(df):'''生成城市地铁线路数量分布情况'''#中文显示plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False#由图可看出北上广港地铁线路最多sns.barplot(x='city',y='line',data=df,palette='deep')#地铁站点最多的城市为上海sns.barplot(x='city',y='station',data=df,palette='rocket')plt.show()

df_city_10 = df_city[:10]
Line_Show(df_city_10)

  • 下图可看出北上广拥有的地铁线路排名前三,反映出了其大城市的定位及土地面积之大。

  • 北京拥有最多的地铁线路,而上海确实拥有地铁站台最多的城市

  • 地铁名的标配词

  • 如此多的地铁名词,那些词汇会是热门呢?
  • 对地铁名进行词频分析
 1 def Word_Cloud(df):
 2     '''
 3     生成地铁名词云
 4     '''
 5     text=''
 6     for i in df:
 7         text += ' '.join(jieba.cut(i,cut_all=False))
 8         text +=' '
 9     #print(text)
10     background_image = plt.imread('./地铁.jpg')
11     wc = WordCloud(
12             background_color='white',       #背景颜色
13             mask = background_image,        #背景图片
14             font_path = './simhei.ttf',          #字体设置
15             max_words=1000,
16             max_font_size=150,
17             min_font_size=15,
18             prefer_horizontal=1,
19             random_state=50,
20             )
21     wc.generate(text)
22     wc.to_file('./地铁云.png')

1 Word_Cloud(df['station'])

  • 对词频进行分词,传入地铁形状的背景图,对相关参数进行设置,生成地铁名词云。

  • 火车站,广场,公园,大道是出现频率最高的词汇

看到这个图的时候,你是不是会心一笑,马上能想到相应的地铁站?

住在长春的你,此时的脑袋里必定会浮现出“胜利公园”“人民广场”;如果你住广州,第一个想到的或许是“公园前”;到了武汉,你可能会想起“中山公园”“洪山广场”……

对一座城市来说,“公园”“广场”是重要的文化地,以这两类文化地标来命名,一方面指向性非常明确,可以给市民或游客提供清晰的地理定位;另一方面,将这些地标作为地铁名字,也可以帮助推广城市文化。

在“公园”“广场”之外,地铁站名里还有另外一种常见的重要地标建筑,那就是“火车站”

在跨越城市或省份的交通中,火车站往往担负着重要的任务,也因为这个原因,它成为了各个城市的地标建筑。

但是,火车站一般处于城市的边缘地带,自驾或公交都会增加人们的交通成本,所以,为了方便人们的出行,附近都设有地铁站,地铁名也会与火车站同名。

  • 地铁命名的“关键字”

  • 一个好的地铁名字,反映的土地之上的人文景观且通俗易懂,让人们能第一时间联想到该区域的特性。
  • 对全国各条地铁线路的站名文本做字频分析
 1 def Word_Fre(df):
 2     '''
 3     统计词频
 4     https://www.cnblogs.com/hatemath/p/8268234.html
 5     '''
 6     words=[]
 7     words_dict ={}
 8     exclude_str = ",。!?、()【】<>《》=:+-*—“”…"
 9     #添加每一个字到列表中
10     for word in df:
11         for j in word:
12             #将字符串输出为中文
13             words.append(j)
14     #print(words)
15
16     #用字典统计每个数出现的次数
17     for i in words:
18         if i not in exclude_str:                #排除符号
19             #对单个字出现次数计数
20             if i.strip() not in words_dict:
21                 words_dict[i]=1
22             else:
23                 words_dict[i] += 1
24     #print(words_dict)
25     #print(words_dict.items())  #字典.items() 函数以列表返回可遍历的(键, 值) 元组数组
26
27     #x[1]是按字频排序,x[0]则是按字排序
28     word_frequency = sorted(words_dict.items(),key=lambda x:x[1],reverse=True)[:10]
29     #print(word_frequency)
30     Word_Bar(word_frequency)
31
32 def Word_Bar(word_frequency):
33     '''
34     生成词频图
35     '''
36     attr = [j[0] for j in word_frequency]
37     fre  = [j[1] for j in word_frequency]
38     sns.barplot(x=attr,y=fre)

1 Word_Fre(df['station'])

敢问路在何方,一个“路”字,以绝对优势成了出现频率最高的字,可以说,无论走到哪个城市,你都能在地铁图里,找到不同的“路”。

  • 深圳地铁出现频率最高的字是?

1     '''
2     深圳地铁站出现频率最高的字
3     '''
4     df1 = df[df['city']=='深圳']
5     Word_Fre(df1['station'])
6     print(df1[df1['station'].str.contains('湾')])

“湾”字出现时,大脑中立刻浮现了“前海湾”,“红树湾”等多个地名,“湾“字的确能代表深圳这座城市,作为粤港澳大湾区的中心点,深圳介于香港与珠三角其他城市之间,不仅对于珠三角有着不小的影响,而且还和香港有着多年的交流和合作基础,是港澳地区与珠三角之间的桥梁与纽带。

从地理位置上来说,临海城市地铁名中出现湾的频率会否更高呢

  • 选取站名出现湾最多的几个城市

1     #选取站名出现湾最多的几个城市
2     df_bay = df[df['station'].str.contains('湾|灣')]
3     #print(df_bay)
4     #香港的'湾'字为繁体字
5     df_bay_num = df_bay.groupby('city').count().sort_values(by='station',ascending=False)
6     print(df_bay_num)

地铁站名出现”湾“字较多次数的城市,无一例外,均为临海,或者是有江河交汇的城市,深圳,大连,重庆等。

在一开始分析时,香港并未出现在名单中,原来是香港地铁站名使用了繁体字。

在一些依山傍水的地方,地铁名必定带有较多的“山山水水”。  

像南京这样周边山丘众多的城市,地铁里也跟着冒出很多座“山”。搭个地铁就好像在“翻山越岭”一般:爬完4号线的九华山、聚宝山和灵山,转S7号线翻无想山,再转个S8号线,还可以看到凤凰山。 

光是念这些古朴的名字,你都能想象到那秀丽、清幽的画面了。

靠山的城市,地铁名多“山”,而靠近江河湖海的城市,地铁的“含水量”也会噌噌噌地往上涨。

中国的地铁名里,值得挖掘的东西还有很多很多,比如有的地铁名非常风雅,听起来就让人心情愉悦,像北京的金台夕照,西安的桃花潭,南京的莫愁湖,香港的杏花邨......

可以说,一个小小的地铁名就是一座城市风貌的一部分,它反映着不同地方的水土,也承载着各个城市的文化和历史。

北京的庄严气派,上海的现代多元,杭州的诗意风雅,广州的岭南风情,重庆的市井气息……这些都被藏在地铁名字里了。

所以,如果你想快速地了解一座城市,不妨试试从地铁名开始吧,你一定会有很多意想不到的收获!

Ps:3447个地铁站名里,换乘站会被重复统计,但此部分地铁站占比很小,对统计结果的影响可以忽略不计。

转载于:https://www.cnblogs.com/jvfjvf/p/10915761.html

发现中国地铁名字的秘密相关推荐

  1. python地铁车票_Python分析3034个地铁站,发现中国地铁名字的秘密。

    原标题:Python分析3034个地铁站,发现中国地铁名字的秘密. 最近看了新周刊的一篇推送,有关地铁名字的分析,链接如下. 我们分析了3447个地铁站,发现了中国城市地名的秘密 于是乎也想着自己去获 ...

  2. 183条地铁线路,3034个地铁站,发现中国地铁名字的秘密。

    作者 | 小F 来源 | 法纳斯特 最近看了新周刊的一篇推送,有关地铁名字的分析,链接如下. 我们分析了3447个地铁站,发现了中国城市地名的秘密 于是乎也想着自己去获取数据,然后进行分析一番. 当然 ...

  3. 2022-2028年中国地铁广告行业研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国地铁广告行业市场行业相关概述.中国地铁广 ...

  4. 谷歌为什登不上去github_我们分析了GitHub上5.46 亿条日志,发现中国开源虽然贡献大但还有这些不足......

    作者 | InfoQ.X-lab编辑 | Tina 全球最大代码托管平台 GitHub 在 2019 年发布的年度报告中显示, GitHub 上目前已有超过 4000 万开发人员.将近 300 万个组 ...

  5. 我们分析了GitHub上5.46 亿条日志,发现中国开源虽然贡献大但还有这些不足......

    点击上方"开源社"关注我们 | 转载自:InfoQ | 编辑:陈梅梅 | 责编:Corrie 全球最大代码托管平台 GitHub 在 2019 年发布的年度报告中显示, GitHu ...

  6. Python爬虫实战,pyecharts模块,Python实现中国地铁数据可视化

    前言 利用Python实现中国地铁数据可视化.废话不多说. 让我们愉快地开始吧~ 开发工具 Python 版本:3.6.4 相关模块: requests模块; wordcloud模块; 熊猫模块; n ...

  7. 全球及中国地铁行业融资现状与十四五盈利前景分析报告2022版

    全球及中国地铁行业融资现状与十四五盈利前景分析报告2022版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 [搜索鸿 ...

  8. 2022-2027年(新版)中国地铁AFC系统行业发展现状与供需态势报告

    2022-2027年(新版)中国地铁AFC系统行业发展现状与供需态势报告 [报告编号]: BG418012 [出版时间]: 2022年2月 [出版机构]: 中智正业研究院 内容简介: 第一部分中国AF ...

  9. 中国地铁换乘网——免费提供地铁查询代码下载

    中国地铁换乘网免费提供地铁换乘查询代码下载,通过网页嵌入代码的方式,在您的网站轻松快捷实现对中国城市地铁换乘的在线查询,提供最优地铁换乘路线.时刻表.票价及站点周边相关信息.并提供了多语言选择,包括中 ...

最新文章

  1. TCL中关于管脚(Ports)的一些使用方法?
  2. 解决 IntelliJ IDEA Tomcat 控制台中文输出乱码问题
  3. MySQL主从介绍、准备工作、配置主、配置从、测试主从同步、断电后恢复主从...
  4. Android OTA 升级之三:生成recovery.img
  5. H5 Canvas刮刮乐
  6. 王峰:Hadoop生态技术在阿里全网商品搜索实战
  7. 具有ReadWriteLock的Java并发
  8. 计算机网络中的传输协议是_计算机网络中的传输方式
  9. Linux Top使用说明
  10. uml类图用什么软件画_为什么需要UML类图建模?
  11. 能取代top命令的htop
  12. mysql 安装导航_ubuntu下安装Mysql
  13. ORB-SLAM3论文解读
  14. linux驱动视频采集卡,在linux下使用视频采集卡
  15. D. Bash and a Tough Math Puzzle
  16. VS2019创建COM组件
  17. 日语整理之 自五 他五
  18. RT-Thread Studio 使用笔记(六)| 获取光传感器数据(I2C设备驱动+BH1750手写驱动代码分享)
  19. 微信小程序最简单的轮播图
  20. Rosalind第二题:将DNA转录为RNA

热门文章

  1. win10 metro app(应用商店中的APP)如何走代理?
  2. 国仁老猫:视频号“混剪玩法”还能玩吗?有人已经月入2W。
  3. C语言——连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题, 如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做, 10道题做完
  4. word转pdf出现错误 解决方法
  5. linux对已有分区进行扩容
  6. 数据结构C++——二叉树的实现
  7. squid代理服务器应用及它的几种代理模式
  8. 低配置的电脑应该用哪个系统?
  9. 基于深度学习的股票预测(完整版,有代码)
  10. 清华大学新闻学考研专业课真题经验分享