最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)制作銷售數(shù)據(jù)可視化看板詳解

 更新時間:2021年11月26日 15:25:17   作者:程序員_宇寧  
在數(shù)據(jù)時代,銷售數(shù)據(jù)分析的重要性已無需贅言。只有對銷售數(shù)據(jù)的準(zhǔn)確分析我們才有可能找準(zhǔn)數(shù)據(jù)變動的原因。本文將介紹用Python制作銷售數(shù)據(jù)大屏的方法。感興趣的可以關(guān)注一下

在數(shù)據(jù)時代,銷售數(shù)據(jù)分析的重要性已無需贅言。

只有對銷售數(shù)據(jù)的準(zhǔn)確分析我們才有可能找準(zhǔn)數(shù)據(jù)變動(增長或下滑)的原因。

然后解決問題、發(fā)現(xiàn)新的增長點才會成為可能!

今天就給大家介紹一個用Python制作銷售數(shù)據(jù)大屏的方法。

主要使用Python的Streamlit庫、Plotly庫、Pandas庫進行搭建。

其中Pandas處理數(shù)據(jù),Plotly制作可視化圖表,Streamlit搭建可視化頁面。

對于以上三個庫,Streamlit庫可能大家會比較陌生,我簡單介紹一下。

Streamlit是一個完全免費的開源應(yīng)用程序框架,它能幫你不用懂得復(fù)雜的HTML,CSS等前端技術(shù)就能快速做出來一個炫酷的Web頁面。

1. 數(shù)據(jù)

使用的數(shù)據(jù)是虛構(gòu)數(shù)據(jù),某超市2021年銷售訂單數(shù)據(jù),共有1000條的訂單數(shù)據(jù)。

城市有三個,分別為北京、上海、杭州。顧客類型有兩種,為會員和普通。顧客性別為男性和女性。

剩下還包含訂單編號、商品類型、單價、數(shù)量、總價、日期、時間、支付方式、成本、毛利率、總收入、評分等信息。

通用Pandas的read_excel方法讀取數(shù)據(jù)。

跳過前3行,選取B到R列,1000行數(shù)據(jù)。

def get_data_from_excel():
    df = pd.read_excel(
        io="supermarkt_sales.xlsx",
        engine="openpyxl",
        sheet_name="Sales",
        skiprows=3,
        usecols="B:R",
        nrows=1000,
    )
    # 添加小時列數(shù)據(jù)
    df["小時"] = pd.to_datetime(df["時間"], format="%H:%M:%S").dt.hour
    return df

df = get_data_from_excel()
print(df)

成功讀取數(shù)據(jù),結(jié)果如下。

下面便可以來編寫頁面了。

2. 網(wǎng)頁標(biāo)題和圖標(biāo)

我們都知道當(dāng)瀏覽器打開一個網(wǎng)頁,會有標(biāo)題和圖標(biāo)。

所以我們需先設(shè)置本次網(wǎng)頁的名稱、圖標(biāo)、布局等。

這也是使用Streamlit搭建頁面,使用的第一個Streamlit命令,并且只能設(shè)置一次。

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

其中page_icon參數(shù)可以使用表情符號代碼來顯示圖標(biāo)。

妥妥的表情符號代碼大全!

3. 側(cè)邊欄和多選框

st.sidebar(側(cè)邊欄),每個傳遞給st.sidebar的元素都會被固定在左邊,讓用戶可以專注于主頁中的內(nèi)容。

multiselect(多選框)是一個交互性的部件,可以通過它進行數(shù)據(jù)篩選。

# 側(cè)邊欄
st.sidebar.header("請在這里篩選:")
city = st.sidebar.multiselect(
    "選擇城市:",
    options=df["城市"].unique(),
    default=df["城市"].unique()
)

customer_type = st.sidebar.multiselect(
    "選擇顧客類型:",
    options=df["顧客類型"].unique(),
    default=df["顧客類型"].unique(),
)

gender = st.sidebar.multiselect(
    "選擇性別:",
    options=df["性別"].unique(),
    default=df["性別"].unique()
)

df_selection = df.query(
    "城市 == @city & 顧客類型 ==@customer_type & 性別 == @gender"
)

結(jié)合Pandas的query查詢,就能對數(shù)據(jù)進行過濾。

通過上述代碼就搭建成功了,如下圖左側(cè)。

點擊側(cè)邊欄的右上角關(guān)閉符號,側(cè)邊欄即可隱藏。

網(wǎng)頁將會展示主頁面。

4. 主頁面信息

接下來編寫主頁面信息,包含主頁標(biāo)題、銷售總額、平均評分、平均銷售額信息。

和網(wǎng)頁的圖標(biāo)一樣,通過表情符號代碼實現(xiàn)。

# 主頁面
st.title(":bar_chart: 銷售數(shù)據(jù)大屏")
st.markdown("##")

# 核心指標(biāo), 銷售總額、平均評分、星級、平均銷售額數(shù)據(jù)
total_sales = int(df_selection["總價"].sum())
average_rating = round(df_selection["評分"].mean(), 1)
star_rating = ":star:" * int(round(average_rating, 0))
average_sale_by_transaction = round(df_selection["總價"].mean(), 2)


# 3列布局
left_column, middle_column, right_column = st.columns(3)

# 添加相關(guān)信息
with left_column:
    st.subheader("銷售總額:")
    st.subheader(f"RMB {total_sales:,}")
with middle_column:
    st.subheader("平均評分:")
    st.subheader(f"{average_rating} {star_rating}")
with right_column:
    st.subheader("平均銷售額:")
    st.subheader(f"RMB {average_sale_by_transaction}")

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

完成核心指標(biāo)數(shù)據(jù)的處理,并將其進行布局顯示。

5. 主頁面圖表

包含了兩個圖表,一個是每小時銷售額,一個是各類商品銷售總額。通過Plotly Express完成圖表的繪制。

Plotly Express是一個新的高級Python可視化庫,是Plotly.py的高級封裝,它為復(fù)雜的圖表提供了一個簡單的語法。

受Seaborn和ggplot2的啟發(fā),它專門設(shè)計為具有簡潔,一致且易于學(xué)習(xí)的API。只需一次導(dǎo)入,就可以在一個函數(shù)調(diào)用中創(chuàng)建豐富的交互式繪圖。

# 各類商品銷售情況(柱狀圖)
sales_by_product_line = (
    df_selection.groupby(by=["商品類型"]).sum()[["總價"]].sort_values(by="總價")
)
fig_product_sales = px.bar(
    sales_by_product_line,
    x="總價",
    y=sales_by_product_line.index,
    orientation="h",
    title="<b>每種商品銷售總額</b>",
    color_discrete_sequence=["#0083B8"] * len(sales_by_product_line),
    template="plotly_white",
)
fig_product_sales.update_layout(
    plot_bgcolor="rgba(0,0,0,0)",
    xaxis=(dict(showgrid=False))
)

# 每小時銷售情況(柱狀圖)
sales_by_hour = df_selection.groupby(by=["小時"]).sum()[["總價"]]
print(sales_by_hour.index)
fig_hourly_sales = px.bar(
    sales_by_hour,
    x=sales_by_hour.index,
    y="總價",
    title="<b>每小時銷售總額</b>",
    color_discrete_sequence=["#0083B8"] * len(sales_by_hour),
    template="plotly_white",
)
fig_hourly_sales.update_layout(
    xaxis=dict(tickmode="linear"),
    plot_bgcolor="rgba(0,0,0,0)",
    yaxis=(dict(showgrid=False)),
)


left_column, right_column = st.columns(2)
left_column.plotly_chart(fig_hourly_sales, use_container_width=True)
right_column.plotly_chart(fig_product_sales, use_container_width=True)

添加數(shù)據(jù),設(shè)置圖表配置,以及網(wǎng)頁布局。

得到結(jié)果如下。

6. 隱藏部件

當(dāng)我們通過Streamlit搭建一個界面,默認(rèn)就會有紅線、菜單、結(jié)尾的"Make with Streamlit"。

為了美觀,這里可以將它們都隱藏掉。

# 隱藏streamlit默認(rèn)格式信息
hide_st_style = """
            <style>
            #MainMenu {visibility: hidden;}
            footer {visibility: hidden;}
            header {visibility: hidden;}
            </style>
            """

st.markdown(hide_st_style, unsafe_allow_html=True)

這樣一個可交互的銷售數(shù)據(jù)看板,就完成搭建啦!

# 安裝依賴庫
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple plotly==4.14.3
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas==1.1.0
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

# 運行
streamlit run app.py

安裝相關(guān)依賴,命令行終端運行程序。?

以上就是Python實現(xiàn)制作銷售數(shù)據(jù)可視化看板詳解的詳細內(nèi)容,更多關(guān)于Python 數(shù)據(jù)可視化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中流程控制的高級用法盤點

    Python中流程控制的高級用法盤點

    在這篇文章中我們將全面深入地介紹?Python?的控制流程,包括條件語句、循環(huán)結(jié)構(gòu)和異常處理等關(guān)鍵部分,尤其會將列表解析、生成器、裝飾器等高級用法一網(wǎng)打盡,快跟隨小編學(xué)起來吧
    2023-05-05
  • python 如何區(qū)分return和yield

    python 如何區(qū)分return和yield

    這篇文章主要介紹了python 如何區(qū)分return和yield,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • 基于Python?wxPython開發(fā)文件管理工具

    基于Python?wxPython開發(fā)文件管理工具

    這篇文章主要為大家詳細介紹了如何基于wxPython開發(fā)一個文件管理工具,該工具提供了多種實用功能,代碼結(jié)構(gòu)清晰,易于理解和擴展,需要的可以了解下
    2025-02-02
  • Python上傳package到Pypi(代碼簡單)

    Python上傳package到Pypi(代碼簡單)

    這篇文章主要介紹了Python上傳package到Pypi(代碼簡單)的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • 用Python實現(xiàn)二叉樹、二叉樹非遞歸遍歷及繪制的例子

    用Python實現(xiàn)二叉樹、二叉樹非遞歸遍歷及繪制的例子

    今天小編就為大家分享一篇用Python實現(xiàn)二叉樹、二叉樹非遞歸遍歷及繪制的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 使用beaker讓Facebook的Bottle框架支持session功能

    使用beaker讓Facebook的Bottle框架支持session功能

    這篇文章主要介紹了使用beaker讓Facebook的Bottle框架支持session功能,session在Python的Django等框架中內(nèi)置但在Bottle中并沒有被集成,需要的朋友可以參考下
    2015-04-04
  • Pandas操作CSV文件的讀寫實現(xiàn)方法

    Pandas操作CSV文件的讀寫實現(xiàn)方法

    這篇文章主要介紹了Pandas操作CSV文件的讀寫實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 解決pycharm remote deployment 配置的問題

    解決pycharm remote deployment 配置的問題

    今天小編就為大家分享一篇解決pycharm remote deployment 配置的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python使用openpyxl庫處理Excel文件詳細教程

    python使用openpyxl庫處理Excel文件詳細教程

    這篇文章主要給大家介紹了關(guān)于python使用openpyxl庫處理Excel文件詳細教程的相關(guān)資料,openpyxl屬于第三方模塊,在python中用來處理excel文件,可以對excel進行的操作有讀寫、修改、調(diào)整樣式及插入圖片等,需要的朋友可以參考下
    2023-11-11
  • python實現(xiàn)媒體播放器功能

    python實現(xiàn)媒體播放器功能

    這篇文章主要為大家詳細介紹了python實現(xiàn)媒體播放器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評論

彰化市| 石台县| 南宁市| 明星| 南平市| 巫山县| 拜城县| 楚雄市| 临泽县| 岳阳市| 嘉黎县| 三台县| 云梦县| 福海县| 芒康县| 都昌县| 介休市| 津南区| 桃源县| 虞城县| 阿拉尔市| 湄潭县| 呼伦贝尔市| 利津县| 舞钢市| 澄迈县| 旬邑县| 德阳市| 应城市| 麻栗坡县| 东乡| 乌兰浩特市| 双牌县| 天全县| 吉木乃县| 高雄县| 交城县| 威宁| 孝义市| 屏边| 普宁市|