用Python製作銷售資料視覺化看板,展示分析一步到位!

今天給大家介紹一個用Python製作銷售資料大屏的方法。

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

其中Pandas處理資料,Plotly製作視覺化圖表,Streamlit搭建視覺化頁面。

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

Streamlit是一個完全免費的開源應用程式框架,它能幫你不用懂得複雜的HTML,CSS等前端技術就能快速做出來一個炫酷的Web頁面。

文件地址

https://docs。streamlit。io/

具體的大家可以去看文件學習,多動手練習。

下面就給大家講解一下如何搭建銷售資料看板~

01. 資料

使用的資料是虛構資料,某超市2021年銷售訂單資料,共有1000條的訂單資料。

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

剩下還包含訂單編號、商品型別、單價、數量、總價、日期、時間、支付方式、成本、毛利率、總收入、評分等資訊。

通用Pandas的read_excel方法讀取資料。

跳過前3行,選取B到R列,1000行資料。

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,

# 新增小時列資料

df[“小時”] = pd。to_datetime(df[“時間”], format=“%H:%M:%S”)。dt。hour

return df

df = get_data_from_excel()

print(df)

成功讀取資料,結果如下。

用Python製作銷售資料視覺化看板,展示分析一步到位!

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

02. 網頁標題和圖示

我們都知道當瀏覽器開啟一個網頁,會有標題和圖示。

用Python製作銷售資料視覺化看板,展示分析一步到位!

所以我們需先設定本次網頁的名稱、圖示、佈局等。

這也是使用Streamlit搭建頁面,使用的第一個Streamlit命令,並且只能設定一次。

# 設定網頁資訊

st。set_page_config(page_title=“銷售資料大屏”, page_icon=“:bar_chart:”, layout=“wide”)

其中page_icon引數可以使用表情符號程式碼來顯示圖示。

短程式碼可從下方連結獲取。

https://www。webfx。com/tools/emoji-cheat-sheet/

用Python製作銷售資料視覺化看板,展示分析一步到位!

妥妥的表情符號程式碼大全!

03. 側邊欄和多選框

st。sidebar(側邊欄),每個傳遞給st。sidebar的元素都會被固定在左邊,讓使用者可以專注於主頁中的內容。

multiselect(多選框)是一個互動性的部件,可以透過它進行資料篩選。

# 側邊欄

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”

結合Pandas的query查詢,就能對資料進行過濾。

透過上述程式碼就搭建成功了,如下圖左側。

用Python製作銷售資料視覺化看板,展示分析一步到位!

點選側邊欄的右上角關閉符號,側邊欄即可隱藏。

網頁將會展示主頁面。

用Python製作銷售資料視覺化看板,展示分析一步到位!

04. 主頁面資訊

接下來編寫主頁面資訊,包含主頁標題、銷售總額、平均評分、平均銷售額資訊。

和網頁的圖示一樣,透過表情符號程式碼實現。

# 主頁面

st。title(“:bar_chart: 銷售資料大屏”)

st。markdown(“##”)

# 核心指標, 銷售總額、平均評分、星級、平均銷售額資料

total_sales = int(df_selection[“總價”]。sum())

average_rating = round(df_selection[“評分”]。mean(), 1)

star_rating = “:star:” * int(round(average_rating, ))

average_sale_by_transaction = round(df_selection[“總價”]。mean(), 2)

# 3列布局

left_column, middle_column, right_column = st。columns(3)

# 新增相關資訊

with left_column:

st。subheader(“銷售總額:”)

st。subheader(f“RMB ”)

with middle_column:

st。subheader(“平均評分:”)

st。subheader(f“ ”)

with right_column:

st。subheader(“平均銷售額:”)

st。subheader(f“RMB ”)

# 分隔符

st。markdown(“”“——-”“”)

完成核心指標資料的處理,並將其進行佈局顯示。

用Python製作銷售資料視覺化看板,展示分析一步到位!

05. 主頁面圖表

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

Plotly Express是一個新的高階Python視覺化庫,是Plotly。py的高階封裝,它為複雜的圖表提供了一個簡單的語法。

文件地址

https://plot。ly/python/plotly-express/

受Seaborn和ggplot2的啟發,它專門設計為具有簡潔,一致且易於學習的API。只需一次匯入,就可以在一個函式呼叫中建立豐富的互動式繪圖。

# 各類商品銷售情況(柱狀圖)

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=“每種商品銷售總額”,

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=“每小時銷售總額”,

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)

新增資料,設定圖表配置,以及網頁佈局。

得到結果如下。

用Python製作銷售資料視覺化看板,展示分析一步到位!

06. 隱藏部件

當我們透過Streamlit搭建一個介面,預設就會有紅線、選單、結尾的“Make with Streamlit”。

用Python製作銷售資料視覺化看板,展示分析一步到位!

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

# 隱藏streamlit預設格式資訊

hide_st_style = “”“

#MainMenu

footer

header

”“”

st。markdown(hide_st_style, unsafe_allow_html=True)

這樣一個可互動的銷售資料看板,就完成搭建啦!

# 安裝依賴庫

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

安裝相關依賴,命令列終端執行程式。

加入知識星球

【我們談論資料科學】

400+

小夥伴一起學習!

TAG: STdfSalescolumnStreamlit