Pandas数据分析小技巧系列 第四集
Python与算法社区
共 1959字,需浏览 4分钟
· 2020-12-04
三步加星标
你好!我是 zhenguo
今天数据分析小技巧系列第 4 集,前三集在这里:
小技巧 12 dt 访问器求时分(HH:mm)的分钟差
构造如下四行两列的数据,时间格式为:HH:MM
使用pandas读入数据:使用的 pandas 版本为 0.25.1
df = pd.read_excel('test_date_subtract.xlsx')
df
与时间相关,自然第一感觉便是转化为datetime格式,这里需要注意:需要首先将两列转化为 str 类型。
直接使用 astype 转为 str 类型:
df['a'] = df['a'].astype(str)
df['b'] = df['b'].astype(str)
然后转化为 datetime 类型:
df['atime'] = pd.to_datetime(df['a'])
df['btime'] = pd.to_datetime(df['b'])
df
然后使用 dt 访问器转化为分钟数:
df['amins'] = df['atime'].dt.hour * 60 + df['atime'].dt.minute
df['bmins'] = df['btime'].dt.hour * 60 + df['btime'].dt.minute
df
最后求分钟数差值:
df['mins'] = df['amins'] - df['bmins']
小技巧 13 转为 DatetimeIndex 求时分(HH:mm)的分钟差
转化为 DatetimeIndex 类型后,直接获取 hour 和 minute 属性:
atime = pd.DatetimeIndex(df['a'])
btime = pd.DatetimeIndex(df['b'])
df['amins'] = atime.hour * 60 + atime.minute
df['bmins'] = btime.hour * 60 + btime.minute
小技巧 14 split 求时分(HH:mm)的分钟差
split 是更加高效的实现,同样需要先转化为 str 类型:
df['a'] = df['a'].astype(str)
df['b'] = df['b'].astype(str)
其次 split:
df['asplit'] = df['a'].str.split(':')
df['bsplit'] = df['b'].str.split(':')
得到结果如下:
使用 apply 操作每个元素,转化为分钟数:
df['amins'] = df['asplit'].apply(lambda x: int(x[0])*60 + int(x[1]))
df['bmins'] = df['bsplit'].apply(lambda x: int(x[0])*60 + int(x[1]))
小技巧15 100G 数据如何先随机读取1%?
对于动辄就几十或几百个 G 的数据,在读取的这么大数据的时候,我们有没有办法随机选取一小部分数据,然后读入内存,快速了解数据和开展 EDA ?
使用 Pandas 的 skiprows 和 概率知识,就能做到。解释具体怎么做,如下所示,读取某 100 G 大小的 big_data.csv 数据
使用 skiprows 参数, x > 0 确保首行读入, np.random.rand() > 0.01 表示 99% 的数据都会被随机过滤掉
言外之意,只有全部数据 1% 才有机会选入内存中。
import pandas as pd
import numpy as np
df = pd.read_csv("big_data.csv",
skiprows =
lambda x: x>0and np.random.rand() > 0.01)
print("The shape of the df is {}.
It has been reduced 100 times!".format(df.shape))
使用这种方法,读取的数据量迅速缩减到原来的 1% ,对于迅速展开数据分析有一定的帮助。
下面是我微信,任何问题都可留言:
评论
英伟达Blackwell平台网络配置分析
本文来自“英伟达Blachwell平台网络配置详解”。GTC大会英伟达展示了全新的 Blackwell 平台系列产品,包括 HGX B100 服务器、NVLINK Switch、GB200Superchip Computer Node、Quantum X800 交换机和 CX8 网卡(InfiniB
架构师技术联盟
0
CVPR 2024|大视觉模型的开山之作!无需任何语言数据即可打造大视觉模型
↑ 点击蓝字 关注极市平台作者丨科技猛兽编辑丨极市平台极市导读 本文提出一种序列建模 (sequential modeling) 的方法,不使用任何语言数据,训练大视觉模型。>>加入极市CV技术交流群,走在计算机视觉的最前沿本文目录1 序列建模打造大视觉模型(来自 U
极市平台
1
轻松掌握开源项目的二次开发技巧
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群本文作者:@方长_beezen 原文链接:https://juejin.cn/post/7358647992608489535前言随着软件行业的迅速
程序员成长指北
0
管理世界2024 | 使用管理层讨论与分析测量「企业人工智能指标」
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址 https://textdata.cn/blog/2024-04-19-ai-improve-firm-productivity/
大邓和他的Python
0
Python加速运行技巧
Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足。但是,有很多时候,Python 的效率并没有想象中的那么夸张。本文对一些 Python 代码加速运行的技巧进行整理。 0. 代码优化原则 本文会介绍不少的 Python 代码加速运行的技巧。在深入代码优化细
机器学习算法与Python实战
0
让扩散模型听话的小秘籍?CAN:通过操控权重来控制条件生成模型,图像生成效率大升级!
↑ 点击蓝字 关注极市平台作者丨科技猛兽编辑丨极市平台极市导读 本文提出的 CAN 模型 (Condition-Aware Neural Network) 是一种对图像生成模型添加控制的方法。CAN 可以通过动态操纵神经网络的权重来控制图像生成过程。作者在 ImageNet 图像
极市平台
0
推荐 | 文本分析库cntext2.x使用手册
Tips: 公众号推送后内容只能更改一次,且只能改20字符。 如果内容出问题,或者想更新内容, 只能重复推送。 为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2024-04-27-cntext2x-usage-tutorial/cntext是大邓
大邓和他的Python
1
Go 1.22 的新增功能系列之二:reflect.TypeFor
Go 1.22 的第一个候选版本已经发布,这意味着最终版本即将发布,现在是我在博客中介绍我在这个周期中所做工作的时候了。像往常一样,我的贡献很小,但它们是我的,所以我将从幕后的角度来谈谈它们。首先是reflect.TypeFor。这是整个函数:// TypeFor returns the [Type
GoCN
0