pandas
可能是我最高频使用的库,基于它的易学、实用,我也非常建议朋友们去尝试它。——尤其当你本身不是程序员,但多少跟表格或数据打点交道时,pandas
比 excel
的 VBA
简单优雅多了。
pandas
善于处理表格类数据
,而我日常接触的数据天然带有时间日期属性,比如用户行为日志、爬虫爬取到的内容文本等。于是,使用 pandas
也就意味着相当频繁地与时间日期数据打交道。这篇笔记将从我的实战经验出发,整理我常用的时间日期类数据处理、类型转换的方法。
与此相关的三个库如下。
import time
import datetime
import pandas as pd
其中,time
和datetime
都是 python
自带的,pandas
则是一个第三方库。换言之,前两者无需额外安装,第三方库则需要通过pip install pandas
命令行自行安装。如何检查自己是否安装了某个库,如何安装它,又如何查看和更新版本,对新手来说是一个比较大的话题,也是基础技能,值得另外整理一篇笔记,就不在这里占篇幅了。
一、time模块
对time
模块,我最常用到的功能就三个:
- 指定程序休眠;
- 获取当前时间戳;
- 时间戳与本地时间的互相转换
time.sleep(s)
指定程序休眠 s 秒
指定程序休眠时间,通常是在长时间运行的循环任务中进行。比如爬虫任务,控制读取网页的时间间隔;自循环任务的时间间隔,调用浏览器打开网页的时间间隔等等。
先用两个打印语句,辅助观察和理解time.sleep()
的效果:
print(datetime.datetime.now())
time.sleep(5)
print(datetime.datetime.now())
至于长时间运行的循环任务,我通常是把核心业务逻辑封装好,利用jupyter lab
自带的多进程特定,建一个 notebook
放入下面这个函数去持续运行。
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
def repeat_myself(how_many_times = 10):
print('--------',how_many_times,'----------')
# 被封装的核心代码
your_main_def()
# 自循环减 1 ;如果剩余次数是0,则终止自循环
how_many_times += -1
if how_many_times == 0:
print(datetime.datetime.now(),'stop it.')
return
# 每次调用设定一个时间间隔
print(datetime.datetime.now(),'have a rest')
how_long = random.randint(30,120)
time.sleep(how_long)
return repeat_myself(how_many_times)
repeat_myself(12)
time.time()
获取当前时间戳
最初我认为无需急于掌握时间戳这个技能点,但实战中,1) 我的爬虫有时爬取到时间戳类型的数据,为了易读,要把它转换为正常人能看懂的方式;2) 使用 mysql
时我关心存储所占用的空间以及读写效率,并获知一个时间数据存成 char
不如时间戳更节省空间。好吧,实战需要,那么赶紧掌握起这个小技能吧。
先了解下如何生成时间戳。通过time.time()
得到的时间戳,是一个有着10位整数位 + 6位小数位的浮点数,可根据需要简单运算转换为需要的 10、13、16 位整数时间戳。
#