ホームページ  >  記事  >  バックエンド開発  >  Pandas+Pyecharts | 病院の医薬品販売データの視覚化

Pandas+Pyecharts | 病院の医薬品販売データの視覚化

Python当打之年
Python当打之年転載
2023-08-10 14:43:561251ブラウズ

今回は、半年以内の病院の医薬品販売データを分析して、どの医薬品が販売されているかを確認します。病院で購入する薬 この日は薬を買う人が増えるなど 友達の参考になれば幸いです
関与するライブラリ:
  • Pandas — データ処理

  • ##Pyecharts — データの視覚化

  • #コレクション — データ統計

視覚化部分:

  • 折れ線## — 折れ線グラフ
  • ##Bar
    — 棒グラフ
  • # #Calendar
  • #— カレンダー チャート ##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")
    結果:

    2.2データサイズ Pandas+Pyecharts | 病院の医薬品販売データの視覚化

    ##

    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 医薬品売上トップ 10 の棒グラフ

    Pandas+Pyecharts | 病院の医薬品販売データの視覚化

    ##売上は基本的に販売数量に比例します
    #3.4 週あたりの注文量

    Pandas+Pyecharts | 病院の医薬品販売データの視覚化

    #各曜日のデータ分布から、
    毎日販売量に大きな差はなく、金曜日と土曜日が医薬品の購入のピークとなる傾向があります
    #3.5 自然月の 1 日あたりの注文数

    Pandas+Pyecharts | 病院の医薬品販売データの視覚化

    #毎月 5 日、15 日、25 日が医薬品販売のピーク期間であることがわかります。特に 15 日が最も顕著です。
    3.6 カレンダー グラフ
    カレンダー グラフでは、1 か月内の日別および週ごとの売上高をより直感的に確認できます。 :

    ##3.6 薬剤名のワードクラウド Pandas+Pyecharts | 病院の医薬品販売データの視覚化

    Pandas+Pyecharts | 病院の医薬品販売データの視覚化

    # スペースの都合により、一部のコードは完全に表示されていません。必要に応じて、以下から入手できます。 オンラインで実行可能 (すべてのコード データ ファイルを含む) ##:

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

    #

以上がPandas+Pyecharts | 病院の医薬品販売データの視覚化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はPython当打之年で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。