Python实现对不同省份疫苗的可视化分析

结合使用pandas,tk,os,matplotlib,re库对各省份疫苗文件进行分析,并将数据可视化
通过面对对象的概念编程,代码如下:

import pandas as pd  
import tkinter as tk  
import tkinter.ttk as ttk  
import os  
import matplotlib.pyplot as plt  
import pylab as pl  
import re  
  
plt.rcParams["font.family"]="SimHei"  
plt.rcParams['axes.unicode_minus']=False  
class GUIAPP:  
     ########获得省名##########  
    def get_file_name(self):  
        filepath="files"  
        self.filesname=os.listdir(filepath)  
        self.provname=[]  
        for item in self.filesname:  
            item1,iten2=item.split(".",1)  
            self.provname.append(item1)  
              
    #######将所有文件整合成一个dataFrame对象,并对数据进行修正#######                 
    def get_all(self):  
        self.all=[]  
        for file in os.listdir('files/'):  
            self.all.append(pd.read_csv('files/'+file))  
        for x in range(1,len(self.all)):  
            self.all[0]=self.all[0].append(self.all[x])  
        self.all=self.all[0]  
        self.all=self.all[(self.all['price']!='议价失败') & (self.all['price']!='GMP到期,放弃议价') & (self.all['price']!='''企业放弃议价''') & (self.all['price']!='参考采购价参考(元)')& (self.all['price']!='未报价')]  
        self.all['price']=self.all['price'].apply(lambda x: float(re.split(r'元|.|/',str(x))[0]))  
        self.DrugName=self.all["name"].unique()  
        self.DrugName=list(self.DrugName)  
          
     ################获得公司名称##############                
    def get_company_name(self):  
        self.company=list(self.all["create_company"].unique())  
          
                       
    ########根据省名获取药品价格图###########         
    def get_drug_information(self,event):  
        plt.close()  
        plt.figure(figsize=(15,10))  
        self.name=self.varProv.get()  
        data=self.all[self.all["prov"]==self.name]  
        drug=list(data["name"])  
        price=list(data["price"])  
        plt.scatter(drug,price)  
        plt.title("{}疫苗价格图".format(self.varProv.get()))  
        pl.xticks(rotation=45)  
        plt.show()  
          
          
     ###########画出生产某个疫苗的公司价格图###########    
    def get_name_and_drow(self,event):  
        plt.close()  
        plt.figure(figsize=(15,10))  
        self.N=self.varDrugName.get()  
        data=self.all[self.all["name"]==self.N]  
        company=list(data["create_company"])  
        price=list(data["price"])  
        plt.scatter(company, price)  
        pl.xticks(rotation=45)  
        plt.title("{}疫苗价格图".format(self.varDrugName.get()))  
        plt.show()  
          
     #########获得某家公司所产生的疫苗并画图##############    
    def get_drug(self,event):    
        plt.close()       
        plt.figure(figsize=(15,10))  
        self.drugName=self.all[self.all["create_company"]==self.varDrug.get()]  
        self.com1=list(self.drugName["name"])  
        self.com=[]  
        for item in self.com1:  
            item1=item[0:6]  
            self.com.append(item1)  
        self.pri=list(self.drugName["price"])  
        plt.scatter(self.com,self.pri)   
        pl.xticks(rotation=45)  
        plt.title("{}公司疫苗研发定价情况".format(self.varDrug.get()) )      
        plt.show()  
          
     
    def __init__(self):  
        self.window=tk.Tk()  
        self.window.geometry("400x800")  
        self.window.resizable(height=False,width=False)  
        self.window.title("疫苗情况分析选择器")  
        self.get_file_name()     #获取省份名称  
        self.get_all()           #获取所有信息  
        self.get_company_name()  #获取公司名称         
        self.frm1=tk.Frame(self.window,height=780,width=220).place(x=10,y=10)  
        self.varProv=tk.StringVar()  
        self.varDrug=tk.StringVar()  
        self.varDrugName=tk.StringVar()   
        self.b1=tk.Button(self.frm1,text="不同省份疫苗价格情况",font="楷体",bg="white").place(x=10,y=270)  
        self.cb1=ttk.Combobox(self.frm1,textvariable=self.varProv,value=tuple(self.provname))    
        self.cb1.current(0)  
        self.cb1.bind("<<ComboboxSelected>>",self.get_drug_information)  
        self.cb1.place(x=10,y=300)  
        self.b2=tk.Button(self.frm1,text="不同公司生产疫苗情况",font="楷体",bg="white").place(x=10,y=370)  
        self.cb2=ttk.Combobox(self.frm1,textvariable=self.varDrug)  
        self.cb2["value"]=self.company  
        self.cb2.current(0)  
        self.cb2.bind("<<ComboboxSelected>>",self.get_drug)  
        self.cb2.place(x=10,y=400)     
        self.b3=tk.Button(self.frm1,text="不同疫苗生产情况",font="楷体",bg="white").place(x=10,y=470)  
        self.cb3=ttk.Combobox(self.frm1,textvariable=self.varDrugName)  
        self.cb3["value"]=self.DrugName  
        self.cb3.current(0)  
        self.cb3.bind("<<ComboboxSelected>>",self.get_name_and_drow)  
        self.cb3.place(x=10,y=500)  
        self.window.mainloop()  
          
         
def main():  
    app=GUIAPP()  
      
if "__name__"==main():  
    main()  

运行结果如下:
右边是选择器,选择想要看的图,左边是画出来了的图

可以从不同省份,不同公司,不同疫苗是哪个角度去分析数据,分别表示某个省份疫苗情况分析,某个公司生产的疫苗情况分析,某个疫苗不同公司生产的情况分析。

``


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值