Python | 一萬多條拼車資料,看春運的遷徙圖
作者 | 白蘇,醫療健康領域產品經理一枚,Python&R愛好者
來源 | InThirty
編輯 | Jane
今天是臘月二十八,你們都到家了嗎?這篇文章,作者對北京、上海、廣州、深圳、杭州等地 1萬多條出行資料進行分析,得出了一些有意思的結論,並且繪製了這幾個城市春運的遷移圖。雖然資料在取樣公平性上不能完全符合標準,但是思路還是值得大家學習參考的~
目錄
前言
統計結果
爬蟲思路
統計思路
後記
前言
很早之前發過一篇關於某拼車平臺爬蟲的文章,因為工作比較忙,一直沒有下文。最近年底稍微空了些,加上碰上春節返鄉大潮,剛好再拿過來寫一下資料分析的思路。
本次資料樣本共13041條,本別採集了北京、上海、廣州、深圳、杭州的某一天出行資料,由於手動操作難以保證取樣的公平性,所以不能對全部資料結果的準確性做保證,本文以提供思路參考為主,先放一張路線圖:
統計結果
好了知道大家比較關心結果,所以先把結果放一放,後面再接著講分析過程。
乘客性別
先單獨把性別拎出來看一下,後面再根據城市進行分析,結果顯示,拋開未設定性別的乘客不論,總體來看順風車的使用者群中,男性(佔比 49.39%)還是多於女性(佔比 31.55%)的。畢竟跨城順風車,大過年的,女性乘客對於安全性的憂慮還有要有的。
城市訂單
真實資料的話訂單數量應該是深圳 > 北京 > 廣州 > 上海 > 杭州,但是同一個城市內的乘客性別比例應該還是具有一定的參考價值的,可以看到北京、上海、深圳的女性乘客數量佔比都是高於男性的。
客單價
原本是想比較一下平均路程長度,但是想想這個事情太折騰了,由於平臺主要還是依靠路程來計算拼車費用的,所以通過計算客單價的話大概也能反映一下平均形成長度(我猜的,然後結果是這樣的,沒想到廣州是最高的,也可能是我統計錯誤
哪裡乘客最壕
有時候有些偏遠地區訂單或者順路司機少,乘客會加價希望司機接單,於是統計了一下各城市加價訂單的佔比和平均的加價額度,得出如下結果:
佔比最高的城市是深圳,平均加價額度最高的城市也是深圳,看來深圳的小哥哥小姐姐們的確出手闊錯,然而加價比例最低的是北京,不過這也不能說明帝都人民不壕氣,可能就是人家繁華,司機多。
返鄉路線圖
最後放幾張返鄉的路線圖
北京
上海
廣州
深圳
杭州
杭州明顯有別與其它幾個城市,一個是杭州的資料樣本多,另外一個平臺上杭州黃牛多,那些最遠的單子就是黃牛廣告單
爬蟲思路:註冊成為司機,利用 mitm 抓包儲存拼車單
統計思路:資料的話我是通過本地 Mongodb 儲存,所以直接用 python 操作 Mongodb 資料
Pymongo:關於 Mongodb 資料庫的連線,直接上程式碼:
client = MongoClient('mongodb://localhost:27017')
spring = client.spring
collection = spring['orders']
以上程式碼的意思就是連線本地 Mongodb-spring 資料庫 -orders 文件集合
Pyecharts:是大名鼎鼎的 Echarts 的 Python 視覺化圖表庫,用起來挺順手的,而且文件規範,基本上可以零門檻入門,具體實現請移步文件。
Pyecharts(http://pyecharts.org)
這裡介紹一下關於 Pyecharts 的圖表樣式配置,為了保持各圖表的樣式統一(偷懶),Pyecharts 提供了一個 Style 類,可用於在同一個圖或者多個圖內保持統一的風格
rom pyecharts import Style,Geo
style = Style(
title_color="#fff",
title_pos="center",
width=1100,
height=600,
background_color='#404a59'
)
# style.init_style 會返回類初始化的風格配置字典
geo = Geo("全國主要城市空氣質量", "data from pm2.5", **style.init_style)
程式碼解讀
因為全部程式碼有點長,所以抽了一段舉個例子,主要思路就是從 Mongodb 取出指定資料,或者通過 $group 管道對資料進行處理,最後通過 pyecharts 生成相應的圖表,呈現
from pymongo import MongoClient
from pyecharts import Style,GeoLines
def getLines(self):
# 連線資料庫
client = MongoClient('mongodb://localhost:27017')
spring = self.client.spring
collection = self.spring['orders']
# Mongodb的操作,$match-篩選出'from_poi.city.city_name'為'杭州'的文件,
# 再通過$group管道,按照目標城市統計出彙總數量
line_hangzhou = collection.aggregate([
{'$match': {'from_poi.city.city_name': '杭州'}},
{'$group': {'_id': '$to_poi.city.city_name', 'count': {'$sum': 1}}}
])
# 按照Geolines圖表的資料格式格式化資料
line_hangzhou_ = []
for line in line_hangzhou:
line_hangzhou_.append(["杭州", line['_id'], line['count']])
# 建立一個GeoLines圖表
citylines = GeoLines("春節遷移路線圖", **style.init_style)
# 新增資料以及樣式
citylines.add("從杭州出發",
line_hangzhou_,
**geo_style)
# 生成html檔案
citylines.render("results/citylines.html")
後記
這是一篇遲到很久的文章,本來沒打算再寫,但是總覺得下半部分沒寫完心裡有個結,所以還是抽時間補上。另外作為一個非專業技術人員,多記多練免得過幾天自己就忘了。原始碼的話抽空傳 GitHub,有需要可以後臺留言。
推薦閱讀
點選“閱讀原文”,開啟CSDN APP 閱讀更貼心!
相關文章
- 百度地圖:2021年春運返鄉遷徙規模同比下降50%地圖
- Django 遷徙資料庫 失敗Django資料庫
- 全國新版列車執行圖今天啟用!春運火車票能“撿漏”
- 程式猿生存指南-45 遷徙的鳥
- 系統的遷徙---王紋 孫健
- 零和博弈下的城市戰爭:房地產大資料之人口遷徙篇大資料
- 記一次列表載入超一萬條資料優化優化
- sql 多組條資料取最新的一條資料SQL
- 用Python分析《工作細胞》的一萬多條評論後,非漫迷也要入番了Python
- 滴滴全民拼車日背後的運維技術揭秘運維
- 人口研究 | 地產大資料之人口遷徙 零和博弈下的城市戰爭大資料
- 奧運收視重心“遷徙”網際網路 寬頻運營商新考驗
- python簡單資料型別筆記一萬物皆數Python資料型別筆記
- 各國如何破解”春運”難題–資訊圖
- MyBatis 查詢資料時屬性中多對一的問題(多條資料對應一條資料)MyBatis
- 【PyTHON】redis資料遷移PythonRedis
- 個推春運資料包告:春運前七天“返鄉過年”人數同比下降超五成
- 負利率時代 DeFi 會是資本向加密貨幣遷徙的燎原星火嗎?加密
- 圖靈圖書伴你春運回家路 旅途中的輕鬆讀物圖靈
- Python資料分析入門(十七):繪製條形圖Python
- 【PowerQuery】如何一行程式碼搞定,做了一萬遍的工資條行程
- 從底層資料庫遷移看CQRS的好處資料庫
- 用一條mysql語句插入多條資料MySql
- 如何用Python做三階拼圖?Python
- 2016年鐵路春運大資料:節前全國鐵路出行熱度圖大資料
- 交通運輸部:2020年春運客流預測大資料分析大資料
- ***python看圖軟體***(+-切換資料夾,d刪除所在資料夾)Python
- EF 中多個資料庫遷移資料庫
- postgresql 多條記錄合併一條,或取最新的一條資料SQL
- 199IT資料工具眾覽第二期:百度遷徙&實時交通
- 一個囊括很多拼圖遊戲的Python網站遊戲Python網站
- 支援多種資料庫型別的遷移工具資料庫型別
- 用python進行資料庫資料遷移Python資料庫
- 用Python做一個三階拼圖。Python
- python修改運動資料的方法Python
- 大資料看冬奧會–資訊圖大資料
- 透過10億條招聘資料看大資料職位需求大資料
- 運維效率之資料遷移自動化運維