<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          情人節(jié),我用 Python 給女朋友做了個選禮物看板!

          共 5484字,需瀏覽 11分鐘

           ·

          2022-02-16 21:52

          作者:Cherish
          來源:https://www.jianshu.com/p/88e2617602a1
          本文為讀者投稿

          一年 N 度的情人節(jié)又又又到了!各位程序猿們給女朋友準(zhǔn)備禮物了嗎?剛鐵直男都存在一個困惑的問題:送女朋友什么禮物好?今天特意爬取了某東的數(shù)據(jù),來分析下大家情人節(jié)都送什么給女朋友。

          主要使用ExcelPythonPandas 庫Streamlit 庫Plotly 庫進(jìn)行搭建可視化大屏。


          一、前提準(zhǔn)備


          本案例數(shù)據(jù)相對結(jié)構(gòu)化,僅用 Excel 結(jié)合 Pandas 做簡單處理即可,Plotly 制作可視化圖表,Streamlit 搭建可視化頁面。

          1.1 安裝依賴庫

          pip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?pandas==1.1.0
          pip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?plotly==4.14.3
          pip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?streamlit==0.86.0
          pip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?openpyxl==3.0.6

          1.2 Plotly

          官方文檔地址:https://plot.ly/python/plotly-express/

          Plotly Express 是一個新的高級 Python 可視化庫,它為復(fù)雜的圖表提供了一個簡單的語法。Plotly 交互效果明顯優(yōu)于 Python 的兩大傳統(tǒng)可視化庫 Matplotlib 和 Seaborn。相比 Power BI 和 Tableau 等 BI 工具,Plotly 無法勝任數(shù)據(jù)清洗、關(guān)系模型等功能,僅是一個可視化工具。但與 Python 其它庫,比如今天使用的 Streamlit 配合,可以創(chuàng)造出像網(wǎng)站、可視化大屏、機(jī)器學(xué)習(xí)工具等各種精彩的應(yīng)用。

          1.3 Streamlit

          官方文檔地址:https://docs.streamlit.io/

          Streamlit 是一個功能強(qiáng)大,完全免費(fèi)的開源應(yīng)用程序框架,它能幫你不用懂得復(fù)雜的 HTML,CSS 等前端技術(shù)就能快速做出來一個炫酷的 Web 頁面。Streamlit 是一個用于機(jī)器學(xué)習(xí)、數(shù)據(jù)可視化的 Python 框架,用極短的時間快速生成一個基于 Web 的 GUI。當(dāng)然,你也可以將其用于給自己的 Python 腳本創(chuàng)建前端展示頁面,也是一個不錯的選擇。

          二、準(zhǔn)備數(shù)據(jù)


          關(guān)鍵字搜索【情人節(jié)禮物 女友 2022】,用第三方采集軟件爬取數(shù)據(jù) 2500+ 條,準(zhǔn)備數(shù)據(jù)如下:



          三、分析目的

          通過禮品類別、品牌、和價格區(qū)間進(jìn)行篩選聯(lián)動

          ① 禮品類別(大類)銷量對比情況
          ② 禮品價格區(qū)間占比情況
          ③ 各禮品小類的銷量對比(和大類進(jìn)行聯(lián)動)
          ④ 禮品類別的價格分布
          ⑤ 品牌禮品的 Top 10 推薦


          四、代碼思路

          4.1 導(dǎo)入相關(guān)包

          import?pandas?as?pd
          import?plotly.express?as?px
          import?streamlit?as?st
          import?plotly.figure_factory?as?ff
          import?plotly?as?py
          import?plotly.graph_objs?as?go

          #?設(shè)置網(wǎng)頁
          st.set_page_config(page_title="數(shù)據(jù)大屏",?page_icon=":bar_chart:",?layout="wide")
          st.balloons()

          4.2 讀取數(shù)據(jù)

          #?讀取數(shù)據(jù)
          @st.cache
          def?get_data_from_excel():
          ????df?=?pd.read_excel(
          ????????io="data.xlsx",
          ????????engine="openpyxl",
          ????????sheet_name="data"
          ????)
          ????return?df
          df?=?get_data_from_excel()

          4.3 設(shè)計左側(cè)邊欄和標(biāo)題

          #?側(cè)邊欄
          st.sidebar.header("請在這里篩選:")
          category?=?st.sidebar.multiselect(
          ????"禮物類別:",
          ????options=df["禮品類別"].unique(),
          ????default=df["禮品類別"].unique()
          )

          brand?=?st.sidebar.multiselect(
          ????"選擇品牌:",
          ????options=df["品牌"].unique(),
          ????default=df["品牌"].unique(),
          )

          price?=?st.sidebar.multiselect(
          ????"價格區(qū)間:",
          ????options=df["價格區(qū)間"].unique(),
          ????default=df["價格區(qū)間"].unique()
          )

          df_selection?=?df.query(
          ????"禮品類別?==?@category?&?品牌?==?@brand?&?價格區(qū)間?==?@price"
          )

          #?主頁面標(biāo)題
          st.title(":bar_chart:?情人節(jié)看看大家都送什么禮物")
          st.markdown("##")

          4.4 畫可視化圖

          #?橫向條形圖:各類別禮品銷量
          sales_by_product_line?=?(
          ????df_selection.groupby(by=["禮品類別"]).sum()[["銷量"]]
          )

          fig_product_sales?=?px.bar(
          ????sales_by_product_line,
          ????x="銷量",
          ????y=sales_by_product_line.index,
          ????orientation="h",
          ????title="各類別禮品品銷量"
          )
          fig_product_sales.update_layout(
          ????plot_bgcolor="rgba(0,0,0,0)",
          ????xaxis=(dict(showgrid=False))
          )


          從禮品類別來看,送美妝護(hù)膚類的穩(wěn)居第一,看來情人節(jié)口紅必不可少呀;排名第二的是箱包皮具類,看來送包包也是也非常不錯的選擇呢。

          #?圓環(huán)圖:禮物價格區(qū)間占比
          las?=?df_selection.groupby(df_selection['價格區(qū)間']).size()
          las.sort_values(ascending=True,inplace=True)
          layout?=?go.Layout(
          ????title?=?'禮品價格區(qū)間占比',
          ????barmode='stack'
          )
          fig_price_sales?=?go.Figure(data=[go.Pie(labels=las.index,?hole?=??0.7,values=las.values,hoverinfo?=?"label?+?percent")],layout=layout)
          fig_price_sales.update_layout(
          ????xaxis=dict(tickmode="linear"),
          ????plot_bgcolor="rgba(0,0,0,0)",
          ????yaxis=(dict(showgrid=False)),
          )

          #?分隔符
          st.markdown("""---""")


          禮品價格想必是大家最關(guān)心的了吧,從占比來看近 50% 的禮品價格都在 100~500 元之間吶,100 元以下的 6%,價格區(qū)間占比最小;再看看 2000 元以上的禮品,占比 15%,這是真愛呀。

          #?TOP?10?銷量最高品牌
          sales_by_brand?=?df_selection.groupby(by=["品牌"])
          brand_dic?=?{i:j['銷量'].sum()?for?i,j?in?sales_by_brand}
          brand_dic?=?sorted(brand_dic.items(),?key?=?lambda?kv:(kv[1],?kv[0]),reverse=True)
          ins?=?[]
          val?=?[]
          for?i,?j?in?brand_dic[:10]:
          ????ins.append(i.split()[0])
          ????val.append(j)
          sales_by_brand?=?px.bar(
          ????x=ins,
          ????y=val,
          ????title="TOP?10?銷量最高品牌",
          )
          sales_by_brand.update_layout(
          ????xaxis=dict(tickmode="linear"),
          ????plot_bgcolor="rgba(0,0,0,0)",
          ????yaxis=(dict(showgrid=False)),
          )


          上面結(jié)果是按照所有類別進(jìn)行分析的,當(dāng)然你也可以按照自己喜歡的類別,查看品牌銷量前 10。

          #?柱狀圖:各詳細(xì)類別禮品銷量對比
          sales_by_goods?=?df_selection.groupby(by=["小類"]).sum()[["銷量"]]
          sales_by_goods?=?px.bar(
          ????sales_by_goods,
          ????x=sales_by_goods.index,
          ????y="銷量",
          ????title="詳細(xì)類別產(chǎn)品的銷量",
          )
          sales_by_goods.update_layout(
          ????xaxis=dict(tickmode="linear"),
          ????plot_bgcolor="rgba(0,0,0,0)",
          ????yaxis=(dict(showgrid=False)),
          )


          這里選擇【美妝護(hù)膚】這個類別,分析各小類的銷量對比,原來第一的是眼霜和爽膚水,第二的是口紅。想必這是小姐姐的最愛吧。

          #?箱線圖:各類別禮品的價格分布
          fig?=?px.box(df_selection,?x="禮品類別",?y="價格",color="禮品類別",
          ????title="各類別禮品的價格分布")

          fig.update_layout(
          ????xaxis=dict(tickmode="linear"),
          ????plot_bgcolor="rgba(0,0,0,0)",
          ????yaxis=(dict(showgrid=False)),
          )


          價格區(qū)間篩選了 1000 元以下的禮品,從結(jié)果來看,鐘表的價格最高,大部分都在 500 元以上,好像找到了鐘表銷量最低的原因吶;要說性價比,還是創(chuàng)意禮品、包包、美妝護(hù)膚,中位數(shù)趨于 200~300 之間。

          #?將圖形顯示到前端頁面
          left_column,?right_column,r?=?st.columns(3)
          right_column.plotly_chart(fig_price_sales,?use_container_width=True)
          left_column.plotly_chart(fig_product_sales,?use_container_width=True)
          r.plotly_chart(sales_by_brand,?use_container_width=True)
          st.markdown("""---""")
          left,?right?=?st.columns(2)
          left.plotly_chart(sales_by_goods,?use_container_width=True)
          right.plotly_chart(fig,?use_container_width=True)
          #?隱藏streamlit默認(rèn)格式信息
          hide_st_style?=?"""
          ????????????
          ????????????"""

          st.markdown(hide_st_style,?unsafe_allow_html=True)

          streamlit?run?demo.py

          最后運(yùn)行上面命令,這樣一個關(guān)于情人節(jié)的數(shù)據(jù)可視化看板,就搭建完成啦!?

          同時,我也在 B 站發(fā)布了本期內(nèi)容的視頻,歡迎三連呀!

          其實送禮物這事兒,說難也不難,但也不是一件簡單的事兒~送對了感情升溫,送錯了讓你恢復(fù)單身!

          最后祝大家情人節(jié)快樂愿有情人終成眷屬最最最重要的:祝愿奧運(yùn)健兒們再創(chuàng)佳績

          完整數(shù)據(jù)代碼可掃描下方二維碼,添加杰哥私人微信,備注:情人節(jié)?進(jìn)行獲取。

          原創(chuàng)推薦閱讀

          520情人節(jié),不懂送女朋友什么牌子的口紅?沒關(guān)系!Python 數(shù)據(jù)分析告訴你。


          利用 Python 分析了某化妝品企業(yè)的銷售情況,我得出的結(jié)論是?


          “羅永浩抖音首秀”銷售數(shù)據(jù)的可視化大屏是怎么做出來的呢?

          瀏覽 59
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美黄色三级网站 | 后入少妇在线观看 | 久久国产精品伦子伦 | 欧美成人精品一二三区欧美风情 | 囯产精品宾馆在线精品酒店 |