python数据分析中的时间处理(2)
来源:互联网 发布:网络主播瞳孔 编辑:程序博客网 时间:2024/06/07 14:43
本文用到的数据,可以加QQ跟群主获取:群名称:PYTHONERS-数据群 号:663468799学习python和数据分析推荐地方: www.lynda.com获取lynda官网会员的方式:http://item.taobao.com/item.htm?id=557746408785
1. time模块我们可以使用time.gmtime()函数将时间转换成更加易读的形式。该函数使用timestamp作为参数,返回struct_time类的一个实例对象。该实例对象可以用来表示当前时间的一些属性。比如:
- tm_year: timestamp的年份
- tm_mon: timestamp的月份(1-12)
- tm_mday: timestamp的日期(1-31)
- tm_hour: 时间戳的小时(0-23)
- tm_min: 时间戳的分钟(0-59)
current_time = time.time()current_struct_time = time.gmtime(current_time)current_year = current_struct_time.tm_year
需要注意的是time模块UTC时间,关于UTC时间,点击这里https://baike.baidu.com/item/协调世界时/787659?fr=aladdin
2. datetime模块
当日期计算量大时,datetime更加好用。比如需要计算时间跨度和不同时区时。
基于datatime类创建一个对象:
date_2017 = datetime.datetime(year=2017, month=12, day=31, hour=11, minute=23, second=12)
或者简化:date_2017 = datetime.datetime(year=2017, month=12, day=31)
获取当前的UTC时间的datetime对象,可以使用datetime.utcnow()函数,如下:
current_datetime = datetime.datetime.utcnow()
一旦我们创建了一个datetime对象,我们可以使用该对象的以下属性:
- year:返回年值作为整数。
- month:返回月值一个整数。
- day:返回整数值。
- hour:将小时值返回为整数。
- minute:返回小数值作为整数。
- second:返回第二个值作为整数。
- microsecond:将微秒值作为整数返回
3. 时间的计算
当我们需要对时间进行计算的时候,我们需要用到datetime模块中的timedelta类。
当我们创建timedelta的时候,我们可以指定以下参数:
- weeks
- days
- hours
- minutes
- seconds
- milliseconds
- microseconds
today = datetime.datetime.now()
然后,我们创建一个timedelta的实例对象,用来表示时间长度;diff = datetime.timedelta(weeks=3, days=2)
然后,我们计算3周和2天后的时间:future = today + diff
当然我们也可以计算该时间跨度前的时间:past = today - diff
4. 时间输出的格式化
datetime对象提供了一个格式化输入时间的方法,datetime.strftime()
格式化日期:
%Y/%y ,%B/%b, %d, %A/%a -- 2015/15 , September/Sep, 25, Sunday/Sun
%c 本地的时间格式 %x 本地时间 %X 本地日期
格式化时间:
%I/%H 12小时/24小时 %M 分 %S 秒, %p
print(now.strftime("%Y")) # 2016print(now.strftime("%y")) # 16print(now.strftime("%B")) # Septemberprint(now.strftime("%b")) # Sepprint(now.strftime("%d")) # 25print(now.strftime("%A")) # Sundayprint(now.strftime("%a")) # Sunprint(now.strftime("%c")) # 本地时间格式print(now.strftime("%x")) # 本地时间print(now.strftime("%X")) # 本地日期
例子:datetime.datetime.now().strftime("%I:%M%p on %A %B %d, %Y")
04:07PM on Thursday October 05, 2017
5. 解析日期正如我们可以将datetime对象格式化输出一样,我们同样可以对一个日期字符串进行解析。我们可以使用datetime.datetime.strptime()函数转换日期字符串:
- 日期字符串(例如"Mar 03, 2010")
- 格式字符串(例如"%b %d, %Y")
需要注意的是,strptime()是一个函数,而不是某个对象上调用的方法。 使用方法如下:格式:datetime.datetime.strptime(字符串,解析格式)-> 返回一个datetime对象march3 = datetime.datetime.strptime("Mar 03,2010", "%b%d, %Y")
这样我们可以将一个字符串日期,转换成一个datetime实例对象。strptime()函数一般可以和strftime()函数一起使用。import datetimemystery_date = datetime.datetime.strptime(mystery_date_formatted_string, "%I:%M%p on %A %B %d, %Y")print(mystery_date.strftime("%I:%M%p on %A %B %d, %Y"))
6. AskReddit数据练习reddit是一个内容和社区网站,用户可以向具有相似兴趣的人群提交链接,短信和其他类型的内容。我们将使用的数据,来之2015年之前与AskReddit的前1000名职位数据集,如下:
- Title:帖子的标题
- Score:该帖子收到的upvote的数量
- Time:当帖子出现(时间戳)
- Gold:Reddit Gold用户发布了多少帖子
- NumComs:该帖子收到的评论数
Title
Score
Time
Gold
NumComs
"What's your internet ""white whale"", something you've been searching for years to find with no luck?"
11510
1433213314.0
1
26195
What's your favorite video that is 10 seconds or less?
8656
1434205517
4
8479
What are some interesting tests you can take to find out about yourself?
8480
1443409636.0
1
4055
由于第二行的time是Unix timestamp, 我们无法阅读,需要通过一下函数转换:datetime_obj = datetime.datetime.fromtimestamp(1434205517)
第一步: 读取数据,转换日期
将该数据读入,然后转化成一个list_of_list,代码:
import csvimport datetimeports = scv.reader(open("askreddit_2015.csv")) # 读取数据将数据保存在一个嵌套列表中for post in posts: float_time = float(post[2]) # 将time列的数据转换成浮点型 post[2] = datetime.datetime.fromtimestamp(float_time) # 使用fromtimestamp将浮点数据转换成datetime对象 print(post[2])
2015-06-02 02:48:34
2015-06-13 14:25:17
2015-09-28 03:07:16 v
2015-08-21 20:23:43
第二步:统计制定月份个数
def month_count(i): count = 0 for row in posts: if row[2].month == i: count += 1 print(count) return countfeb_count = month_count(2)aug_count = month_count(8)
阅读全文
0 0
- python数据分析中的时间处理(2)
- 利用Python做数据分析中的异常处理
- 利用python进行数据分析-时间序列2
- Python中时间格式数据的处理
- python 处理dataframe中的时间字段
- Python中的时间处理大总结
- 利用Python进行数据分析--时间序列
- 《利用Python进行数据分析》--时间序列
- 分析python处理基本数据<一>
- 分析python处理基本数据<二>
- 分析Python处理基本数据<三>
- 分析python处理基本数据<四>
- Python数据分析处理库Pandas
- Python数据分析-数据处理-重复值处理
- Data Analysis学习笔记 --- Python数据清洗处理时间数据
- 《利用python做数据分析》第十章:时间序列分析
- 数据分析中的缺失值处理
- 数据分析中的缺失值处理
- 160个练手CrackMe-002
- windows批处理命令教程
- Error creating bean with name 'diaryDAO' defined in class path resource [applicationContext.xml]:
- 远程主机执行命令
- Hive的产生背景 & 概述 & 发展历程 & 架构 & 部署及简单入门
- python数据分析中的时间处理(2)
- PAT 甲级 1089. Insert or Merge (25)
- leetcode142.Linked List Cycle II
- ROS -by- Example slam
- 160个练手CrackMe-003
- 安装vue项目启动报错Cannot find module
- 数电实验,如何安装Quartus II软件?
- Ubuntu下查看Android APK 别名
- 一鼓作气(朝鲜歌曲)