13 Eylül'de piyasaya sürülen iPhone X'ler, cep telefonu endüstrisindeki büyük haber olarak kabul ediliyor ve yeni iPhone'un fiyatı, cep telefonu fiyatlandırmasında bir kez daha yeni bir rekor kırdı. Basın toplantısını izledikten sonra, birçok insanın böyle hissettiğine inanıyorum ...
Daha önce iPhone 6 kullandım ve yakın zamanda telefonumu değiştirmek üzereyim. Ekonomik durum ciddidir ve iPhone'u değiştirmeye gücüm yetmez, bu yüzden yalnızca eski sürüme geçebilir ve Android kampına gidebilirim.
1.500 yuan bütçe ile ikinci el bir iPhone bile satın alamazsınız, ancak Android makinede birçok seçenek var. Bu yazıda, cep telefonu satın almak için veri analizinin nasıl kullanılacağına bir göz atacağız.
fikir analizi
Fikir çok basit: Tüm cep telefonu verilerini taramak için Jingdong Alışveriş Merkezi'ne gidin ve ardından konfigürasyona ve fiyata göre nitelikli cep telefonlarını filtreleyin ve filtrelenmiş cep telefonları arasından en uygun maliyetli cep telefonunu seçin. Kabaca şu şekilde bir akış şeması çizin:
Verileri tara
İlk adımda ilk olarak Jingdong Mall'dan satışta olan tüm cep telefonu verilerini tarıyoruz. Burada esas olarak fiyat ve konfigürasyon bilgileriyle ilgileniyoruz.Ürün sayfasındaki fiyat ve konfigürasyon bilgileri aşağıdaki iki resimde gösterildiği gibidir:
Tüm cep telefonlarının fiyat ve yapılandırma bilgilerini taramak için kod yazıyoruz. Tarayıcının temel kodu aşağıdaki gibidir:
# Bir cep telefonu ürününün fiyatını alın def get_price (skuid): url = "https://c0.3.cn/stock?skuId=" + str (skuid) + "alan = 1_72_4137_0venderId = 1000004123cat = 9987,653,655buyNum = 1choseSuitSkuIds = extraParam = {% 22originid% 22:% 221% 22 } ch = 1fqsp = 0pduid = 15379228074621272760279pdpin = detailedAdd = nullcallback = jQuery3285040 " r = istekleri.get (url, doğrula = Yanlış) content = r.content.decode ('GBK') eşleşti = re.search (r'jQueryd + ((. *)) ', içerik, re.M) eşleşirse: data = json.loads (matched.group (1)) price = float (veri) iade fiyatı dönüş 0 # Telefonun yapılandırma bilgilerini alın def get_item (skuid, url): fiyat = get_price (skuid) r = istekleri.get (url, doğrula = Yanlış) content = r.content root = etree.HTML (içerik) düğümler = root.xpath ('.// div / div') parametreler = {"fiyat": fiyat, "skuid": skuid} düğümlerdeki düğüm için: text_nodes = node.xpath ('./ dl') k = "" v = "" text_nodes içindeki text_node için: text_node.tag == "dt" ise: k = text_node.text elif text_node.tag == "dd" ve "class" text_node.attrib'de değil: v = text_node.text params = v dönüş parametreleri # Tüm telefon bilgilerini bir sayfada alın def get_cellphone (sayfa): url = "https://list.jd.com/list.html?cat=9987,653,655page={}sort=sort_rank_asctrans=1JL=6_0_0ms=4#J_main".format(page) r = istekleri.get (url, doğrula = Yanlış) content = r.content.decode ("utf-8") root = etree.HTML (içerik) cell_nodes = root.xpath ('.// div / a') client = pymongo.MongoClient () db = müşteri hücre_odlarındaki düğüm için: item_url = fix_url (node.attrib) matched = re.search ('öğe.jd.com/ (d +). html', öğe_url) skuid = int (matched.group (1)) kaydedilen = db.items.find ({"skuid": skuid}). count () kaydedildiyse > 0: yazdır (kaydedildi) devam et item = get_item (skuid, item_url) # Sonuç MongoDB'de saklanır db.items.insert (öğe)Yukarıdaki get_price ve get_item işlevlerinin sırasıyla iki URL'den veri elde ettiğine dikkat edilmelidir.Bunun nedeni, yapılandırma bilgilerinin doğrudan ürün sayfasından ayrıştırılabilmesi ve fiyat bilgilerinin başka bir ajax isteğinden alınması gerektiğidir. Tırmanılan tüm veriler MongoDB'de saklanır.
Verileri filtrele
Azalan cep telefonu verileri arasında, eksiksiz bilgi içeren 4700'den fazla veri parçası bulunmaktadır.Bu 4.700 cep telefonu, 70 cep telefonu markasına aittir. Bu markalar şu şekilde kelime bulutlarına çekilir:
Cep telefonunun konfigürasyonu esas olarak aşağıdaki parametrelere sahiptir:
Kardeş Qiang genellikle kitap okumak, WeChat'i taramak ve bir şeyler satın almak için cep telefonunu kullanıyor, bu yüzden yeni bir cep telefonu alırken en çok hız, kapasite ve bekleme süresi ile ilgileniyor. . Verileri filtrelerken yukarıdaki faktörleri göz önünde bulundurarak aşağıdaki koşulları ayarlıyorum:
Verileri filtrelemek için kod aşağıdaki gibidir:
client = pymongo.MongoClient () db = müşteri öğeler = db.items.find ({}) sonuç = ön işlem (öğeler) df = pd.DataFrame (sonuç) df_res = df print (df_res.sort_values (göre = "fiyat"))Önce MongoDB'den verileri okuyun, ardından bir DataFrame oluşturun ve yukarıdaki koşullara göre DataFrame'deki verileri seçin. Kodun son satırı, seçilen cep telefonlarını yazdırır ve en düşükten en yükseğe doğru fiyata göre sıralar.
Böylesine bir taramadan sonra şu 38 cep telefonunu aldık:
Yukarıdaki cep telefonlarının yapılandırmaları nispeten benzerdir, ancak Xiaomi'nin İnternet üzerindeki değerlendirmesi genellikle nispeten yüksektir, bu nedenle yukarıdaki listede yer alan tüm Xiaomi telefonlarını filtreledim ve aşağıdaki 7 modeli aldım:
Bu, Redmi Note5 ve Xiaomi 6X'in PK'sı haline geldi. Fiyat açısından ikisi fena değil. Yapılandırma açısından, İnternette bulunan Redmi Note 5'in CPU'su Snapdragon 636'dır (yukarıdaki tablo Redmi Note 5'in cpu modelinden yoksundur). Xiaomi 6X Snapdragon 660 ile karşılaştırıldığında 636, performans olarak 660 kadar iyi değil, ancak daha fazla güç verimli. Redmi Note 5'in 4000 mAh bataryasını da göz önünde bulundurarak sonunda Redmi Note 5 almaya karar verdim. Bin yuan telefon, Snapdragon 636 sekiz çekirdekli CPU, 6G geniş bellek, 64G geniş depolama, 5,99 inç geniş görüş alanı tam ekran, ön kamera + arka çift kamera, uzun bekleme süresi, bu telefon muhtemelen bin Yuan makinesinin imparatoru.
Yazar: Güçlü kardeş, kıdemli Python programcısı, Morgan Stanley ve ebay'de çalıştı, sürüngenler, Web geliştirme, veri analizi konusunda uzmanlaşmıştır.
Bu makale yazarın katkılarıyla hazırlanmıştır ve CSDN'nin konumunu temsil etmez.
"Belgeler için çağrı"
CSDN kamu hesabı, "on milyonlarca teknik insanla büyüme" kavramını destekler. Teknik insanların ilk kez ilgilendiği endüstri odak olaylarını teknik insanların benzersiz bakış açılarından açıklamak için yalnızca "inek başlıkları" ve "konuşma" sütunlarını kullanmakla kalmaz, aynı zamanda "Teknik Başlıklar" sütunu, sektördeki popüler teknolojilerin ve uygulamaların derinlemesine bir yorumunu sunarak, tüm geliştiricilerin teknolojik trendlere ayak uydurmasına, uyanık bir teknolojik anlayışı sürdürmesine ve sektör eğilimleri ve teknolojileri hakkında daha kapsamlı bir anlayışa sahip olmasına olanak tanır.
Yüksek kaliteli makaleleriniz veya endüstrinin sıcak olayları, teknoloji trendleri hakkında içgörüler veya derinlemesine uygulama uygulamaları, senaryolar vb. Hakkında yeni içgörüleriniz varsa, lütfen gönderimler için CSDN ile iletişime geçin. İletişim: WeChat (guorui_1118, lütfen gönderim + ad + şirket pozisyonunu not edin), e-posta (guorui@csdn.net).