数据分析笔记1

目录

datetime.datetime 和 pd.timestamp

(一)datetime.datetime( ) :将某一个str转化为时间类型datetime,用途广

(二)pd.to_datetime( ):将str转化为时间类型timestamp,用于时间切片

占位符f'{}'   。正则'%.1f''%test;

数据类型转换

(1)将某列object转换为int

(2)将某列float转换为object

(3)将某列int(年、月、日)转换为datatime


datetime.datetime 和 pd.timestamp

时间类型分为datetime和timestamp。对时间做处理一定要分清函数是属于哪个包里的,格式要变。

datetime:datetime-----------------------------------------

t_time = (datetime.datetime.strptime(item, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(seconds=frequency))

strptime输出日期格式,strftime输出字符串格式

datetime.strptime(str, ‘%Y/%m/%d’)。item.strftime('%Y-%m-%d %H:%M:%S')。

datetime.timedelta:如果要用,需要先将日期通过strptime确定为非字符串形式,进行非字符串操作

datetime.now()

datetime.day,datetime.month,datetime.year 分别表示一个datetime对象的日,月,年

pd:timestamp-----------------------------------------

pd.to_datetime

pd.date_range(start=None, end=None, periods=None, freq=None, tz=None, normalize=False, name=None, closed=None, **kwargs)  #也就是说至于用到date_range函数的时候才需要用pd.to_datetime,否则直接用datetime

datetime和timestamp比较

相同点:可自动更新和初始化,默认显示格式相同YYYY-MM-dd HH:mm:ss
不同点:
1. datetime的时间范围:不支持时区,8字节存储

2. timestamp的时间范围是:支持时区,存储毫秒数

time.strftime(time.localtime)

(一)datetime.datetime( ) :将某一个str转化为时间类型datetime,用途广

datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类。如果仅导入import datetime,则必须引用全名datetime.datetime。

    (1)datetime(%Y,%m,%d,%H,%M,%S):设定时间类型。datetime共有6个参数,分别代表的是年月日时分秒。其中年月日是必须要传入的参数,时分秒可以不传入,默认全为零。
 

eg:

   (2)datetime.strptime(str, ‘%Y/%m/%d’):将Str和Unicode转化为datetime.datetime(),由字符串格式转化为日期格式的函数。日期格式也可以是 '%Y-%m-%d %H:%M:%S'

    在很多情况下,我们的原始数据中的时间和日期并不是时间类型的,例如excel中可能是Unicode,csv中可能是Str。因此我们在进行时间切片之前首先要将非时间类型的时间数据转换为时间类型。

eg:

(3)datetime.datetime.strftime('%Y-%m-%d %H:%M:%S'):由日期格式转化为字符串格式

item.strftime('%Y-%m-%d %H:%M:%S')

(4)datetime.now()

(5)datetime.timedelta

frequency = frequency*60

datetime.timedelta(seconds=frequency)

t_time = (datetime.datetime.strptime(item, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(seconds=frequency))  #datetime才能和timedelta相加

(二)pd.to_datetime( ):将str转化为时间类型timestamp,用于时间切片

    pandas包的功能。和datetime.datetime( )功能类似。

    (1)

eg 输入一串str:     pd.to_datetime(str,format= ‘%Y/%m/%d’):设定时间类型

 eg 输入一列str:

            data['time_2']=data.appl_time.apply(lambda x: pd.to_datetime(x))

            data['time_3'] = pd.to_datetime(data['appl_time'])           

  (2)pd.to_datetime(str,format= ‘%Y/%m/%d’):将Str和Unicode转化为时间格式

eg:

(3)pd.date_range(start=None, end=None, periods=None, freq=None, tz=None, normalize=False, name=None, closed=None, **kwargs)

(4)timestamp也可以和datetime.timedelta做运算

data_360 = data[(data['time_2']<= back_time)&\
    (data['time_2']> (back_time + datetime.timedelta(-360)))]

占位符f'{}'   。正则'%.1f''%test;

 python中 f'{}' 用法=format:

  python中正则%用法:打印输出中,%为正则是与变量test结合使用的,'%.1f'

数据类型转换

object=str=dtype('O'),int64=int,float64=float,float和int都是数值型,只不过float是小数。规则:只有int或float之间才可以数值相加。如果要拼接而不运算,要转换为str。如果要进行日期类型的运算,如提取年份月份,要pd.to_datetime转换为datetime。

下表中展示的是Pandas、Python和Numpy中支持的数据类型,可以看到pandas中支持的类型是最丰富的的。

转化:

(1)将某列object转换为int

#对object进行必要的处理,分割之后取出第1个元素
df["2020年_新"] = df["2020年"].apply(lambda x:x.split("元")[0])
df["2019年_新"] = df["2019年"].apply(lambda x:x.split("元")[0])

#两种方法转换object为int格式
df["2020年_新"] = df["2020年_新"].astype("int")  
df['2019年_新'] = pd.to_numeric(df['2019年_新'], errors='coerce') 

#两列int才可以相加
df["前两年之和"] = df["2020年_新"] + df["2019年_新"] 
df 

(2)将某列float转换为object

df["增长率1"] = df["增长率"].apply(lambda x: str(round(100*x,2)) + "%") #或:
df["增长率2"] = df["增长率"].apply(lambda x: format(x,'.2%'))
df

(3)将某列int(年、月、日)转换为datatime

        方法一:要先通过str拼接

df["月"] = df["月"].astype(str)
df["年"] = df["年"].astype(str)
df["生日"] = df["年"] + "-" + df["月"] + "-" + df["日"] #先转换成str才能拼接

df["生日"] = df["生日"].apply(lambda x: pd.to_datetime(x,format="%Y-%m-%d"))
#str转换成datatime日期格式

        方法二:当属性名为英文时,pd.to_datetime可直接拼接int格式为日期格式

pd.to_datetime(df[['year', 'month', 'day']]) # 组合成日期

 感言:本部分可以通过多做练习题来熟练。推荐实例:

Pandas数据类型操作 - 知乎

Python数据分析常用语句(一)_JASMINE.K的博客-CSDN博客

Python数据分析常用语句(二)——时间格式处理_JASMINE.K的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值