成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

大數據 數據分析
最近看了新周刊的一篇推送,有關地鐵名字的分析。于是乎也想著自己去獲取數據,然后進行分析一番。當然分析水平不可能和他們的相比,畢竟文筆擺在那里,也就那點水平。

最近看了新周刊的一篇推送,有關地鐵名字的分析。于是乎也想著自己去獲取數據,然后進行分析一番。

當然分析水平不可能和他們的相比,畢竟文筆擺在那里,也就那點水平。

大家看著樂呵就好,能提高的估摸著也就只有數據的準確性啦。

文中所用到的地鐵站數據并沒有去重,對于換乘站,含有大量重復。

即使作者一直在強調換乘站占比很小,影響不是很大。

但于我而言,去除重復數據還是比較簡單的。

然后照著人家的路子去分析,多學習一下。

一、獲取分析

地鐵信息獲取從高德地圖上獲取。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

上面主要獲取城市的「id」,「cityname」及「名稱」。

用于拼接請求網址,進而獲取地鐵線路的具體信息。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

找到請求信息,獲取各個城市的地鐵線路以及線路中站點詳情。

二、數據獲取

具體代碼如下。

  1. import json 
  2. import requests 
  3. from bs4 import BeautifulSoup 
  4.  
  5. headers = {'user-agent''Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
  6.  
  7.  
  8. def get_message(ID, cityname, name): 
  9.     ""
  10.     地鐵線路信息獲取 
  11.     ""
  12.     url = 'http://map.amap.com/service/subway?_1555502190153&srhdata=' + ID + '_drw_' + cityname + '.json' 
  13.     response = requests.get(url=url, headers=headers) 
  14.     html = response.text 
  15.     result = json.loads(html) 
  16.     for i in result['l']: 
  17.         for j in i['st']: 
  18.             # 判斷是否含有地鐵分線 
  19.             if len(i['la']) > 0: 
  20.                 print(name, i['ln'] + '(' + i['la'] + ')', j['n']) 
  21.                 with open('subway.csv''a+', encoding='gbk'as f: 
  22.                     f.write(name + ',' + i['ln'] + '(' + i['la'] + ')' + ',' + j['n'] + '\n'
  23.             else
  24.                 print(name, i['ln'], j['n']) 
  25.                 with open('subway.csv''a+', encoding='gbk'as f: 
  26.                     f.write(name + ',' + i['ln'] + ',' + j['n'] + '\n'
  27.  
  28.  
  29. def get_city(): 
  30.     ""
  31.     城市信息獲取 
  32.     ""
  33.     url = 'http://map.amap.com/subway/index.html?&1100' 
  34.     response = requests.get(url=url, headers=headers) 
  35.     html = response.text 
  36.     # 編碼 
  37.     html = html.encode('ISO-8859-1'
  38.     html = html.decode('utf-8'
  39.     soup = BeautifulSoup(html, 'lxml'
  40.     # 城市列表 
  41.     res1 = soup.find_all(class_="city-list fl")[0] 
  42.     res2 = soup.find_all(class_="more-city-list")[0] 
  43.     for i in res1.find_all('a'): 
  44.         # 城市ID值 
  45.         ID = i['id'
  46.         # 城市拼音名 
  47.         cityname = i['cityname'
  48.         # 城市名 
  49.         name = i.get_text() 
  50.         get_message(ID, cityname, name
  51.     for i in res2.find_all('a'): 
  52.         # 城市ID值 
  53.         ID = i['id'
  54.         # 城市拼音名 
  55.         cityname = i['cityname'
  56.         # 城市名 
  57.         name = i.get_text() 
  58.         get_message(ID, cityname, name
  59.  
  60.  
  61. if __name__ == '__main__'
  62.     get_city() 

***成功獲取數據。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

包含換乘站數據,一共3541個地鐵站點。

二、數據可視化

先對數據進行清洗,去除重復的換乘站信息。

  1. from wordcloud import WordCloud, ImageColorGenerator 
  2. from pyecharts import Line, Bar 
  3. import matplotlib.pyplot as plt 
  4. import pandas as pd 
  5. import numpy as np 
  6. import jieba 
  7.  
  8. # 設置列名與數據對齊 
  9. pd.set_option('display.unicode.ambiguous_as_wide'True
  10. pd.set_option('display.unicode.east_asian_width'True
  11. # 顯示10行 
  12. pd.set_option('display.max_rows', 10) 
  13. # 讀取數據 
  14. df = pd.read_csv('subway.csv', header=None, names=['city''line''station'], encoding='gbk'
  15. # 各個城市地鐵線路情況 
  16. df_line = df.groupby(['city''line']).count().reset_index() 
  17. print(df_line) 

通過城市及地鐵線路進行分組,得到全國地鐵線路總數。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

一共183條地鐵線路。

  1. def create_map(df): 
  2.     # 繪制地圖 
  3.     value = [i for i in df['line']] 
  4.     attr = [i for i in df['city']] 
  5.     geo = Geo("已開通地鐵城市分布情況", title_pos='center', title_top='0', width=800, height=400, title_color="#fff", background_color="#404a59", ) 
  6.     geo.add("", attr, value, is_visualmap=True, visual_range=[0, 25], visual_text_color="#fff", symbol_size=15) 
  7.     geo.render("已開通地鐵城市分布情況.html"
  8.  
  9.  
  10. def create_line(df): 
  11.     ""
  12.     生成城市地鐵線路數量分布情況 
  13.     ""
  14.     title_len = df['line'
  15.     bins = [0, 5, 10, 15, 20, 25] 
  16.     level = ['0-5''5-10''10-15''15-20''20以上'
  17.     len_stage = pd.cut(title_len, bins=bins, labels=level).value_counts().sort_index() 
  18.     # 生成柱狀圖 
  19.     attr = len_stage.index 
  20.     v1 = len_stage.values 
  21.     bar = Bar("各城市地鐵線路數量分布", title_pos='center', title_top='18', width=800, height=400) 
  22.     bar.add("", attr, v1, is_stack=True, is_label_show=True
  23.     bar.render("各城市地鐵線路數量分布.html"
  24.  
  25.  
  26. # 各個城市地鐵線路數 
  27. df_city = df_line.groupby(['city']).count().reset_index().sort_values(by='line', ascending=False
  28. print(df_city) 
  29. create_map(df_city) 
  30. create_line(df_city) 

已經開通地鐵的城市數據,還有各個城市的地鐵線路數。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

一共32個城市開通地鐵,其中北京、上海線路已經超過了20條。

城市分布情況。

[[263955]]

大部分都是省會城市,還有個別經濟實力強的城市。

線路數量分布情況。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

可以看到大部分還是在「0-5」這個階段的,當然最少為1條線。

  1. # 哪個城市哪條線路地鐵站最多 
  2. print(df_line.sort_values(by='station', ascending=False)) 

探索一下哪個城市哪條線路地鐵站最多。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

北京10號線***,重慶3號線第二。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

還是蠻懷念北京1張票,2塊錢地鐵隨便做的時候。

可惜好日子一去不復返了。

去除重復換乘站數據。

  1. # 去除重復換乘站的地鐵數據 
  2. df_station = df.groupby(['city''station']).count().reset_index() 
  3. print(df_station) 

一共包含3034個地鐵站,相較新周刊中3447個地鐵站數據。

減少了近400個地鐵站。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

接下來看一下哪個城市地鐵站最多。

  1. # 統計每個城市包含地鐵站數(已去除重復換乘站) 
  2. print(df_station.groupby(['city']).count().reset_index().sort_values(by='station', ascending=False)) 

32個城市,上海***,北京第二。

沒想到的是,武漢居然有那么多地鐵站。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

現在來實現一下新周刊中的操作,生成地鐵名詞云。

  1. def create_wordcloud(df): 
  2.     ""
  3.     生成地鐵名詞云 
  4.     ""
  5.     # 分詞 
  6.     text = '' 
  7.     for line in df['station']: 
  8.         text += ' '.join(jieba.cut(line, cut_all=False)) 
  9.         text += ' ' 
  10.     backgroud_Image = plt.imread('rocket.jpg'
  11.     wc = WordCloud( 
  12.         background_color='white'
  13.         mask=backgroud_Image, 
  14.         font_path='C:\Windows\Fonts\華康儷金黑W8.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_from_text(text) 
  22.     img_colors = ImageColorGenerator(backgroud_Image) 
  23.     wc.recolor(color_func=img_colors) 
  24.     # 看看詞頻高的有哪些 
  25.     process_word = WordCloud.process_text(wc, text) 
  26.     sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True
  27.     print(sort[:50]) 
  28.     plt.imshow(wc) 
  29.     plt.axis('off'
  30.     wc.to_file("地鐵名詞云.jpg"
  31.     print('生成詞云成功!'
  32.  
  33.  
  34. create_wordcloud(df_station) 

詞云圖如下。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

廣場、大道、公園占了前三,和新周刊的圖片一樣,說明分析有效。

  1. words = [] 
  2. for line in df['station']: 
  3.     for i in line: 
  4.         # 將字符串輸出一個個中文 
  5.         words.append(i) 
  6.  
  7.  
  8. def all_np(arr): 
  9.     ""
  10.     統計單字頻率 
  11.     ""
  12.     arr = np.array(arr) 
  13.     key = np.unique(arr) 
  14.     result = {} 
  15.     for k in key
  16.         mask = (arr == k) 
  17.         arr_new = arr[mask] 
  18.         v = arr_new.size 
  19.         result[k] = v 
  20.     return result 
  21.  
  22.  
  23. def create_word(word_message): 
  24.     ""
  25.     生成柱狀圖 
  26.     ""
  27.     attr = [j[0] for j in word_message] 
  28.     v1 = [j[1] for j in word_message] 
  29.     bar = Bar("中國地鐵站***用的字", title_pos='center', title_top='18', width=800, height=400) 
  30.     bar.add("", attr, v1, is_stack=True, is_label_show=True
  31.     bar.render("中國地鐵站***用的字.html"
  32.  
  33.  
  34. word = all_np(words) 
  35. word_message = sorted(word.items(), key=lambda x: x[1], reverse=True)[:10] 
  36. create_word(word_message) 

統計一下,大家最喜歡用什么字來命名地鐵。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

路最多,在此之中上海的占比很大。

不信往下看。

  1. # 選取上海的地鐵站 
  2. df1 = df_station[df_station['city'] == '上海'
  3. print(df1) 

統計上海所有的地鐵站,一共345個。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

選取包含路的地鐵站。

  1. # 選取上海地鐵站名字包含路的數據 
  2. df2 = df1[df1['station'].str.contains('路')] 
  3. print(df2) 

有210個,約占上海地鐵的三分之二,路的七分之二。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

看來上海對路是情有獨鐘的。

具體緣由這里就不解釋了,詳情見新周刊的推送,里面還是講解蠻詳細的。

武漢和重慶則是對家這個詞特別喜歡。

標志著那片土地開拓者們的籍貫與姓氏。

  1. # 選取武漢的地鐵站 
  2. df1 = df_station[df_station['city'] == '武漢'
  3. print(df1) 
  4. # 選取武漢地鐵站名字包含家的數據 
  5. df2 = df1[df1['station'].str.contains('家')] 
  6. print(df2) 
  7.  
  8. # 選取重慶的地鐵站 
  9. df1 = df_station[df_station['city'] == '重慶'
  10. print(df1) 
  11. # 選取重慶地鐵站名字包含家的數據 
  12. df2 = df1[df1['station'].str.contains('家')] 
  13. print(df2) 

武漢共有17個,重慶共有20個。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

看完家之后,再來看一下名字包含門的地鐵站。

  1. def create_door(door): 
  2.     ""
  3.     生成柱狀圖 
  4.     ""
  5.     attr = [j for j in door['city'][:3]] 
  6.     v1 = [j for j in door['line'][:3]] 
  7.     bar = Bar("地鐵站***用“門”命名的城市", title_pos='center', title_top='18', width=800, height=400) 
  8.     bar.add("", attr, v1, is_stack=True, is_label_show=True, yaxis_max=40) 
  9.     bar.render("地鐵站***用門命名的城市.html"
  10.  
  11.  
  12. # 選取地鐵站名字包含門的數據 
  13. df1 = df_station[df_station['station'].str.contains('門')] 
  14. # 對數據進行分組計數 
  15. df2 = df1.groupby(['city']).count().reset_index().sort_values(by='line', ascending=False
  16. print(df2) 
  17. create_door(df2) 

一共有21個城市,地鐵站名包含門。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

其中北京,南京,西安作為多朝古都,占去了大部分。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

具體的地鐵站名數據。

  1. # 選取北京的地鐵站 
  2. df1 = df_station[df_station['city'] == '北京'
  3. # 選取北京地鐵站名字包含門的數據 
  4. df2 = df1[df1['station'].str.contains('門')] 
  5. print(df2) 
  6.  
  7. # 選取南京的地鐵站 
  8. df1 = df_station[df_station['city'] == '南京'
  9. # 選取南京地鐵站名字包含門的數據 
  10. df2 = df1[df1['station'].str.contains('門')] 
  11. print(df2) 
  12.  
  13. # 選取西安的地鐵站 
  14. df1 = df_station[df_station['city'] == '西安'
  15. # 選取西安地鐵站名字包含門的數據 
  16. df2 = df1[df1['station'].str.contains('門')] 
  17. print(df2) 

輸出如下。

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

183條地鐵線路,3034個地鐵站,發現中國地鐵名字的秘密

三、總結

源碼及相關文件已上傳GitHub,點擊閱讀原文即可獲取。

這里摘一段新周刊的話。

可以說,一個小小的地鐵名就是一座城市風貌的一部分。

它反映著不同地方的水土,也承載著各個城市的文化和歷史。

確實如此,靠山的城市地鐵名多“山”,靠水的城市地鐵名“含水量”則是杠杠的。

責任編輯:未麗燕 來源: 法納斯特
相關推薦

2022-07-31 15:46:30

Web自動智能停車

2016-07-05 17:47:53

華為

2014-07-18 09:10:56

免費Wi-Fi

2012-12-29 16:38:41

搜狗地圖

2016-01-27 14:47:02

云監控華為

2024-10-08 15:16:23

SQL地鐵換乘數據庫

2019-06-24 15:55:59

地鐵線路擁擠

2016-06-08 14:47:17

高德

2014-12-17 09:16:33

漏洞北京地鐵系統

2017-12-07 08:03:54

華為

2012-07-09 09:54:57

Wi-Fi倫敦奧運

2017-09-07 16:37:11

華為

2021-02-22 19:06:17

數字人民幣數字貨幣區塊鏈

2016-09-08 13:16:51

銳捷

2017-09-21 12:12:45

2014-01-23 10:59:54

地鐵通

2015-06-25 17:26:52

京港地鐵華為

2020-08-26 10:25:16

智慧

2016-07-11 15:55:18

大數據

2016-10-19 09:17:15

HTML5Javascript可視化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品国产99国产精品 | 成人福利在线观看 | 在线欧美视频 | 99精品一区 | 日韩一区二区在线播放 | 欧美三区在线观看 | 精品videossex高潮汇编 | 一区二区国产在线观看 | 久久69精品久久久久久久电影好 | 欧美日韩亚洲国产综合 | 国产乱码精品一区二区三区五月婷 | 在线免费观看成年人视频 | 亚洲男人的天堂网站 | 国产一区 日韩 | 欧美日韩久 | 精品久久久久久 | 国产视频久久久 | 中文字幕一区在线 | 爱爱视频在线观看 | 日韩av免费在线观看 | 欧美日韩精品久久久免费观看 | 99精品视频免费在线观看 | 91一区二区在线观看 | 可以在线看的黄色网址 | 中文字幕亚洲欧美 | 久久专区 | 91精品国产综合久久精品 | 97国产精品视频人人做人人爱 | 一区二区三区四区在线 | 日韩影院在线 | 在线观看不卡av | 亚洲视频在线看 | 国产丝袜av| 亚洲第一成人影院 | 天堂久久天堂综合色 | 99视频入口 | 日韩视频在线观看一区二区 | 一区二区久久 | 91精品国产乱码久久久久久 | 特级做a爰片毛片免费看108 | 伊人久久综合 |