今天又是数据分析的一天。
今天要是分析费用报销流程用时情况。碰到的第一个问题是对原用时字段列的重命名。我记得应该是用 rename,方法, 于是去查了一下相关资料。
df.rename (index = index_mapper, columns = columns_mapper)
例: df.rename (columns = {old.name : new.name})
其中的 mapper 是一个字典型数据, mapper 中文为映射,挺稀奇,因为我之前还没用过字典型参数呢。
同时我还意外发现,除了用。axis 的值除了可以填 0 或者 1,用 "columns" 和 ”index"也可以。其中用 “columns” 时,代表生成计算列,"index" 代表生成计算行,挺好的,这个很直观。
接下来是关于 pandas 中的一些时间计算。pandas 中的时间数据类型主要是两种:datetime 和 timedelta。
首先是 date time 类型,pandas 针对 datetime 有很多便捷操作,但在了解这些之前我还是先
了解下如何把数据转化为 date time 类型。通过查阅资料我发现,可以用 Pd.to_datetime() 的方法将数据转为 date time 类型。在这个方法里,pandas 能智能识别所给数据的日期格式,但是如果所给数据的日期格式比较罕见,就要自己设置 format 参数,告诉 pandas 正确的时间格式,相关参数包括
年,月,日:%Y,% m,%d
时,分,秒:%H,%M,%S
例: "%Y-%m-%d:%H%M%S",代表 年-月-日:时-分-秒 的格式。
一旦转化成功,pandas 对 datetime 的运用方式是很多的。当 index 为 datetimes 类型时,可以进行时间索引: [“year-month-day_1":"Year_month_day_2"]
当 values 为 date_times 类型时,可以用 dt 接口进行时间计算。这里在调用 dt 接口时有一点容易忽略,就是要记得像 dt,str 这种接口是针对 Series 使用的,并非针对 DataFrame 使用的。随后我查到了一些 dt 的使用方法。
提取年月日: dt.year,dt.month, dt.day
提取时分秒: dt.hour,dt.minute,dt.second
星期(数字版): dt.weekday (周一为 0)
星期(文字版):dt.day_name() (周一为 Monday)
季度: dt.quarter
转为格式化字符:dt.strftime()
然后是 timedelta 类型。
timedelta 是两个 datetime 的差额,获取 timedelta 有两种方式,一是用两个 datetime 相减,二是直接构造,构造代码是
pd.to_timedelta (data, unit: None)
to_timedelta 方法没有 to_datetime,那么方便,每一次都需要人工指定 data 的时间间隔单位。常用单位是
D/day, H/hour,minute,second 等
构造好 timedelta 之后,在后续代码中可以对它进行提取计算,目前我所掌握的就两种方法:
Series. dt.days
Series.dt.total_seconds()
今天的数据分析工作就到这里了,主要是 pandas 时间数据的一些处理方式,以及 df 列的映射重命名方式。
此外今天还有一个小发现,就是在使用 Jupiter Notebook 敲代码的时候,可以按 Tab 键进行联想补全,可以补全方法和变量名, 以后多试试用几次吧,看看好不好用。
ok,休息去
(图片来自于互联网:图片来源)
网友评论