python 画图、简单报表制作

代码部分

# -*- coding:utf-8 -*- 

#统计
#运行环境python2.7
#需要安装python,numpy,pandas,matplotlib等
import sys
reload(sys)
sys.setdefaultencoding('gb18030')
#sys.setdefaultencoding('utf8')


import numpy as np
import pandas as pd
from pandas import Series,DataFrame


file_name = r'D:/workspace/pythonML/yucefenxi/telephonedirectory.xlsx'
dframe = pd.read_excel(file_name,skiprows=[0])
#######################################
#查看数据
#print dframe
########################################
##统计年度业务总量
dframe.columns = ['index','name','telephonenumber','date']
dframe['date'] = pd.to_datetime(dframe['date'])
dframe = dframe.set_index('date')
df2014 = dframe['2014']
df2015 = dframe['2015']
df2016 = dframe['2016']
#print df2014.size,df2015.size,df2016.size


#########################################
#统计某个单位的业务量,折线图,柱状图显示
#以2016年为例
df2016 = df2016.reset_index()
df_x = df2016.groupby(['name']).count().reset_index().iloc[:,[0]]
df_y = df2016.groupby(['name']).count().reset_index().iloc[:,[1]]


x = [i[0] for i in np.array(df_x)]
y = [j[0] for j in np.array(df_y)]
#y.sort()#如果需要排序显示,用sort()函数


#柱状图显示
import matplotlib.pyplot as plt 
def draw_bar(labels,y):
plt.figure(2, figsize=(6,6)) 
plt.rcParams['font.sans-serif']=['SimHei']#用来显示中文
plt.rcParams['axes.unicode_minus']=False#用来显示负号
plt.bar(range(len(y)),y,color='rgb',tick_label=labels,align='center',alpha = 0.5)
plt.title("2016年业务量柱状图显示") 
plt.xlabel("业务姓名")
plt.ylabel("业务数量")
plt.show() 
draw_bar(x,y)


#饼图显示
import numpy as np  
import matplotlib.pyplot as plt  
import matplotlib as mpl  
  
def draw_pie(labels,y):    
    plt.figure(1, figsize=(6,6))
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus']=False  
    expl = [0]*len(y)  
    colors  = ["blue","red","coral","green","yellow","orange"]  
    plt.pie(y, explode=expl, colors=colors, labels=labels, autopct='%1.1f%%',pctdistance=0.8, shadow=True)  
    plt.title('2016年业务量饼图显示', bbox={'facecolor':'0.8', 'pad':5})  
    plt.show()  
draw_pie(x,y)  


#折线图显示
def draw_plot(labels,y):
plt.figure(1, figsize=(6,6))
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False  
plt.plot(range(len(y)), y,linewidth=3,color='r',marker='o',markerfacecolor='blue',markersize=8)
plt.xticks(range(len(y)),labels, rotation=0)
plt.title('2016年业务量柱状图显示') 
plt.xlabel('业务姓名') 
plt.ylabel('业务数量') 
plt.show()
draw_plot(x,y)


#########################################
#按月统计
#获取某月的数据
#print dframe['2016-11'] # 获取某月的数据
#获取某个时间段内的数据
#print dframe['2015-11-06':'2016-11-06']


#########################################
#以2016年为例,按月统计
df_period = dframe['2016-01-01':'2016-12-31'].to_period('M')
#按年统计为A 按季度统计为Q 按月统计为M
#print df_period
df2016m_x = df_period.reset_index().groupby(['date']).count().reset_index().iloc[:,[0]]
df2016m_y = df_period.reset_index().groupby(['date']).count().reset_index().iloc[:,[1]]
m_x = [i[0].month for i in np.array(df2016m_x)]
m_y = [j[0] for j in np.array(df2016m_y)]


#按月柱状图显示
def draw_bar(labels,y):
labels = [str(i)+'月' for i in labels]
plt.figure(2, figsize=(6,6)) 
plt.rcParams['font.sans-serif']=['SimHei']#用来显示中文
plt.rcParams['axes.unicode_minus']=False#用来显示负号
plt.bar(range(len(y)),y,color='rgb',tick_label=labels,align='center',alpha = 0.5)
plt.title("2016年业务量按月统计柱状图显示") 
plt.xlabel("业务月份")
plt.ylabel("业务数量")
plt.show() 

draw_bar(m_x,m_y)



数据部分

A B C D
1 老爸 13385452147 2014/4/23
2 老婆 15236985241 2014/5/3
3 老婆 15236985241 2014/1/12
4 老姐 15447877758 2014/4/5
5 老妹 13747855698 2014/5/3
6 哥哥 13152563698 2014/1/12
7 姐姐 13566982325 2014/4/5
8 姐姐 13566982325 2014/5/3
9 弟弟 13254122323 2015/1/12
10 老妹 13747855698 2014/4/5
11 老妹 13747855699 2015/5/3
12 老妹 13747855700 2015/1/12
13 老妹 13747855701 2014/4/5
14 老妹 13747855702 2014/5/3
15 老妹 13747855703 2014/1/12
16 老妹 13747855704 2014/4/5
17 老妹 13747855705 2014/5/3
18 老妹 13747855706 2015/1/12
19 老妹 13747855707 2014/4/5
20 老妹 13747855708 2014/5/3
21 老妹 13747855709 2014/1/12
22 老妹 13747855710 2014/4/5
23 老妹 13747855711 2014/5/3
24 老爸 13385452147 2014/1/12
25 老妈 13014754588 2014/4/5
26 老师 15896583323 2014/5/3
27 老姐 15447877758 2016/1/12
28 老婆 15236985241 2014/4/5
29 老爸 13385452147 2014/5/3
30 老爸 13385452147 2014/4/5
31 老婆 15236985241 2014/5/3
32 老婆 15236985241 2014/1/12
33 老姐 15447877758 2014/4/5
34 老妹 13747855698 2014/5/3
35 哥哥 13152563698 2014/1/12
36 姐姐 13566982325 2014/4/5
37 姐姐 13566982325 2014/5/3
38 弟弟 13254122323 2015/1/12
39 老妹 13747855698 2014/4/5
40 老妹 13747855699 2015/5/3
41 老妹 13747855700 2014/1/12
42 老妹 13747855701 2014/4/5
43 老妹 13747855702 2014/5/3
44 老妹 13747855703 2014/1/12
45 老妹 13747855704 2014/4/5
46 老妹 13747855705 2014/5/3
47 老妹 13747855706 2014/1/12
48 老妹 13747855707 2014/4/5
49 老妹 13747855708 2014/5/3
50 老妹 13747855709 2014/6/12
51 老妹 13747855710 2014/4/5
52 老妹 13747855711 2014/5/3
53 老爸 13385452147 2014/1/12
54 老妈 13014754588 2014/4/5
55 老师 15896583323 2014/5/3
56 老姐 15447877758 2015/7/12
57 老婆 15236985241 2015/4/5
58 老爸 13385452147 2015/5/3
59 老爸 13385452147 2015/4/5
60 老婆 15236985241 2015/5/3
61 老婆 15236985241 2015/1/12
62 老姐 15447877758 2015/4/5
63 老妹 13747855698 2015/5/3
64 哥哥 13152563698 2015/1/12
65 姐姐 13566982325 2015/4/5
66 姐姐 13566982325 2015/5/3
67 弟弟 13254122323 2015/1/12
68 老妹 13747855698 2015/4/5
69 老妹 13747855699 2015/5/3
70 老妹 13747855700 2015/1/12
71 老妹 13747855701 2015/4/25
72 老妹 13747855702 2015/5/3
73 老妹 13747855703 2015/1/12
74 老妹 13747855704 2015/4/5
75 老妹 13747855705 2015/5/3
76 老妹 13747855706 2016/1/12
77 老妹 13747855707 2016/4/5
78 老妹 13747855708 2016/5/3
79 老妹 13747855709 2016/1/12
80 老妹 13747855710 2016/4/5
81 老妹 13747855711 2016/5/3
82 老爸 13385452147 2016/1/12
83 老妈 13014754588 2016/4/5
84 老师 15896583323 2016/5/3
85 老姐 15447877758 2016/1/12
86 老婆 15236985241 2016/4/5
87 老爸 13385452147 2016/5/3
88 老爸 13385452147 2016/4/5
89 老婆 15236985241 2016/5/3
90 老婆 15236985241 2016/1/12
91 老姐 15447877758 2016/4/5
92 老妹 13747855698 2016/5/3
93 哥哥 13152563698 2016/1/12
94 姐姐 13566982325 2016/4/5
95 姐姐 13566982325 2016/5/3
96 弟弟 13254122323 2016/1/12
97 老妹 13747855698 2016/4/5
98 老妹 13747855699 2016/5/3
99 老妹 13747855700 2016/1/12
100 老妹 13747855701 2016/4/5
101 老妹 13747855702 2016/5/3
102 老妹 13747855703 2016/1/12
103 老妹 13747855704 2016/4/5
104 老妹 13747855705 2016/5/3
105 老妹 13747855706 2016/6/12
106 老妹 13747855707 2016/7/5
107 老妹 13747855708 2016/5/3
108 老妹 13747855709 2016/1/12
109 老妹 13747855710 2016/4/5
110 老妹 13747855711 2016/5/3
111 老爸 13385452147 2016/1/12
112 老妈 13014754588 2016/4/5
113 老师 15896583323 2016/5/3
114 老姐 15447877758 2016/1/12
115 老婆 15236985241 2016/4/5
116 老爸 13385452147 2016/5/3
100 老妹 13747855701 2016/7/5
101 老妹 13747855702 2016/8/3
102 老妹 13747855703 2016/9/12
103 老妹 13747855704 2016/10/5
104 老妹 13747855705 2016/11/3
105 老妹 13747855706 2016/10/12
106 老妹 13747855707 2016/10/5
107 老妹 13747855708 2016/10/3
108 老妹 13747855709 2016/11/12
109 老妹 13747855710 2016/12/5
110 老妹 13747855711 2016/12/3
111 老爸 13385452147 2016/7/12
112 老妈 13014754588 2016/9/5
113 老师 15896583323 2016/9/3
114 老姐 15447877758 2016/9/12
115 老婆 15236985241 2016/7/5
116 老爸 13385452147 2016/9/3
112 老妈 13014754588 2016/2/5
113 老师 15896583323 2016/3/3
114 老姐 15447877758 2016/2/12
115 老婆 15236985241 2016/3/5
116 老爸 13385452147 2016/3/3







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值