用Python数据分析选购手机,双十一刚过你选对了嘛
前言
文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。
作者: shenzhongqiang
PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取
python免費學習資料以及群交流解答點擊即可加入
分析思路
思路很簡單,上京東商城把所有手機的數據爬下來,然后根據配置、價格過濾出符合條件的手機,在過濾出來的手機里選擇一部性價比最高的。畫成流程圖,大致是這樣的
爬取數據
第一步,我們先從京東商城爬取所有在售的手機數據。這里我們關心的主要是價格和配置信息,商品頁面上的價格和配置信息像下面兩張圖所示
我們編寫代碼爬取所有手機的價格和配置信息,爬蟲的核心代碼如下
需要注意的是,上面的get_price和get_item函數分別從兩個url獲取數據,這是因為配置信息可以直接從商品頁面中解析得到,而價格信息需要從另外一個ajax請求里獲得。爬下來的所有數據存入MongoDB。
過濾數據
爬下來的手機數據當中,信息完整的共有4700多條數據,這4700多部手機屬于70個手機品牌。 這些品牌畫成詞云圖是這樣的
手機的配置主要有以下這些參數
- 是否雙卡雙待
- 機身材質
- CPU型號
- 內存大小
- 存儲容量
- 電池容量
- 屏幕材質
- 屏幕大小
- 分辨率
- 攝像頭
平時用手機主要是看看書、刷刷知乎微信、買買東西,所以選購新手機的時候最關心的就是速度、容量、待機時間這幾項,對攝像頭、屏幕材質倒不是特別在乎??紤]以上因素,在對數據做過濾的時候,我設定了以下幾個條件
- CPU的品牌是高通
- 內存大小大于等于6GB
- 存儲容量大于等于64GB
- 電池容量大于3000mAh
- 必須是雙卡雙待
- 價格在1500元以內
過濾數據的代碼如下
client = pymongo.MongoClient() db = client[DB] items = db.items.find({}) result = preprocess(items) df = pd.DataFrame(result) df_res = df[df.cpu_brand=="驍龍(Snapdragon)"][df.battery_cap >= 3000][df.rom >= 64][df.ram >= 6][df.dual_sim == True][df.price<=1500] print(df_res[["brand", "model", "color", "cpu_brand", "cpu_freq", "cpu_core", "cpu_model", "rom", "ram", "battery_cap", "price"]].sort_values(by="price"))首先從MongoDB里讀取數據,然后創建DataFrame,對DataFrame里的數據按照上面的條件作選擇。代碼的最后一行將篩選出來的手機打印出來,并按價格從低到高排序。
經過了這樣一輪篩選后,我們得到了下面的38款手機
上面的幾部手機配置都比較接近,但是網上對小米的評價普遍比較高,于是又在上面的列表里篩選出了所有的小米手機,得到下面7款
這里就變成了紅米Note5和小米6X的PK了。價格上,兩者不差上下。配置方面,網上查到紅米Note5的cpu是驍龍636的(上面的表格里缺少紅米Note5的cpu型號),相比小米6X的驍龍660,636雖然性能上不如660,但更省電,而且考慮到紅米Note5 4000毫安的超大容量電池,最后決定了購買紅米Note 5這一款。作為一款千元機,驍龍636八核CPU、6G大內存、64G大存儲、5.99英寸大視野全面屏、前置相機+后置雙攝、超長的待機時間,這款手機大概算是千元機中的機皇了。
總結
以上是生活随笔為你收集整理的用Python数据分析选购手机,双十一刚过你选对了嘛的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pr:导出设置之编码设置
- 下一篇: 超级好用的国际汇兑平台--Transfe