pandas 时间序列的优化转化

#!/usr/bin/env Python3
__author__ = '未昔/angelfate'
__date__ = '2019/7/26 9:58'
# -*- coding: utf-8 -*-


print(pd.__version__)  # 我喜欢用 0.22.0。新的版本少了一些方法。画图 之类

# 文件有中文名字,记得加上 engine='python'。或者 pd.read_csv(open('中文路径文件'))。
df = pd.read_csv(r'E:\jupyter-notebook\大数据技术\数据分析-机器学习\豆瓣电影反贪风暴4+票房+数据抓取+数据分析\DouBanFilm_FanTanFengBao4.csv',engine='python', encoding='utf8')

print(df.head())

print('-'*40,'打印数据类型')
print(df.dtypes) # 打印类型

print('-'*40,'打印指定坐标数据')
print(df.iat[0,0])  # 打印第 (0,0) 个数据

print('-'*40,'date_time列格式化为datetime对象序列')
# object对象是一个容器,不仅仅能够装str,任何不能转换的数据类型都可以。如果以string类型处理date是不高效的,并且耗内存。
# 针对时间序列数据,可以将date_time列格式化为datetime对象序列(Pandas中称为Timestamp)。
df['发布日期'] = pd.to_datetime(df['发布日期'])
df['发布时间'] = pd.to_datetime(df['发布时间'])
print(df['发布日期'].dtype, df['发布时间'].dtype) # 打印类型
print(df.head())  #

print('-'*40,'时间测试')
# date_time的格式已经自动转化了,但这还没完,在这个基础上,我们还是可以继续提高运行速度的。如何提速呢?为了更好的对比,我们首先通过 timeit 装饰器来测试一下上面代码的转化时间。

# 定义一个计时器,传入一个,并返回另一个附加了计时功能的方法
# 上面日格式转换代码看起来简单,但是执行效率如何呢?我们使用@timeit来测试一下,
@timeit
def convert(df, column_name):
    print('法1:')
    return pd.to_datetime(df[column_name])

convert(df, '发布日期')

@timeit
def convert_with_format(df, column_name):
    print('法2:')
    return pd.to_datetime(df[column_name],format='%Y-%M-%D')

convert_with_format(df, '发布日期')

pandas 时间序列的优化转化
pandas 时间序列的优化转化