import pandas as pd import matplotlib.pyplot as plt # 標題詞根拆解 # 示例標題:兒童漢服女童中國風12歲夏季薄款超仙春秋齊胸襦長袖裙唐裝復古裝 # 標題拆解為詞根:兒童,漢服,女童,中國風,12,歲,夏季,薄款,超仙,春秋,齊胸,襦,長袖,裙,唐裝,復古裝 word = ['兒童','漢服','女童','中國風','12','歲','夏季','薄款','超仙','春秋','齊胸','襦','長袖','裙','唐裝','復古裝'] # 讀取一個星期商品手淘關鍵字詳情 stss = pd.read_excel('無線商品三級流量來源詳情.xls') # 讀取我們需要的資料 data = stss[['來源名稱','訪客數','收藏人數','加購人數','支付買家數']] # 創建一個空的表格 wordData = pd.DataFrame(columns = ['詞根','訪客數','收藏人數','加購人數','支付買家數']) # for str in word: data2 = data[data.來源名稱.str.contains(str)] data3 = data2[['訪客數','收藏人數','加購人數','支付買家數']] data3['詞根'] = str wordData = wordData.append(data3,ignore_index=True) wordData2 = wordData.groupby('詞根').sum() # 添加轉化率 wordData2['轉化率'] = wordData2['支付買家數']/wordData2['訪客數'] # 添加加購率 wordData2['加購率'] = wordData2['加購人數']/wordData2['訪客數'] # 添加收藏率 wordData2['收藏率'] = wordData2['收藏人數']/wordData2['訪客數'] print(wordData2) # 設置參數,以確保圖像正確顯示 #用來正常顯示中文標籤 plt.rcParams['font.sans-serif']='simhei' # 用來正常顯示負號 plt.rcParams['axes.unicode_minus']=False # 將詞根設置為x軸,訪客數、轉化率、加購率、收藏率設置為y軸 x=wordData2.index.values.tolist() y1=wordData2['訪客數'].values.tolist() y2=wordData2['轉化率'].values.tolist() y3=wordData2['加購率'].values.tolist() y4=wordData2['收藏率'].values.tolist() # 設置畫布大小 # 表示圖片的大小為寬8inch、高6inch(單位為inch) plt.figure(figsize=(8,6)) # 繪製直條圖 plt.bar(x,y1) # 設置標題以及x軸標題,y軸標題 plt.xlabel('詞根') plt.ylabel('訪客數') # 設置數字標籤 for a,b in zip(x,y1): plt.text(a,b+0.05,'%.0f'% b,ha='center',va='bottom',fontsize=8) plt.show() # 設置畫布大小 # 表示圖片的大小為寬8inch、高6inch(單位為inch) plt.figure(figsize=(8,6)) # 繪製直條圖 plt.bar(x,y2) # 設置標題以及x軸標題,y軸標題 plt.xlabel('詞根') plt.ylabel('轉化率') # 設置數字標籤 for a,b in zip(x,y2): plt.text(a,b,'%.4f'% b,ha='center',va='bottom',fontsize=8) plt.show() # 設置畫布大小 # 表示圖片的大小為寬8inch、高6inch(單位為inch) plt.figure(figsize=(8,6)) # 繪製直條圖 plt.bar(x,y3) # 設置標題以及x軸標題,y軸標題 plt.xlabel('詞根') plt.ylabel('加購率') # 設置數字標籤 for a,b in zip(x,y3): plt.text(a,b,'%.4f'% b,ha='center',va='bottom',fontsize=8) plt.show() # 設置畫布大小 # 表示圖片的大小為寬8inch、高6inch(單位為inch) plt.figure(figsize=(8,6)) # 繪製直條圖 plt.bar(x,y4) # 設置標題以及x軸標題,y軸標題 plt.xlabel('詞根') plt.ylabel('收藏率') # 設置數字標籤 for a,b in zip(x,y4): plt.text(a,b,'%.4f'% b,ha='center',va='bottom',fontsize=8) plt.show()