用Python数据分析选购手机,双十一刚过你选对了嘛
前言
文的文字及圖片來(lái)源于網(wǎng)絡(luò),僅供學(xué)習(xí)、交流使用,不具有任何商業(yè)用途,版權(quán)歸原作者所有,如有問(wèn)題請(qǐng)及時(shí)聯(lián)系我們以作處理。
作者: shenzhongqiang
PS:如有需要Python學(xué)習(xí)資料的小伙伴可以加點(diǎn)擊下方鏈接自行獲取
python免費(fèi)學(xué)習(xí)資料以及群交流解答點(diǎn)擊即可加入
分析思路
思路很簡(jiǎn)單,上京東商城把所有手機(jī)的數(shù)據(jù)爬下來(lái),然后根據(jù)配置、價(jià)格過(guò)濾出符合條件的手機(jī),在過(guò)濾出來(lái)的手機(jī)里選擇一部性價(jià)比最高的。畫成流程圖,大致是這樣的
爬取數(shù)據(jù)
第一步,我們先從京東商城爬取所有在售的手機(jī)數(shù)據(jù)。這里我們關(guān)心的主要是價(jià)格和配置信息,商品頁(yè)面上的價(jià)格和配置信息像下面兩張圖所示
我們編寫代碼爬取所有手機(jī)的價(jià)格和配置信息,爬蟲的核心代碼如下
需要注意的是,上面的get_price和get_item函數(shù)分別從兩個(gè)url獲取數(shù)據(jù),這是因?yàn)榕渲眯畔⒖梢灾苯訌纳唐讽?yè)面中解析得到,而價(jià)格信息需要從另外一個(gè)ajax請(qǐng)求里獲得。爬下來(lái)的所有數(shù)據(jù)存入MongoDB。
過(guò)濾數(shù)據(jù)
爬下來(lái)的手機(jī)數(shù)據(jù)當(dāng)中,信息完整的共有4700多條數(shù)據(jù),這4700多部手機(jī)屬于70個(gè)手機(jī)品牌。 這些品牌畫成詞云圖是這樣的
手機(jī)的配置主要有以下這些參數(shù)
- 是否雙卡雙待
- 機(jī)身材質(zhì)
- CPU型號(hào)
- 內(nèi)存大小
- 存儲(chǔ)容量
- 電池容量
- 屏幕材質(zhì)
- 屏幕大小
- 分辨率
- 攝像頭
平時(shí)用手機(jī)主要是看看書、刷刷知乎微信、買買東西,所以選購(gòu)新手機(jī)的時(shí)候最關(guān)心的就是速度、容量、待機(jī)時(shí)間這幾項(xiàng),對(duì)攝像頭、屏幕材質(zhì)倒不是特別在乎。考慮以上因素,在對(duì)數(shù)據(jù)做過(guò)濾的時(shí)候,我設(shè)定了以下幾個(gè)條件
- CPU的品牌是高通
- 內(nèi)存大小大于等于6GB
- 存儲(chǔ)容量大于等于64GB
- 電池容量大于3000mAh
- 必須是雙卡雙待
- 價(jià)格在1500元以內(nèi)
過(guò)濾數(shù)據(jù)的代碼如下
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里讀取數(shù)據(jù),然后創(chuàng)建DataFrame,對(duì)DataFrame里的數(shù)據(jù)按照上面的條件作選擇。代碼的最后一行將篩選出來(lái)的手機(jī)打印出來(lái),并按價(jià)格從低到高排序。
經(jīng)過(guò)了這樣一輪篩選后,我們得到了下面的38款手機(jī)
上面的幾部手機(jī)配置都比較接近,但是網(wǎng)上對(duì)小米的評(píng)價(jià)普遍比較高,于是又在上面的列表里篩選出了所有的小米手機(jī),得到下面7款
這里就變成了紅米Note5和小米6X的PK了。價(jià)格上,兩者不差上下。配置方面,網(wǎng)上查到紅米Note5的cpu是驍龍636的(上面的表格里缺少紅米Note5的cpu型號(hào)),相比小米6X的驍龍660,636雖然性能上不如660,但更省電,而且考慮到紅米Note5 4000毫安的超大容量電池,最后決定了購(gòu)買紅米Note 5這一款。作為一款千元機(jī),驍龍636八核CPU、6G大內(nèi)存、64G大存儲(chǔ)、5.99英寸大視野全面屏、前置相機(jī)+后置雙攝、超長(zhǎng)的待機(jī)時(shí)間,這款手機(jī)大概算是千元機(jī)中的機(jī)皇了。
總結(jié)
以上是生活随笔為你收集整理的用Python数据分析选购手机,双十一刚过你选对了嘛的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Pr:导出设置之编码设置
- 下一篇: 利用Python实现FGO自动战斗脚本