Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital

Libérer: 2023-08-10 14:43:56
avant
1283 Les gens l'ont consulté

Dans ce numéro, nous analysons les données de vente de médicaments d'un certain hôpital sur une période de six mois pour voir quels hôpitaux ont plus d'acheteurs de médicaments, quels jours ont plus d'acheteurs de médicaments, etc. être utile à nos amis.
Bibliothèques impliquées :
  • Pandas — Traitement des données

  • Pyecharts — Visualisation de données

  • collections — Statistiques des données

Partie visualisation :

  • Line — Graphique linéaire
  • Bar — Graphique à barres
  • Calendrier— Calendrier
  • stylecloud — nuage de mots

Allons droit au but~~

Traitement des données P andas

2.1 Lire les données
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
Copier après la connexion
Résultat :

2.2 Taille des données
df = pd.read_excel("医院药品销售数据.xlsx")
Copier après la connexion
df.shape
Copier après la connexion
total

6578

Données d'achat pharmaceutique
.

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

df.info()
Copier après la connexion
部分列存在数据缺失。
Copier après la connexion

2.4 统计空值数据

df.isnull().sum()
Copier après la connexion

Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital

2.5 输出空行

df[df.isnull().T.any()]
Copier après la connexion
Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital
因为购药时间在后面的分析中会用到,所以我们将购药时间为空的行删除,社保卡号用"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)
Copier après la connexion
Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital

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

df1[['销售数量','应收金额','实收金额']].describe()
Copier après la connexion
Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital
数据中存在负值,显然不合理,我们将其转换为正值:
df2 = df1.copy()
df2['销售数量'] = df2['销售数量'].abs()
df2['应收金额'] = df2['应收金额'].abs()
df2['实收金额'] = df2['实收金额'].abs()
Copier après la connexion
Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital

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

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

Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital


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()
Copier après la connexion

Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital

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

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()
Copier après la connexion
Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital

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

3.3 Graphique à barres des dix principales ventes de médicaments

Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital

Les ventes sont fondamentalement proportionnelles aux ventes. 3.4 Commandes quotidiennes pendant une semaine pour être plus populaire Drug Peak
.
3.5 Nombre de commandes par jour dans un mois naturel

Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital

On constate que les 5, 15 et 25 sont les périodes de pointe pour les ventes de médicaments, notamment le 15 de chaque mois . 3.6 Calendrier
Le calendrier permet de voir de manière plus intuitive les ventes quotidiennes et hebdomadaires au cours d'un mois :

Pandas+Pyecharts | Visualisation des données sur les ventes de médicaments à l'hôpital

3.6 Nuage de mots du nom du médicament

En raison de l'espace, certains codes ne sont pas entièrement affichés. Si nécessaire, vous pouvez l'obtenir ci-dessous. Il peut également être exécuté en ligne (y compris tous les codes + fichiers de données)  : . https://www.heywhale.com/mw/project/61b83bd9c63c620017c629bc

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:Python当打之年
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!