Python告诉我巴黎的地铁线路有多不靠谱!

来源:互联网 发布:chinanet连接软件 编辑:程序博客网 时间:2024/04/20 06:05

專 欄


熊本一身白,Python中文社区专栏作者,现居巴黎,不会说法语的金融狗不是好码农。
个人主页: https://www.zhihu.com/people/zhang-tai-lai

写在前面:

巴黎的轨道交通,无论地铁还是RER,都是每个留法学生心中永远的痛。破旧的车厢和尿骚味的站台都可以咬牙接受,但时不时就取消的列车,莫名晚点的地铁都令作者内心千万草泥马奔腾。

那么问题来了,巴黎哪个线地铁/轨道交通是烂王之王?哪几个站是事故高发站?到底晚点是因为啥?

(吸取前篇文章的教训,代码尽量少写了,反正也没人care……)


前期准备 - 数据从哪儿来?

作者试图在RATP和SNCF的官网上寻找相关数据,未果。

试图寻找巴黎很流行的导航软件citymapper的分析报告,找到数据源,未果。

于是,作者采取了最原始,也直接的方法,直接用爬虫爬各个线路的twitter账户。(如下图)



最后得到了“茫茫”多的数据。(5条铁路线路,14条地铁线路)



  • Fun Fact 1: 大家猜下,RER A的推文中被转发最多的什么信息?施工结束?罢工结束?不不不,是一条狗被找到了……


1996个转发……好吧,就是这位兄台,变成了网红……


数据清洗

  • 去掉无关信息:仔细观察twitter内容,熊本君发现,各个线路的小编除了机械的发布轨道交通状况,还会回答网友问题(居然!),还会跟大家说早上好,晚上好。


相比A,B线,CDE更加便于筛选,所有跟轨道交通有关的信息都会加 #Infotrafic的hashtag。


  • 缩略词等拼写:再仔细分析,会发现推文的内容有时候会用pte代替porte,chateau代替Château。这些需要统一写法。


这个clean_data写的好啰嗦 :(


现在我们来看看最后的dataframe (2014-1-1 to 2017-10-13)



数据分析(Exploratory data analysis)

数据已经有了,下面试图回答几个问题:

  • 巴黎的地铁/铁路交通晚点/取消是不是越来越频繁了? 答案:是的!



这里面四季度的下降完全是因为data在10月中就截至了。整体来看,我们能发现,每年的tweets数量都在上升,而且有很明显的seasonality, 二季度,四季度高,一三季度低。


独领风骚的就是我们万恶的A线和B线 (上图去除了10月份的数据)


做一下线路分解,发现其实符合周期性,每况愈下的是A线和B线,其他线路状况还比较稳定(虽然也越来也不靠谱……)

  • A线到底是不是最烂的线路? 答案:是的!



  • 哪几个站是烂中之最?

笔者接下来导入了巴黎所有的地铁站名(这个ratp官网上还是有的),然后写一个function



最后得到的结果是:



让我们将RER与metro拆开,并加入地理位置(鸣谢队友小凤,找不到你知乎账号了囧)


可以说是大站必入榜了可以,这很巴黎


既然地铁/轨道交通这么烂,那么问题来了?这到底是为啥呀?


可疑包裹?罢工?机械故障?笔者本着刨根到底的态度做了以下分析:


这个写的好low,有好建议的小伙伴请私戳我


然后笔者随便试了下RER C线,效果显著 (各种黑人问号)


personnes sur les voies直译是“轨道上有人”,那么隐含意是“卧轨”?另外朝车厢/铁轨扔石子的行为统统应归到acte de malveillance(恶意行为)里。可以,法国人真的厉害了。


重新将bagage oublié, bagage abandonné并入同一组,将一系列的扔石子等行为并入另一组后得到下图


意料之中,“可疑包裹”(巴黎恐袭之后将一切没人要的行李统称为可疑包裹)是交通晚点的最主要原因,“生病的乘客”和“技术故障”紧随其后。


总结:

  • RER A推文中被转发次数最多的是一条被找到的狗

  • RER A与RER B是巴黎最容易晚点/取消的两条线路

  • 晚点的最主要原因是可疑包裹

  • Nation,巴黎北站等几个地铁大站是事故频发地

  • 另外,笔者也是实在想不通为啥有那么多生病的乘客,卧轨,和朝车厢扔石子的(真的不理解!大家消停过日子不好吗!)

谜一样的交通,谜一样的巴黎人。就这样吧,最后祝愿所有人都能成为RER survivor。诸君共勉,闪了~




长按扫描关注Python中文社区,

获取更多技术干货!

    

Python 中 文 社 区

Python中文开发者的精神家园

合作、投稿请联系微信:

pythonpost

— 人生苦短,我用Python —
1MEwnaxmMz7BPTYzBdj751DPyHWikNoeFS