首頁 > 後端開發 > Python教學 > Pandas+Pyecharts | 醫院藥品銷售資料視覺化

Pandas+Pyecharts | 醫院藥品銷售資料視覺化

發布: 2023-08-10 14:43:56
轉載
1330 人瀏覽過

本期我們透過分析某醫院半年內的藥品銷售數據,看看醫院那些藥物購買者較多,那些天購藥者較多等等,希望對小夥伴們有所幫助
涉及的函式庫:
  • ##Pandas — 資料處理

  • #Pyecharts

  • — 資料視覺化 

collections

### — 資料統計##################### ########視覺化部分:### #######
  • Line# — 折線圖
  • ##Bar — 長條圖
  • Calendar— 日曆圖 
  • stylecloud

#####################################stylecloud## ############# — 詞雲圖######################進入正題~~##################################################################################
1. 導入模組

import jieba
import stylecloud
import pandas as pd
from PIL import Image
from collections import Counter
from pyecharts.charts import Geo
from pyecharts.charts import Bar
from pyecharts.charts import Line
from pyecharts.charts import Pie
from pyecharts.charts import Calendar
from pyecharts.charts import WordCloud
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType,SymbolType,ChartType
登入後複製

#2. Pandas資料處理

#2.1 讀取資料 

df = pd.read_excel("医院药品销售数据.xlsx")
登入後複製

#結果:

Pandas+Pyecharts | 醫院藥品銷售資料視覺化

##### ###2.2 資料大小 ############
df.shape
登入後複製
###
(6578, 7)
登入後複製
######一共有#########6578########## ######條藥品購買資料######。 ######

2.3 查看索引、数据类型和内存信息

df.info()
登入後複製
部分列存在数据缺失。
登入後複製

2.4 统计空值数据

df.isnull().sum()
登入後複製

Pandas+Pyecharts | 醫院藥品銷售資料視覺化

2.5 输出空行

df[df.isnull().T.any()]
登入後複製
Pandas+Pyecharts | 醫院藥品銷售資料視覺化
因为购药时间在后面的分析中会用到,所以我们将购药时间为空的行删除,社保卡号用"000"填充,社保卡号、商品编码为一串数字,应为str类型,销售数量应为int类型:
df1 = df.copy()
df1 = df1.dropna(subset=['购药时间'])
df1[df1.isnull().T.any()]
df1['社保卡号'].fillna('0000', inplace=True)
df1['社保卡号'] = df1['社保卡号'].astype(str)
df1['商品编码'] = df1['商品编码'].astype(str)
df1['销售数量'] = df1['销售数量'].astype(int)
登入後複製
Pandas+Pyecharts | 醫院藥品銷售資料視覺化

2.6 销售数量,应收金额,实收金额三列的统计情况

df1[['销售数量','应收金额','实收金额']].describe()
登入後複製
Pandas+Pyecharts | 醫院藥品銷售資料視覺化
数据中存在负值,显然不合理,我们将其转换为正值:
df2 = df1.copy()
df2['销售数量'] = df2['销售数量'].abs()
df2['应收金额'] = df2['应收金额'].abs()
df2['实收金额'] = df2['实收金额'].abs()
登入後複製
Pandas+Pyecharts | 醫院藥品銷售資料視覺化

2.7 列拆分(购药时间列拆分为两列)

df3 = df2.copy()
df3[['购药日期', '星期']] = df3['购药时间'].str.split(' ', 2, expand = True)
df3 = df3[['购药日期', '星期','社保卡号','商品编码', '商品名称', '销售数量', '应收金额', '实收金额' ]]
登入後複製

Pandas+Pyecharts | 醫院藥品銷售資料視覺化


3. Pyecharts数据可视化

3.1 一周各天药品销量柱状图

代码:

color_js = """new echarts.graphic.LinearGradient(0, 1, 0, 0,
    [{offset: 0, color: '#FFFFFF'}, {offset: 1, color: '#ed1941'}], false)"""

g1 = df3.groupby('星期').sum()
x_data = list(g1.index)
y_data = g1['销售数量'].values.tolist()
b1 = (
        Bar()
        .add_xaxis(x_data)
        .add_yaxis('',y_data ,itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_js)))
        .set_global_opts(title_opts=opts.TitleOpts(title='一周各天药品销量',pos_top='2%',pos_left = 'center'),
            legend_opts=opts.LegendOpts(is_show=False),
            xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
            yaxis_opts=opts.AxisOpts(name="销量",name_location='middle',name_gap=50,name_textstyle_opts=opts.TextStyleOpts(font_size=16)))

    )
b1.render_notebook()
登入後複製

Pandas+Pyecharts | 醫院藥品銷售資料視覺化

每天销量整理相差不大,周五、周六偏于购药高峰

3.2 药品销量前十柱状图

代码:

color_js = """new echarts.graphic.LinearGradient(0, 1, 0, 0,
    [{offset: 0, color: '#FFFFFF'}, {offset: 1, color: '#08519c'}], false)"""

g2 = df3.groupby('商品名称').sum().sort_values(by='销售数量', ascending=False)
x_data = list(g2.index)[:10]
y_data = g2['销售数量'].values.tolist()[:10]
b2 = (
        Bar()
        .add_xaxis(x_data)
        .add_yaxis('',y_data ,itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_js)))
        .set_global_opts(title_opts=opts.TitleOpts(title='药品销量前十',pos_top='2%',pos_left = 'center'),
            legend_opts=opts.LegendOpts(is_show=False),
            xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
            yaxis_opts=opts.AxisOpts(name="销量",name_location='middle',name_gap=50,name_textstyle_opts=opts.TextStyleOpts(font_size=16)))

    )
b2.render_notebook()
登入後複製
Pandas+Pyecharts | 醫院藥品銷售資料視覺化

可以看出:苯磺 酸氨氯地平片(安内真)开博通酒石酸美托洛尔片(倍他乐克)等治疗高血压、心绞痛药物购买量比较多。。

3.3 藥品銷售前十個長條圖 

Pandas+Pyecharts | 醫院藥品銷售資料視覺化

Pandas+Pyecharts | 醫院藥品銷售資料視覺化

#銷售額與銷售量基本上成正比
3.4 一週每天訂單量

Pandas+Pyecharts | 醫院藥品銷售資料視覺化

從一週各天資料分佈來看,每天
銷售量整理相差不大,週五、週六偏於購藥高峰

Pandas+Pyecharts | 醫院藥品銷售資料視覺化

3.5 自然月每日訂單數

Pandas+Pyecharts | 醫院藥品銷售資料視覺化

可以看出:5日、15日、25日是藥品銷售高峰期,尤其是每月15日。

Pandas+Pyecharts | 醫院藥品銷售資料視覺化

3.6 日曆圖 ################日曆圖可以更直覺的看到一個月內每天和每週的銷售:########################3.6 藥品名稱詞雲 #################### #################

篇幅原因,部分程式碼未完全展示,如果需要可在下方獲取,也 可線上運行(含全部程式碼資料檔案)

https:/ /www.heywhale.com/mw/project/61b83bd9c63c620017c629bc

###################################################################################

以上是Pandas+Pyecharts | 醫院藥品銷售資料視覺化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:Python当打之年
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板