城市交通数据分析——以西安地铁为例

1、研究内容 

本文主要分析2023年3月-2024年1月西安地铁客流数据。主要内容有以下两方面:

2、数据采集

2.1.确定数据源

本文采用的数据源是微博官网中西安地铁,客流数据。此数据为西安地铁官网数据,具有准确性和时效性。

2.2.数据采集工具介绍

Web Scraper是一款浏览器插件,主要用于简单的数据爬取,一定程度上可以代替selenium,减少代码编写。它是一款免费的,适用于普通用户的爬虫工具,可以方便的通过鼠标和简单配置获取网页上的内容,如文字、链接、图片、表格等,无需写一行代码。

Web Scraper的安装步骤如下:

1.打开Chrome浏览器设置,找到扩展程序。

2.打开浏览器开发者模式。

3.crx的后缀名改为zip格式并解压。

4.点击拓展程序里面的按钮加载已解压的拓展程序

5.成功部署Web Scraper

具体操作参考:http://t.csdnimg.cn/9QOu2

2.3.数据爬取

采用Web Scraper框架爬取微博页面中的西安地铁客流数据。

注意:Web Scraper插件是装在谷歌浏览器中的,但是谷歌浏览器中搜索关键字无法加载界面,可以采用本地浏览器,进入微博官网,搜索西安地铁,找到如下如页面。

然后­­复制URL地址:微博搜索 (weibo.com),之后打开谷歌浏览器,在地址栏中粘贴复制的网址,即可进入我们所要查找的界面。

1.本地浏览器微博页面如下图所示:

 

 2.打开谷歌浏览器,在地址栏粘贴复制的网址并打开

https://s.weibo.com/weibo?q=%23%E5%AE%A2%E6%B5%81%E6%95%B0%E6%8D%AE%23&page=1

3.打开开发者工具

4.在开发者工具中,可以看到Web Scraper一栏。

5.点击Creat new sitemap,然后点击create sitemap,创建一个新项目。

6.创建一个选择器

注意:选中模块后点击DoneSelecting

Multiple后面需要选上,大致意思为可以多个选择

然后点击save selector保存

7.点击XASubway,继续创建selector

注意:因为我们需要的信息(文本内容)在一个模块中,所以此处设置一个selector即可,如果爬取别的网页(如需要价格、名称、销售量等,可以设置多个二级选择器)

8.点击selector graph,可以查看我们创建的节点目录

8.爬取

9.爬取完成

10.由于我们没有设置爬取范围,所以只爬取到了第一页的数据,观察网址,我们发现此网址较为规律,可以通过设置start url来实现多页爬取

11.修改完成后,进行保存,然后进行爬取,方法同上,爬取完成后,点击刷新,发现数据已经采集到了,如下图所示:

12.将爬取的文件存储到本地

3、数据预处理

3.1.Excel处理数据

1.打开存在本地的csv文件,删除多余的列和行,只需保留“文本内容”即可

2.删除掉多余的列与行之后,我们发现所需的数据都在一列,接下来进行分列处理。

3.选中A列,点击工具栏中的分列。

4.分列有两种方式,分隔符号和固定宽度,这里比较简单,注意分列时候,此列的后面要插入新一列,来存放分列后的数据,具体操作此处省略。

5.处理完成后,给数据添加列标题,结果如下图所示:

16号线这一列有空值,是因为16号线为2023年6月份新开通的线路,所以前期没有数据正常。

3.1.Jupyter Notebook处理数据

为了确保数据正常,我们在jupyter notebook中进行重复值、异常值等问题的检测与处理。以下是简单介绍:

Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言

Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享程序文档,支持实时代码,数学方程,可视化和 markdown 用途包括:数据清理和转换,数值模拟统计建模机器学习等等。

进入软件:

简单操作:

a.键盘输入模式

Jupyter Notebook 有两种键盘输入模式。

编辑模式,允许用户往单元中键入代码或文本;这时的单元框线是绿色的。

命令模式,键盘输入运行程序命令;这时的单元框线是灰色。

b.常用快捷键

Shift+Enter : 运行本单元,选中下个单元

Ctrl+Enter : 运行本单元

Alt+Enter : 运行本单元,在其下插入新单元

Y:单元转入代码状态

M:单元转入markdown状态

A:在当前单元格上方插入新单元格

B:在当前单元格下方插入新单元格

X:剪切选中的单元

Shift + V:在上方粘贴单元

1.首先导入科学计算库Numpy和数据分析库Pandas

import pandas as pd

import numpy as np

读取数据

XA_data= pd.read_csv(r'D:/学习/大数据分析及应用/西安地铁人流数据/BigDataSubway.csv')

XA_data

 

2.使用duplicated()检测cy_data中的数据,返回True的表示是重复数据,并统计每列重复值个数,显示0,表示不存在重复数据,下图显示有两个重复值

XA_data.duplicated().sum()

3.查看哪些行的数据是重复的

XA_data[XA_data.duplicated()]

4.删除重复行

XA_data1=XA_data.drop_duplicates()

XA_data1

5.通过describe()方法计算描述统计信息,包括数据汇总(count),标准差(std)等

XA_data1.describe()
 

 

4、数据存储

4.1.数据存储在本地

将处理完的数据存入本地

XA_data1.to_excel(r'D:/学习/大数据分析及应用/西安地铁数据(处理后).xlsx')

4.2.数据存储在MySQL

1.通过pycharm读取并将数据存储到MySQL

# 读取CSV文件
import pandas as pd
from sqlalchemy import create_engine

data = pd.read_csv("D:\学习\大数据分析及应用\西安地铁人流数据\西安地铁数据(处理后).csv")  # 从CSV文件中读取数据

# 创建数据库连接
# 格式: engine = create_engine('mysql+pymysql://<username>:<password>@<host>/<database>')
engine = create_engine('mysql+pymysql://root:123456@localhost/xiansubway')  # 创建一个连接到MySQL数据库的引擎

# 将数据写入数据库
# 注意: 'table_name' 需要替换为你想要写入的表名,if_exists='replace' 意味着如果表存在,则替换该表,追加append
data.to_sql('xiansubwaydata', con=engine, index=False, if_exists='replace')  # 将数据写入数据库中的指定表
 

2.在navicat中连接MySQL查看数据

 

5、数据可视化与分析

1.利用pyecharts绘制玫瑰饼图,分析西安地铁2023年6月2日到2024年1月2日各路线乘客占比,可以看出2号线乘客最多,占比最大,达到25.21%,西户线占比最小,为0.16%。

from pyecharts.charts import Pie
from pyecharts import options as opts

cate = ["一号线","二号线","三号线","四号线","五号线","六号线","九号线","十四号线","十六号线","西户线"]
data = [7922.35,12825.61,8554.88,7665.67,4500.93,6719.97,1296.96,1021.95,277.33,80.21] 


c=(
    Pie(init_opts=opts.InitOpts(width='700px',height='320px'))
    .add('',[list(z) for z in zip(cate, data)],center = ['50%', '60%'],radius=["30%","70%"],rosetype="radius")
    .set_global_opts(legend_opts=opts.LegendOpts(type_="scroll",pos_left="right", pos_top="middle",orient="vertical"))
    .set_global_opts(title_opts=opts.TitleOpts(title="西安地铁23年6月2日-24年1月2日各路线乘客占比", pos_top = '5%', pos_left = '20%')) 
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
    )

c.render_notebook()

 

 2.利用matplotlib绘制西安地铁人流数据趋势图,可以发现2号线客流量一直遥遥领先,最高单日客流接近120万人次。可以发现16号线数据只有一半,是因为16号线是23年6月下旬开通的。

3.利用tableau绘制西安地铁总客流量柱形图并排序,发现2023年4月15日西安地铁达到最高值,当天地铁客流达到463.9万人。分析原因,2023年4月15日当天,张杰在西安开演唱会。

6、数据预测分析

利用Excel制作一个简单的西安地铁总客流数据预测。其中包括现有数据,预测数据趋势,及置信上限和置信下限。

 预测图

7、总结

       分析数据及采用方法仅供参考学习,文中存在诸多不足,如有疑问或好的建议,请大家和我多多沟通,共同学习。

 

 

 

  • 31
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Luckydog-R

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值