前言
昨天在网赛中做了一道题,虽然是外国人的Englis题目,但是内容很有学习的价值,值得仔细的学习,今天就把我所收获的一部分记录下来。其一:做个学习的资料记录。其二:分享出来,供大家参考。
(收获了对处理大数据的又一次认识!!!)
这是一道将DataFrame的日期数据转换为python能认识的题目。这里重点讲一下to_datetime的部分使用。
首先说一下:
- 1/17/07 has the format "%m/%d/%y"
- 17-1-2007 has the format "%d-%m-%Y"
这是一部分的时间转换格式,通过以上的格式,你可以将DataFrame中的时间格式转换为以下等python格式:
0 2007-03-02 1 2007-03-22 2 2007-04-06 3 2007-04-14 4 2007-04-15 Name: date_parsed, dtype: datetime64[ns]
看见没有dtype:datetime64,这是转换过后的形式,其实你可以将原数据使用dtype查看列,来看它的格式。你会发现它是object形式的。这里说一下。这个object格式一般是python用来记录可变化的兑现的格式。这个格式它并不能认出是时间格式,尽管我们一眼就能看出(人和机器的区别在此)。
data = pd.read_csv('path') #这里我们得到data数据 data['date'].heade() #查看一下日期列的样子
0 01/02/1965 1 01/04/1965 2 01/05/1965 3 01/08/1965 4 01/09/1965 Name: Date, dtype: object
可以看出它为object格式,并非日期格式。
data['date_parsed'] = pd.to_datetime(data['date'],format="%m/%d/%y")
上面为 我们按python格式转换时间,并添加到新的一列中去。
dara['date_parsed'].head() #查看一下结果
0 1965-01-02 1 1965-01-04 2 1965-01-05 3 1965-01-08 4 1965-01-09 Name: data_parsed, dtype: datetime64[ns]
可以看到不论形式还是类型都改变了,当然这只是一点皮毛,如果只是这里点,这个博客意义不大
其实在使用上面语句转换时间是,并不是这么顺利:
/opt/conda/lib/python3.6/site-packages/pandas/core/tools/datetimes.py in _convert_listlike(arg, box, format, name, tz) 271 try: 272 result = array_strptime(arg, format, exact=exact, --> 273 errors=errors) 274 except tslib.OutOfBoundsDatetime: 275 if errors == 'raise': pandas/_libs/tslibs/strptime.pyx in pandas._libs.tslibs.strptime.array_strptime() ValueError: time data '1975-02-23T02:58:41.000Z' does not match format '%m/%d/%Y' (match)
一部分错误信息如上。
面对加载都要加载半天的数据出了错误,你真的是无助的,如果要去看数据怕是要看一天。
当然有人会说不是有错误信息吗?当然我知道,但是一但当信息量大了以后,当时是茫然的。花了半天查找其他时间的转换方式。无果。于是静下心来发现问题。可以看出它说有一下格式不能转换。
'1975-02-23T02:58:41.000Z'
所以我又换了一种格式将时分秒都匹配了,又提醒年月日不匹配。反复的验证后发现应该是原数据有问题,部分时间并不是同意的格式。哈哈发现问题了,我们可以修改了。
我第一次的修改方式为:
data['over_long'] = data['Date'].apply(len) #添加一列记录没行时间的长度 data.loc[data['over_long'] > 10] #输出大于正常数据的行 这里会发现缺失有那么几行在作怪!!!
normal_dates = data.loc[data['over_long'] < 11] #筛选出正常数据 normal_dates = normal_dates.copy() #拷贝 normal_dates['data_parsed'] = pd.to_datetime(normal_dates['Date'],format='%m/%d/%Y') #再次转换时间,发现没有报错了 哈哈 normal_dates['data_parsed'].head(10) #输出查看没问题的
以上是我的第一次解决方法。
后续在别人的指导下了解了其他的几种更好的方法。(毕竟我删除数据的方式不好)
第一种和第二种:
data['date_parsed'] = pd.to_datetime(data['Date'], format = "%m/%d/%Y", errors = 'coerce')
data['date_parsed'] = pd.to_datetime(data['Date'],infer_datetime_format=True)
两个都能实现我试了一下。毕竟对to_datetime不太熟悉所以犯了错。
OK!全部完成了。但是我想说的以上都不是最重要的。
最重要的是一种经验的掌握。当你面对大量的数据时千万不要紧张,它们也是小数据构成的,只要冷静下来,你就能想到方法来解决。这才是我想说的!!!与君共勉。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]