Python第21课:以图形化报表对某数据表分析
时间 2019-02-03 下午3:30
主讲 刘培富
地点 四楼电教室
任务:
某系统数据表,共有记录3.3万条,以图形化分析该表各年龄段的人数分布情况。
分析:
首先,确定统计分析的规则,即对年龄段进行划分如下:
1, 未成年人,<18
2, 青年人,>=18且<40
3, 中年人,>=40且<60
4, 老年人,>=60
参考答案:
一,饼图:
import cx_Oracle
import matplotlib.pyplot as plt
conn=cx_Oracle.connect('lpf/****')
cur=conn.cursor()
sql="select GMSFHM from z****"
cur.execute(sql)
data=cur.fetchall()
a1,a2,a3,a4=0,0,0,0
for i in data:
x=2018-int(i[0][6:10])
if x<18:
a1+=1
if x>=18 and x<40:
a2+=1
if x>=40 and x<60:
a3+=1
if x>=60:
a4+=1
cur.close()
conn.close()
plt.rc("font",family="SimHei",size=10)
labels=['未成年人','青年人','中年人','老年人']
sizes=(a1,a2,a3,a4)
plt.pie(sizes,labels=labels,autopct="%1.1f%%",shadow=False,startangle=200,radius=1)
plt.title("某数据表人员年龄结构分析")
plt.show()
二、柱状图:
import cx_Oracle
import matplotlib.pyplot as plt
conn=cx_Oracle.connect('lpf/****l')
cur=conn.cursor()
sql="select GMSFHM from z****"
cur.execute(sql)
data=cur.fetchall()
a1,a2,a3,a4=0,0,0,0
for i in data:
x=2018-int(i[0][6:10])
if x<18:
a1+=1
if x>=18 and x<40:
a2+=1
if x>=40 and x<60:
a3+=1
if x>=60:
a4+=1
cur.close()
conn.close()
plt.rc("font",family="SimHei",size=10)
name_list=["未成年人","青年人","中年人","老年人"]
num_list=[a1,a2,a3,a4]
plt.xlabel("年龄段")
plt.ylabel("人数")
plt.bar(range(len(num_list)),num_list,color="rgb",tick_label=name_list)
plt.title("某数据表人员年龄结构分析")
plt.show()
以上,使用到oracle数据库,首先求出四类人群的数值,然后进行图形化呈现。
在计算四类人群的数值时,使用for遍历,效率较低。如果直接使用sql语句进行统计,运行效率更高,大家可以尝试。
网友评论