PythonのExcelがデータを取得し、ヒストグラムを描画します

Pythonは始まったばかり、我々は〜より多くの交流を歓迎し
、最近、小規模なプロジェクトになるPHIN-22E_KRと呼ばれるシートの医療データファイル生データMAKO v2.xlsxを取得、データの指定された列へのアクセスやヒストグラムを描画します。次のようにファイルをエクセル
ここに画像を挿入説明

import xlrd
import numpy as np
import matplotlib.pyplot as plt

def plotavganalyse():
    data=xlrd.open_workbook("Raw Data MAKO v2.xlsx")  #打开excel文件
    #table1=data.sheet_by_name('PHIN-22E_CR')#通过excel里面的表名获取工作表
    #table1 = data.sheet_by_name('PHIN-22E_HR')
    table1 = data.sheet_by_name('PHIN-22E_KR')

    row1 = table1.row_values(0)  # 根据索引读取一行的数据,参数:行索引,开始列索引,结束列索引(不包含)
    for i in range(len(row1)):
        if row1[i] == 'KR_SCORE_CHANGE':
            oneindex1 = i
        elif row1[i] == 'CONSULTANT':
            oneindex2 = i
        elif row1[i] == 'Robotic':
            oneindex3 = i
            
	#获取KR_SCORE_CHANGE、CONSULTANT、Robotic三列的数据
    score_change=table1.col_values(oneindex1, 1)
    consultant=table1.col_values(oneindex2, 1)
    robotic=table1.col_values(oneindex3, 1)
    
	# 剔除CONSULTANT列表中重复元素,并按首字母顺序重新排列
    docter=list(sorted(set(consultant)))
    
    # docavglist存放各docter的手术得分的平均值
    docavglist=[]
     for i in range(len(docter)):
        templist=[]
        for m in range(len(consultant)):
            if consultant[m]==docter[i]:
                templist.append(score_change[m])
        docavglist.append(np.mean(templist))
        
    # docavglist1将docavglist中的数据保留三位小数(四舍五入)
    docavglist1=[]
    for i in range(len(docavglist))    :
        docavglist1.append(float('%.3f'%docavglist[i]))
	# docnameplot 获取docter中各医生的姓氏,便于画图
    docnameplot=[]
    for i in range(len(docter)):
        docnameplot.append((docter[i].split(' ',1))[1])
    #str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
    # 例如 str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
    # print str.split();  # 以空格为分隔符,包含 \n
    # print str.split(' ', 1);  # 以空格为分隔符,分隔成两个

    print("**************************开始绘图**************************")
    plt.bar(docnameplot, docavglist1)
    plt.axhline(y=np.mean(score_change),color="red") #在直方图上画一条平均值线
    plt.text(-2.6, np.mean(score_change), "Average", color = "r",size=14, alpha=0.7) #对平均值线添加文字信息,alpha为透明度
    plt.xlabel('Docter')
    plt.ylabel('Avg_SCORE_CHANGE')
    #在直方图中各柱的头上标注其值 
    for a, b in zip(docnameplot, docavglist1):
        plt.text(a, b + 1, b, ha='center', va='bottom')
    plt.show()

if __name__=='__main__':
    plotavganalyse()

下記の結果
ここに画像を挿入説明
、Pythonの初心者がアドバイスを歓迎します〜;コードの参照、多くのブロガーの記事は、ブロガーは私の感謝の気持ちを表現するために、これ以上の詳細な記録を関与しました

リリース元の2件の記事 ウォンの賞賛0 ビュー52

おすすめ

転載: blog.csdn.net/ajc_zh/article/details/104260020