日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

利用Python/ target=_blank class=infotextkey>Python實現中國地鐵數據可視化。廢話不多說。

讓我們愉快地開始吧~

開發工具

Python版本:3.6.4

相關模塊:

requests模塊;

wordcloud模塊;

pandas模塊;

numpy模塊;

jieba模塊;

pyecharts模塊;

matplotlib模塊;

以及一些Python自帶的模塊。

環境搭建

安裝Python并添加到環境變量,pip安裝需要的相關模塊即可。

本次通過對地鐵線路數據的獲取,對城市分布情況數據進行可視化分析。

分析獲取

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

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

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

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

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

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

獲取數據

具體代碼

import json
import requests
from bs4 import BeautifulSoup

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'}

def get_message(ID, cityname, name):
    """
    地鐵線路信息獲取
    """
    url = 'http://map.amap.com/service/subway?_1555502190153&srhdata=' + ID + '_drw_' + cityname + '.json'
    response = requests.get(url=url, headers=headers)
    html = response.text
    result = json.loads(html)
    for i in result['l']:
        for j in i['st']:
            # 判斷是否含有地鐵分線
            if len(i['la']) > 0:
                print(name, i['ln'] + '(' + i['la'] + ')', j['n'])
                with open('subway.csv', 'a+', encoding='gbk') as f:
                    f.write(name + ',' + i['ln'] + '(' + i['la'] + ')' + ',' + j['n'] + 'n')
            else:
                print(name, i['ln'], j['n'])
                with open('subway.csv', 'a+', encoding='gbk') as f:
                    f.write(name + ',' + i['ln'] + ',' + j['n'] + 'n')


def get_city():
    """
    城市信息獲取
    """
    url = 'http://map.amap.com/subway/index.html?&1100'
    response = requests.get(url=url, headers=headers)
    html = response.text
    # 編碼
    html = html.encode('ISO-8859-1')
    html = html.decode('utf-8')
    soup = BeautifulSoup(html, 'lxml')
    # 城市列表
    res1 = soup.find_all(class_="city-list fl")[0]
    res2 = soup.find_all(class_="more-city-list")[0]
    for i in res1.find_all('a'):
        # 城市ID值
        ID = i['id']
        # 城市拼音名
        cityname = i['cityname']
        # 城市名
        name = i.get_text()
        get_message(ID, cityname, name)
    for i in res2.find_all('a'):
        # 城市ID值
        ID = i['id']
        # 城市拼音名
        cityname = i['cityname']
        # 城市名
        name = i.get_text()
        get_message(ID, cityname, name)

if __name__ == '__main__':
    get_city()

獲取數據結果展示

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

3541個地鐵站點

數據可視化

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

from wordcloud import WordCloud, ImageColorGenerator
from pyecharts import Line, Bar
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import jieba

# 設置列名與數據對齊
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
# 顯示10行
pd.set_option('display.max_rows', 10)
# 讀取數據
df = pd.read_csv('subway.csv', header=None, names=['city', 'line', 'station'], encoding='gbk')
# 各個城市地鐵線路情況
df_line = df.groupby(['city', 'line']).count().reset_index()
print(df_line)

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

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

183條地鐵線路

def create_map(df):
    # 繪制地圖
    value = [i for i in df['line']]
    attr = [i for i in df['city']]
    geo = Geo("已開通地鐵城市分布情況", title_pos='center', title_top='0', width=800, height=400, title_color="#fff", background_color="#404a59", )
    geo.add("", attr, value, is_visualmap=True, visual_range=[0, 25], visual_text_color="#fff", symbol_size=15)
    geo.render("已開通地鐵城市分布情況.html")


def create_line(df):
    """
    生成城市地鐵線路數量分布情況
    """
    title_len = df['line']
    bins = [0, 5, 10, 15, 20, 25]
    level = ['0-5', '5-10', '10-15', '15-20', '20以上']
    len_stage = pd.cut(title_len, bins=bins, labels=level).value_counts().sort_index()
    # 生成柱狀圖
    attr = len_stage.index
    v1 = len_stage.values
    bar = Bar("各城市地鐵線路數量分布", title_pos='center', title_top='18', width=800, height=400)
    bar.add("", attr, v1, is_stack=True, is_label_show=True)
    bar.render("各城市地鐵線路數量分布.html")


# 各個城市地鐵線路數
df_city = df_line.groupby(['city']).count().reset_index().sort_values(by='line', ascending=False)
print(df_city)
create_map(df_city)
create_line(df_city)

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

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

32個城市開通地鐵

城市分布情況

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

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

線路數量分布情況

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

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

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

哪個城市哪條線路地鐵站最多

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

北京10號線第一,重慶3號線第二

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 


Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

去除重復換乘站的數據

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

包含3034個地鐵站

減少了近400個地鐵站

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

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

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

武漢居然有那么多地鐵站

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

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

def create_wordcloud(df):
    """
    生成地鐵名詞云
    """
    # 分詞
    text = ''
    for line in df['station']:
        text += ' '.join(jieba.cut(line, cut_all=False))
        text += ' '
    backgroud_Image = plt.imread('rocket.jpg')
    wc = WordCloud(
        background_color='white',
        mask=backgroud_Image,
        font_path='C:WindowsFonts華康儷金黑W8.TTF',
        max_words=1000,
        max_font_size=150,
        min_font_size=15,
        prefer_horizontal=1,
        random_state=50,
    )
    wc.generate_from_text(text)
    img_colors = ImageColorGenerator(backgroud_Image)
    wc.recolor(color_func=img_colors)
    # 看看詞頻高的有哪些
    process_word = WordCloud.process_text(wc, text)
    sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)
    print(sort[:50])
    plt.imshow(wc)
    plt.axis('off')
    wc.to_file("地鐵名詞云.jpg")
    print('生成詞云成功!')


create_wordcloud(df_station)

展示詞云圖

Python爬蟲實戰,pyecharts模塊,Python實現中國地鐵數據可視化

 

想要的可以后臺私信我666

Python零基礎精選干貨學習文檔

Python實操項目案例

Python電子書300本

精選零基礎到大神學習路線

以上就是我的分享,如果有好的建議可以與我交流,感謝觀看

分享到:
標簽:爬蟲 Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定