Pandas+Pyecharts | 医院药品销售数据可视化

简介: Pandas+Pyecharts | 医院药品销售数据可视化

大家好,我是欧K~

本期我们通过分析某医院半年内的药品销售数据,看看医院那些药物购买者较多,那些天购药者较多等等,希望对小伙伴们有所帮助涉及到的库: 

  • Pandas — 数据处理
  • Pyecharts — 数据可视化
  • collections — 数据统计

可视化部分:

  • Line — 折线图
  • 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 数据大小

df.shape

(6578, 7)

一共有6578条药品购买数据

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

df.info()

部分列存在数据缺失。

2.4 统计空值数据

df.isnull().sum()

2.5 输出空行

df[df.isnull().T.any()]

因为购药时间在后面的分析中会用到,所以我们将购药时间为空的行删除,社保卡号用"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)

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

df1[['销售数量','应收金额','实收金额']].describe()

数据中存在负值,显然不合理,我们将其转换为正值:

df2 = df1.copy()
df2['销售数量'] = df2['销售数量'].abs()
df2['应收金额'] = df2['应收金额'].abs()
df2['实收金额'] = df2['实收金额'].abs()

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

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


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()

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

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()

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

3.3 药品销售额前十柱状图

销售额与销量基本成正比


3.4 一周每天订单量

从一周各天数据分布来看,每天销量整理相差不大,周五、周六偏于购药高峰


3.5 自然月每天订单数量

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


3.6 日历图 日历图可以更直观的看到一个月内每天和每星期的销量:


3.6 药品名称词云


篇幅原因,部分代码未完全展示,如果需要可在下方获取,也可在线运行(含全部代码+数据文件)

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

END


以上就是本期为大家整理的全部内容了,如果需要数据文件,可以在公众号后台回复 药品数据 获取,喜欢的朋友可以点赞、点在看也可以分享让更多人知道。

相关文章
|
5月前
|
Python
Pandas和pyecharts绘制某天多省区连续确诊病例无新增天数的玫瑰图实战(附源码)
Pandas和pyecharts绘制某天多省区连续确诊病例无新增天数的玫瑰图实战(附源码)
56 0
|
7月前
|
存储 数据可视化 数据挖掘
Pandas和Pyecharts带你揭秘最近热播好剧的主题和题材趋势
Pandas和Pyecharts带你揭秘最近热播好剧的主题和题材趋势
|
9月前
|
数据可视化 数据挖掘 大数据
Pandas+Pyecharts | 北京某平台二手房数据分析可视化
Pandas+Pyecharts | 北京某平台二手房数据分析可视化
|
13天前
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
|
23天前
|
数据可视化 数据挖掘 定位技术
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
35 2
|
1月前
|
JSON JavaScript 数据可视化
数据可视化:将Python的Pandas与Vue结合展示交互式图表
【4月更文挑战第10天】本文探讨了如何利用Python的Pandas库和前端框架Vue.js创建交互式数据可视化应用。通过Pandas进行数据处理和分析,Vue.js构建用户界面,结合两者可实现动态图表展示。步骤包括数据准备、转换为JSON、创建Vue项目、发送数据请求、渲染图表、添加交互性和优化性能。这种结合为数据理解和探索提供了高效、用户友好的解决方案,适应于数据爱好者和专家,预示着未来数据可视化将更智能、互动。
|
5月前
|
数据可视化 数据挖掘 Python
Pandas 高级教程——数据可视化
Pandas 高级教程——数据可视化
95 3
|
9月前
|
数据可视化 搜索推荐 数据挖掘
Pandas+Pyecharts | 电子产品销售数据分析可视化+用户RFM画像
Pandas+Pyecharts | 电子产品销售数据分析可视化+用户RFM画像
|
9月前
|
数据可视化 数据处理 Python
Pandas+Pyecharts | 北京近五年历史天气数据可视化
Pandas+Pyecharts | 北京近五年历史天气数据可视化
|
19天前
|
数据挖掘 数据处理 索引
python常用pandas函数nlargest / nsmallest及其手动实现
python常用pandas函数nlargest / nsmallest及其手动实现
36 0