python日期格式化与绘图

画一个量随着时间变化的曲线是经常会遇到的需求,比如画软件用户数的变化曲线。画随时间变化的曲线主要用到的函数是matplotlib.pyplot.plot_date(date,num)。由于其第一个变量是datetime类型的,所以对于string类型的数据输入,首先需要进行格式化操作。

一、使用strptime进行string的格式化

1.1一个基本例子

time=datetime.datetime.strptime(‘2014-12-28 13:49:30‘,‘%Y-%m-%d %H:%M:%S‘)

 print time

2014-12-28 13:49:30

1.2常见的具体格式化对应关系

常见的对应关系如下表所示(2014-12-28 13:49:30),更多可以参见python对时间日期做格式化 - 走到天亮 - 博客园


Year


Month


Day


Hour


Minute


Second


%y


%Y


%m


%b


%d


%H


%I


%M


%S


14


2014


12


Dec


28


13


01


49


30

二、一个具体的画图例子

统计windows下软件首次安装的数目并画出散点图(按日统计)和柱状图(按年统计)

import _winreg
import datetime
import matplotlib.dates
import matplotlib.pyplot
import numpy as np
print "import winreg done!"

key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r"Software\Microsoft\Windows\CurrentVersion\Uninstall")
#key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r"Software\Microsoft\Windows\CurrentVersion\Explorer")
print key
all_software=[]
k=0
try:
    i=0
    while 1:
        subkey_string=_winreg.EnumKey(key,i)
        #print subkey_string
        try:
            j=0
            temp={}
            get_installDate=0
            #some subkey may not have installdate subkey and value
            while 1:
                #subkey=_winreg.OpenKey(key,"InstallDate")
                subkey=_winreg.OpenKey(key,subkey_string)
                name, value, type_value = _winreg.EnumValue(subkey,j)
                #print repr(name),repr(value)
                #print "name is "+name
                if name=="DisplayName":
                    #print "Name equals DisplayName"
                    temp["DisplayName"]=value
                if name=="InstallDate":
                    #print "Name equals installdate"
                    temp["InstallDate"]=value
                    get_installDate=1
                j+=1
        except WindowsError:
            #print ‘interruptted j=‘+str(j)
            if get_installDate:
                all_software.append(temp)
        #print repr(name)
        #print value
        i +=1
except WindowsError:
    print
for item in range(len(all_software)):
    all_software[item]["InstallDate"]=datetime.datetime.strptime(all_software[item]["InstallDate"].encode(‘ascii‘,‘ignore‘),‘%Y%m%d‘)
count={}
bar_by_year={}
bar_by_year[‘2012‘]=0
bar_by_year[‘2013‘]=0
bar_by_year[‘2014‘]=0
for item in all_software:
    if count.has_key(item["InstallDate"]):
        count[item["InstallDate"]]+=1
    else:
        count[item["InstallDate"]]=1
    bar_by_year[str(item[‘InstallDate‘].year)]+=1
xvalues=[]
yvalues=[]
for key,value in count.iteritems():
    xvalues.append(key)
    yvalues.append(value)
xvalues=matplotlib.dates.date2num(xvalues)
matplotlib.pyplot.figure(1)
matplotlib.pyplot.plot_date(xvalues,yvalues)
matplotlib.pyplot.figure(2)
xvalues_2=np.arange(3)
yvalues_2=bar_by_year.values()
fig2=matplotlib.pyplot.bar(xvalues_2,yvalues_2,0.5)
matplotlib.pyplot.xticks(xvalues_2+0.25, [‘2012‘,‘2013‘,‘2014‘], rotation=‘vertical‘)
matplotlib.pyplot.show()

#value, type = _winreg.QueryValueEx(key, "EnableAutoTray")

三、参考材料

[1]Python 操作注册表 - 无恙 - 博客园

[2]c++ - How can I enumerate/list all installed applications in Windows XP? - Stack Overflow

[3]winreg – Windows registry access — Python v3.0.1 documentation

[4]graph - plotting time in python with matplotlib - Stack Overflow

[5]沙湖王 | matplotlib绘图2

[6]Python图表绘制:matplotlib绘图库入门 - 蝶梦庄周 - 博客园

[7]ticks_and_spines example code: ticklabels_demo_rotation.py — Matplotlib 1.4.2 documentation

[8]api example code: barchart_demo.py — Matplotlib 1.4.2 documentation

时间: 2024-07-29 08:27:12

python日期格式化与绘图的相关文章

python 日期格式化常用标记

符号 说明             例子    %a  英文星期的简写 Mon  %A  英文星期的完整编写 Monday  %b  英文月份的简写 Jun  %B  英文月份的完整编写 June  %c  显示本地的日期和时间 06/30/14 01:03:17  %I  小时数,取值在01~12之间 01  %j  显示从本年第一天开始到当天的天数 181  %w (week)  显示今天是星期几,0表示星期天 1  %W  显示当天属于本年的第几周,星期一作为一周的第一天进行计算 26  

python日期格式化符号

python中时间日期格式化符号: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M

python日期格式化

print(time.strftime("%Y%m%d%H%M%S", time.localtime())) 得到:20141223100840

python中时间日期格式化符号

python中时间日期格式化符号: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M

Python时间模块(二)----时间日期格式化符号

python中时间日期格式化符号: ? %y 两位数的年份表示(00-99) ? %Y 四位数的年份表示(000-9999) ? %m 月份(01-12) ? %d 月内中的一天(0-31) ? %H 24小时制小时数(0-23) ? %I 12小时制小时数(01-12) ? %M 分钟数(00=59) ? %S 秒(00-59) ? %a 本地简化星期名称 ? %A 本地完整星期名称 ? %b 本地简化的月份名称 ? %B 本地完整的月份名称 ? %c 本地相应的日期表示和时间表示 ? %j

Python 日期和时间

time.time()获取当前时间戳 例如: #!/usr/bin/python # -*- coding: UTF-8 -*- import time; # 引入time模块 ticks = time.time() print "当前时间戳为:", ticks 结果: 当前时间戳为: 1491750320.74 时间元组 比如获取当前时间: #!/usr/bin/python # -*- coding: UTF-8 -*- import time localtime = time.l

Python 日期和时间(转)

Python 日期和时间 Python程序能用很多方式处理日期和时间.转换日期格式是一个常见的例行琐事.Python有一个 time 和 calendar 模组可以帮忙. 什么是Tick? 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Python附带的受欢迎的time模块下有很多函数可以转换常见日期格式.如函数time.time()用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当

django 过滤器 、日期格式化参数

django1.4 html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2012-08-26 16:00:00,但是页面显示的却是Aug. 26, 2012, 4 p.m. 为了页面和数据库中显示一致,需要在页面格式化时间,需要添加<td>{{ dayrecord.p_time|date:"Y-m-d H:i:s" }}</td> 类似的过滤器.刷新页面,即可正常显示. 过滤器相关: 一.形式

Python 日期和时间day12

Python程序能用很多方式处理日期和时间.转换日期格式是一个常见的例行琐事.Python有一个time and calendar模组可以帮忙. 什么是Tick? 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Python附带的受欢迎的time模块下有很多函数可以转换常见日期格式.如函数time.time()用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当前操作系统时间, 如下实例