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


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

相关文章
|
7月前
|
数据可视化 数据挖掘 数据处理
Pandas高级数据处理:数据可视化进阶
Pandas是数据分析的强大工具,能高效处理数据并与Matplotlib、Seaborn等库集成,实现数据可视化。本文介绍Pandas在绘制基础图表(如折线图)和进阶图表(如分组柱状图、热力图)时的常见问题及解决方案,涵盖数据准备、报错处理、图表优化等内容,并通过代码案例详细解释,帮助读者掌握数据可视化的技巧。
157 13
|
8月前
|
机器学习/深度学习 数据采集 供应链
Pandas数据应用:销售预测
本文介绍如何使用Pandas进行销售预测。首先,通过获取、清洗和可视化历史销售数据,确保数据质量并理解其特征。接着,进行特征工程,构建线性回归等模型进行预测,并评估模型性能。最后,针对常见问题如数据类型不匹配、时间格式错误、内存不足和模型过拟合提供解决方案。掌握这些步骤,可有效提升销售预测的准确性,助力企业优化库存管理和提高客户满意度。
164 17
|
9月前
|
数据可视化 数据挖掘 开发者
Pandas数据可视化:matplotlib集成(df)
Pandas 是 Python 中强大的数据分析库,Matplotlib 是常用的绘图工具。两者结合可方便地进行数据可视化,帮助理解数据特征和趋势。本文从基础介绍如何在 Pandas 中集成 Matplotlib 绘制图表,如折线图、柱状图等,并深入探讨常见问题及解决方案,包括图表显示不完整、乱码、比例不合适、多子图布局混乱、动态更新图表等问题,提供实用技巧和代码示例。掌握这些方法后,你将能更高效地处理数据可视化任务。
307 9
|
数据可视化 数据挖掘 数据处理
Python中数据可视化的魔法——使用Matplotlib和Pandas
【9月更文挑战第5天】在Python的世界里,数据可视化是连接复杂数据与人类直觉的桥梁。本篇文章将带领读者探索如何使用Matplotlib和Pandas这两个强大的库来揭示数据背后的故事。我们将从基础概念开始,逐步深入到高级技巧,让每一位读者都能轻松创建引人入胜的数据可视化图表,使数据分析变得既直观又有趣。
227 14
|
机器学习/深度学习 数据采集 监控
Pandas与Matplotlib:Python中的动态数据可视化
Pandas与Matplotlib:Python中的动态数据可视化
|
存储 数据可视化 Python
Python中的数据可视化:使用Matplotlib和Pandas探索数据
【7月更文挑战第31天】 在数据科学的世界里,可视化是理解复杂数据集的关键。本文将引导你通过Python的Matplotlib库和Pandas库来揭示数据背后的故事。我们将一起构建图表,从简单的线图到复杂的热图,每一步都将用代码示例来丰富你的理解。文章不仅仅是展示如何绘制图表,更是一次深入探索数据结构和模式的旅程。
157 8
|
数据可视化 数据挖掘 API
Pandas数据可视化(二)
**Pandas数据可视化教程聚焦于双变量分析,如散点图和堆叠图。散点图用于揭示两个变量间的关联,例如价格和评分,较大的点可能表示价格更高的葡萄酒得分更高。当数据过多时,可使用hexplot减少过度绘制,提供密度信息。堆叠图适合展示类别变量的分布,如不同葡萄酒类型的评分分布,显示了Chardonnay等品种的受欢迎程度。**
|
数据可视化 数据挖掘 API
Pandas数据可视化(一)
Pandas是Python数据分析的核心库,不仅用于数据加载和转换,还内置了简单的数据可视化功能。通过`.plot()`方法,可以创建条形图、折线图、直方图和饼图等,便于单变量分析。例如,用葡萄酒数据集展示了不同产区的葡萄酒数量,加利福尼亚占比最高。条形图适合比较类别间的差异,折线图则用于显示趋势。直方图用于数值分布,但对倾斜数据(极值影响)敏感。饼图展示类别占比,但不适用于大量分类。Pandas的可视化帮助我们理解数据集的结构和特征。
|
数据可视化 数据挖掘 定位技术
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
148 2
|
JSON JavaScript 数据可视化
数据可视化:将Python的Pandas与Vue结合展示交互式图表
【4月更文挑战第10天】本文探讨了如何利用Python的Pandas库和前端框架Vue.js创建交互式数据可视化应用。通过Pandas进行数据处理和分析,Vue.js构建用户界面,结合两者可实现动态图表展示。步骤包括数据准备、转换为JSON、创建Vue项目、发送数据请求、渲染图表、添加交互性和优化性能。这种结合为数据理解和探索提供了高效、用户友好的解决方案,适应于数据爱好者和专家,预示着未来数据可视化将更智能、互动。
610 1