我爱编程结构化 · 科技

Kaggle Data Challenge 第三天

2018-04-11  本文已影响0人  一森一森
Kaggle_logo.png

Abstract:18年复活节前的五天,kaggle举办了数据预处理的五个挑战。这里做每天学习到的技术要点的回顾。这篇是第三天的内容,主要是有关日期数据的解析。


日期数据会有好多形式,DDMMYYYY(UK),MMDDYY(US),YYYYMMDD(CN)。Python没法自动识别这些字符是日期,所以统统存为Object的格式。要想使用pandas做日期数据的识别和调用,必须先把这些日期的数据转换成「datetime64」的格式。

设置环境

# modules we'll use
import pandas as pd
import numpy as np
import seaborn as sns
import datetime

# read in our data
earthquakes = pd.read_csv("../input/earthquake-database/database.csv")
landslides = pd.read_csv("../input/landslide-events/catalog.csv")

转化日期为datetime

识别一串字符是日期,并把这串字符转化成2000-01-30,同中国格式。
转化后的数据才能进行pandas.Series.dt.day等操作。

首先需要告诉python这些数据里的时间字符是什么format,举个例子:

知道了格式后,日期数据Series操作:

# create a new column, date_parsed, with the parsed dates
landslides['date_parsed'] = pd.to_datetime(landslides['date'], format = "%m/%d/%y")

如果原始数据里的时间格式都不统一,可以用一下的命令让python自己猜,但是速度慢,准确率也不保证:

earthquakes.Date_parsed = pd.to_datetime(earthquakes.Date, infer_datetime_format = True)
earthquakes.Date_parsed.head()

对datetime类型数据的操作

数据转化为datetime64以后就可以提取日期了。

# get the day of the month from the date_parsed column
day_of_month_landslides = landslides['date_parsed'].dt.day

把事故发生在一个月份中的日期提取出来,然后看看各个日期和事故发生的关系:

# remove na's
day_of_month_landslides = day_of_month_landslides.dropna()

# plot the day of the month
sns.distplot(day_of_month_landslides, kde=False, bins=31)
image.png

如果这篇文章对你有所帮助,还请帮忙点赞打赏评论分享~谢谢🙏


上一篇 下一篇

猜你喜欢

热点阅读