Pandas快速入门之第二节将时间戳和真实时间的转化

前言:

       本节主要介绍两个部分,第一个部分是介绍如何使用python将时间戳转化成我们需要的时间格式,第二个部分讲解在csv文件中如何根据已有时间信息,统计每天内每个广告数据出现的次数。

相关函数讲解

1: 如何使用python将时间戳转化成我们需要的时间格式, 直接使用封装好的time.localtime()即可,

      time.localtime()输入的为整数类型的数据,输出的是一个包含 年、月、日 时、分、秒 的str类型数据。

2: datetime.datetime() 表示的是时间类、本程序中首先把原始的数据转化成datetime()类,用于后面提取出常用的属性有年月日 

3:pandas中自带的去重函数drop_duplicates(),合并操作merge() 以及groupby() 见下一节。

# -*- coding: utf-8 -*-
# @Time    : 2019/5/24 10:30
# @Author  : YYLin
# @Email   : GXY4250
# @File    : timestamp_conversion.py
# 首先定义一列时间戳数据, 注意时间戳信息为int的数据
import time
list_timestamp = [1529958950, 1538221936, 1550731020, 1550439402, 1551920796, 1552467888]

for i, timestamp in enumerate(list_timestamp):
    # 使用localtime将数据整数型的时间戳转化成对应的时间
    time_local = time.localtime(timestamp)

    # 第一种数据的保存格式是: 2019-03-13 17:04:48
    # timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time_local)

    # 第二种数据的保存格式是: 2018-06-26 如果不需要 - 只要去掉即可
    time_local = time_local[0:9]
    timestamp = time.strftime("%Y-%m-%d", time_local)
    list_timestamp[i] = timestamp

print("将时间戳转化为时间之后的表达式是:", list_timestamp)

 

2、在csv文件中知道年月日,并且统计每个广告ID每天的出现次数。可以分成三步走。

     1、 第一步将数据中时间信息中的年 月 日提取出来并单独新建一个属性列,

     2、 按照年 月 日 以及广告ID进行groupby()操作,并统计其出现次数,得到新的series数据

     3、 将原始数据和新的series数据进行拼接操作,即可得到统计量,最后使用to_csv()保存数据即可

原始数据集的格式

 

最后生成的数据格式

 

相关代码:

​
# -*- coding: utf-8 -*-
# @Time    : 2019/5/24 10:19
# @Author  : YYLin
# @Email   : GXY4250
# @File    : count_ad_id_in_same_day.py
import pandas as pd
import datetime
import numpy as np

pd.set_option('display.max_columns', 1000)
pd.set_option('display.width', 1000)
pd.set_option('display.max_colwidth', 1000)
pd.set_option('display.max_rows', None)

# 生成点击数并且暂时删除测试集中没有的属性
Total_Exposure_Log_Data = pd.read_csv('data/ad_static_feature_top10000.csv')

print("原始数据集中的样式是:\n", Total_Exposure_Log_Data.info())
tfa = Total_Exposure_Log_Data.Creation_time.astype(str).apply(lambda x: datetime.datetime(int(x[:4]),
                                                                                            int(x[5:7]),
                                                                                            int(x[8:10])
                                                                                            ))

Total_Exposure_Log_Data['tfa_year'] = np.array([x.year for x in tfa])
Total_Exposure_Log_Data['tfa_month'] = np.array([x.month for x in tfa])
Total_Exposure_Log_Data['tfa_day'] = np.array([x.day for x in tfa])
print("增加单独的年月日之后的数据形状是:\n", Total_Exposure_Log_Data.info())

# 得到分组之后的数据
Group_Exposure_Data = Total_Exposure_Log_Data.groupby(['tfa_year', 'tfa_month', 'tfa_day', 'ad_id']).size().reset_index()
Group_Exposure_Data = Group_Exposure_Data.rename(columns={0: 'Exposure_data'})

# 对得到的两组数据进行拼接操作
Total_Exposure_Log_Data_one = Total_Exposure_Log_Data.drop_duplicates(
    subset=['tfa_year', 'tfa_month', 'tfa_day', 'ad_id'], keep="first").reset_index(drop=True)
Clicks_of_Exposure_Data = pd.merge(Total_Exposure_Log_Data_one, Group_Exposure_Data,
                                   on=['tfa_year', 'tfa_month', 'tfa_day', 'ad_id'])
print("按照年月日 广告id和广告竞价进行分组之后的数据是:\n", Clicks_of_Exposure_Data.head(5))

Clicks_of_Exposure_Data.to_csv('data/count_the_number_of_ad_id.csv', index=False)


​

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值