Python分析1585家電商車?yán)遄訑?shù)據(jù):上海率先實現(xiàn)“車?yán)遄幼杂伞?,銷量超北京近50倍

大數(shù)據(jù)文摘授權(quán)轉(zhuǎn)載自菜J學(xué)Python
作者:J哥
眾所周知,中國是智利車?yán)遄幼钪饕某隹趯ο?,占?jù)了其95%的市場份額。
智利駐華大使館商務(wù)參贊娜塔曾表示:“2020-2021產(chǎn)季車?yán)遄訉崿F(xiàn)了豐收,預(yù)計今年有50萬噸左右的車?yán)遄舆M(jìn)入中國市場?!弊?020年12月中旬開始,智利海運(yùn)車?yán)遄雨懤m(xù)到達(dá)中國,運(yùn)輸成本較此前空運(yùn)方式大幅下滑。
這意味著,國內(nèi)消費(fèi)者將能以更低的價格買到車?yán)遄印H欢?,近日國?nèi)已有多地進(jìn)口車?yán)遄雍怂釞z測結(jié)果為陽性,在這種情況下,你還敢大呼“車?yán)遄幼杂伞眴幔?/span>
數(shù)據(jù)獲取
本文利用Python采集了淘寶網(wǎng)1585個商家車?yán)遄愉N售數(shù)據(jù),獲取到車?yán)遄拥纳唐访Q、商品價格、付款人數(shù)、店鋪名稱、發(fā)貨地址等字段。限于篇幅,爬蟲代碼僅給出主函數(shù):
def main():browser.get('https://www.taobao.com/')page = search_product(key_word)print(page)get_data()page_num = 70while int(page) != page_num:print("-" * 100)print("正在爬取第{}頁數(shù)據(jù)".format(page_num + 1))browser.get('https://s.taobao.com/search?q={}&s={}'.format(key_word, page_num*44))browser.implicitly_wait(10)get_data()page_num += 1print("數(shù)據(jù)抓取完成")if __name__ == '__main__':key_word = "車?yán)遄?browser = webdriver.Chrome("./chromedriver")main()
數(shù)據(jù)處理
import pandas as pdimport numpy as npdf = pd.read_csv('/菜J學(xué)Python/淘寶/車?yán)遄?csv',header=None,names=['商品名稱','商品價格','付款人數(shù)','店鋪名稱','發(fā)貨地址']) #添加字段名稱df.sample(5)

查看數(shù)據(jù)信息
df.info()Int64Index: 1595 entries, 0 to 1674Data columns (total 5 columns):# Column Non-Null Count Dtype--- ------ -------------- -----0 商品名稱 1595 non-null object1 商品價格 1595 non-null float642 付款人數(shù) 1595 non-null object3 店鋪名稱 1595 non-null object4 發(fā)貨地址 1585 non-null objectdtypes: float64(1), object(4)memory usage: 74.8+ KB
發(fā)現(xiàn)數(shù)據(jù)存在以下幾個問題:
(1)發(fā)貨地址有缺失值
(2)付款人數(shù)需做提取
(3)發(fā)貨地址需做分割
(4)自定義索引并降序
數(shù)據(jù)清洗
#剔除缺失記錄df.dropna(axis=0, how='any', inplace=True)#從發(fā)貨地址字段中切分出省份和城市df["省份"] = df["發(fā)貨地址"].str.split(' ',expand=True)[0] #expand=True可以把用分割的內(nèi)容直接分列df["城市"] = df["發(fā)貨地址"].str.split(' ',expand=True)[1] #提取城市df["城市"].fillna(df["省份"], inplace=True) #城市字段空值用省份非空值填充#用正則表達(dá)式從付款人數(shù)中提取數(shù)字import redf['數(shù)字'] = [re.findall(r'(\d+\.{0,1}\d*)', i)[0] for i in df['付款人數(shù)']] # 提取數(shù)值df['數(shù)字'] = df['數(shù)字'].astype('float') # 轉(zhuǎn)化數(shù)值型df['單位'] = [''.join(re.findall(r'(萬)', i)) for i in df['付款人數(shù)']] # 提取單位(萬)df['單位'] = df['單位'].apply(lambda x:10000 if x=='萬' else 1)df['付款人數(shù)'] = df['數(shù)字'] * df['單位'] # 計算付款人數(shù)df.drop(['發(fā)貨地址', '數(shù)字', '單位'], axis=1, inplace=True) # 刪除多余的列#按商品價格降序并重置索引df = df.sort_values(by="商品價格", axis=0, ascending=False) #降序df = df.reset_index(drop=True) #重置索引
清洗后,數(shù)據(jù)預(yù)覽如下:

數(shù)據(jù)可視化
在以往的數(shù)據(jù)可視化中,常常以Python可視化庫作圖。而本文將嘗試用Excel進(jìn)行車?yán)遄訑?shù)據(jù)可視化,因為在繪圖方面,Excel完全不輸Python!
國內(nèi)哪些地方車?yán)遄淤u的最火?

利用省份和付款人數(shù)字段數(shù)據(jù)制作地圖,發(fā)現(xiàn)上海、浙江和廣東等地車?yán)遄愉N售量最大,西藏、青海和內(nèi)蒙古銷量較小。沿海地區(qū)的經(jīng)濟(jì)和人口優(yōu)勢,成為車?yán)遄又饕南M(fèi)市場。

車?yán)遄幼鳛椤懊餍撬?,不菲的價格常常讓打工人望而卻步。根據(jù)國家統(tǒng)計總局發(fā)布的最新數(shù)據(jù),上海人均可支配收入居首,超過7萬元,自然更容易實現(xiàn)“車?yán)遄幼杂伞?。北京雖然收入較高,但可能受疫情影響較大,車?yán)遄愉N量并不多。

車?yán)遄拥降子卸噘F?

由上圖可知,40%的車?yán)遄觾r格在201-500元之間(淘寶掛牌價,非每斤價格),50元以下的車?yán)遄诱急炔坏?%,我表示有被貴到,你呢?如果你不嫌貴,那我?guī)湍阏业揭患?,可能符合你的需求,如下?/span>

哪些店鋪賣的最好?

從銷量較高的淘寶店鋪來看,基本都是旗艦店,看來大家對店鋪品牌度關(guān)注較多。福瑞達(dá)旗艦店月銷量超6萬,名副其實車?yán)遄愉N冠,百果園緊隨其后。
在售的車?yán)遄泳哂心男┨攸c?

為了了解車?yán)遄拥奶攸c,對商品名稱字段做了文本分析,以果籃為背景繪制了車?yán)遄釉~云圖。主要的特點還是可以看出來的,新鮮、智利、當(dāng)季、特大等詞都是水果店家推銷的點。至于孕婦提及頻率這么高,有點納悶,于是百度之:

那么問題來了,特殊時期,我們打工人能不能剁手買車?yán)遄??截至目前,根?jù)中國疾控中心公布的消息,目前并沒有發(fā)現(xiàn)因為食用進(jìn)口冷鏈?zhǔn)称范腥拘鹿诜窝椎牟±R虼藢τ谄胀ㄏM(fèi)者來說,無須過于恐慌。當(dāng)然如果你確實非常焦慮的話,疫情期間也可以多選擇國內(nèi)生產(chǎn)的食品。

