Python数据分析,千峰教育学习笔记

Python中time、datetime、random库

一、time库

1. 时间戳

时间戳是一个用来表示时间差的数字,他的目的是用时间差来表示时间,这个时间值表示的是,从1970-1-1 00:00:00 (格林威治时间)到你所给的时间之间相差了多少秒

时间戳保存时间的优点:

  • 节约内存,因为时间戳返回的是一个数字,所以占的内存比用一个字符串类型来保存时间用的内存少。
  • 方便加密,而且加密之后别人也不知道是否加密。
2. 睡眠 - sleep(秒)

让程序在此处暂停多少秒,再往下执行程序

3. 获取当前时间 - time()
import time
t1 = time.time()	# 获取当前时间,得到的是一个时间戳
4.获取本地当前时间(结构体时间)
# localtime() - 获取当前时间,得到的是一个结构体时间
# localtime(时间戳) - 获取该时间戳对应的结构体时间
t2 = time.localtime()
print(t2)
# time.struct_time(tm_year=2022, tm_mon=8, tm_mday=26, tm_hour=10, tm_min=51, tm_sec=27, tm_wday=4, tm_yday=238, tm_isdst=0)

在上面得到的结构体时间中tm_wday=4表示的是星期几,因为其取值范围是[0,6],所以这是星期五,tm_yday=228表示的是今天是今年的第228天。

5.将结构体时间转换为时间戳 - mktime()
print(time.mktime(t2))	# 1661482287.0
6.时间字符串和结构体时间之间的转换
  • 结构体时间 -> 字符串时间 strftime()

    print(time.strftime("%Y-%m-%d %H:%M:%S", t2))	# 2022-08-26 10:51:27
    

    转换为 星期 xx:xx

    print(time.strftime('%a %H:%M',t2))	#Fri 10:51
    
  • 字符串时间 -> 结构体时间 strptime()

    result = time.strptime("2021/3/4", "%Y/%m/%d")
    print(result)	# time.struct_time(tm_year=2021, tm_mon=3, tm_mday=4, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=63, tm_isdst=-1)
    

    注意前后的格式要相同,不然会出现不搭配的情况,会报错,例如写成如下情况就会报错
    print(time.strptime('2021-3-4','%Y/%m/%d')) 因为左边的格式是-,右边的是/,格式不一样就会报错

二、datetime库

1.datetime类
  1. 获取当前时间

    t1 = datetime.datetime.today()  # datetime.datetime(2022, 8, 26, 10, 19, 41, 607986)
    print(t1)	# 2022-08-26 10:19:41.607986
    t2 = datetime.datetime.now()	# datetime.datetime(2022, 8, 26, 10, 19, 41, 607986)
    
  2. 根据时间值创建时间对象

    t3 = datetime.datetime(2020, 8, 26)
    print(t3)	# 2020-08-26 00:00:00
    
  3. 根据时间字符串创建时间对象

    print(datetime.datetime.strptime('2021/3/21', '%Y/%m/%d')) # 2021-03-21 00:00:00
    
  4. 单独获取具体的时间信息

    print(t3.year, t3.month, t3.day, t3.hour, t3.weekday())
    # 2020 8 26 0 2
    
  5. 时间对象 -> 字符串时间

    print(t2.strftime('%Y-%m-%d %H:%M:%S'))
    # 2022-08-26 10:19:41
    
  6. 求时间差:时间对象1 - 时间对象2

    tt = datetime.datetime(2022, 5, 3, 9, 10)
    ot = datetime.datetime(2022, 10, 1, 10, 5)
    res = ot - tt  # 151 days, 0:55:00
    print(res, type(res))  # 151 days, 0:55:00 <class 'datetime.timedelta'>
    
  7. 时间对象转换为结构体时间

    print(tt.timetuple())
    
  8. 时间对象转时间戳

    print(tt.timestamp())	# 1651540200.0
    
2.timedelta
  • 给一个时间,计算几天后对应的天,几小时后对应的时间

    nt = datetime.datetime(2022, 10, 1, 10, 8, 59)
    # 32天后对应的天
    print(nt + datetime.timedelta(days=32))	# 2022-11-02 10:08:59
    
    # 5天6小时后
    print(nt + datetime.timedelta(days=5,hours=6))	# 2022-10-06 16:08:59
    

三、random库

  • random(),产生[0,1)的随机小数

    import random
    x = random.random()	# x为一个[0,1)之间的小数
    
    # 如何产生[0,20)之间的随机小数
    y = random.random()*20 # 这样就能产生一个[0,20)之间的小数了
    
    # 如何产生一个[5,30)之间的小数
    # 0*25~1*25 -> 0+5~25+5 —> 5~30
    z = random.random()*25+5
    
  • randrange(start,end,step),从一个range()对象中随机获取一个值

    n = random.randrange(1, 10, 2) # 用法和range()相识
    
  • sample(),从一个可迭代对象中不放回的抽取几个数放到一个列表中,返回值为一个列表

    print(random.sample([10, 34, 78, 90], 3))	# [34, 90, 78]
    print(random.sample(range(10), 3))	# [5, 7, 4]
    
  • choice(),从一个可迭代对象中随机抽取一个数并返回

    print(random.choice(range(10))) # 2
    
  • choices(序列,权重,求和权重,数量),是一个有放回的抽样,从一个可迭代对象中抽取几个值,返回值是一个列表

    print(random.choices([10, 34, 78, 90], k=3))	# [34,87,34]
    
    # 设置权重,控制某个值抽到的概率
    result = random.choices([10, 34, 78, 90], [1, 0.9, 0.5, 0.3], k=2)
    print(result)
    # 经过多次打印可以看到,90出现的概率特别低。这就是权重的效果
    
  • shuffle(),洗牌,打乱列表中原数据的顺序,是之间改变列表的操作,类似与列表的sort()方法

    nums = [10, 50, 66, 34, 53]
    random.shuffle(nums)
    print(nums)	# [10, 34, 53, 66, 50]
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小虫Py

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值