在逛Kaggle的时候发现了一篇不错的Pandas技巧,我将挑选一些有用的并外加一些自己的想法分享给大家。
本系列虽基础但带仍有一些奇怪操作,粗略扫一遍,您或将发现一些您需要的技巧。
原网址:kaggle

纸上得来终觉浅,绝知此事要躬行,所谓的熟练使用Pandas是建立在您大致了解每个函数功能上,希望本系列能给您带来些许收获。

本篇所涉及知识点:

  1. 创建测试数据
  2. 行列索引设置
  3. 行列索引切片查询
  4. 统计函数
  5. 缺失值处理
  6. 显示维度过多数据

创建测试数据

Pandas自带的函数,​避免了自己手写测试数据的痛苦。

索引设置

重命名索引

使用rename()可以对索引/列进行重命名,使用赋值的方法必须写出所有的列名,所以推荐rename()。

图中出现的axis=1是指列方向上进行操作,axis=0是行。这个很好记忆,只要想着1->竖的->列,那另一个0自然就是行了。

列索引添加前后缀

这个功能比较少用。

索引位置修改

修改列的位置其实就是通过列名进行索引,然后将查询返回的值赋值给原来的df就完成了列位置修改。

删除列

删除列,能少一行代码是一行。drop,del,pop任你选。

巧妙使用F-String创建列

“”.format()也是不错的选择。

日期时间索引

日期索引可以玩出很多花式索引。

属性 说明
year datetime 的年
month datetime 的月
day datetime 的日
hour datetime 的小时
minute datetime 的分钟
second datetime 的秒
microsecond datetime 的微秒
nanosecond datetime 的纳秒
date 返回 datetime.date(不包含时区信息)
time 返回 datetime.time(不包含时区信息)
timetz 返回带本地时区信息的 datetime.time
dayofyear 一年里的第几天
weekofyear 一年里的第几周
week 一年里的第几周
dayofweek 一周里的第几天,Monday=0, Sunday=6
weekday 一周里的第几天,Monday=0, Sunday=6
weekday_name 这一天是星期几 (如,Friday)
quarter 日期所处的季节:Jan-Mar = 1,Apr-Jun = 2 等
days_in_month 日期所在的月有多少天
is_month_start 逻辑判断是不是月初(由频率定义)
is_month_end 逻辑判断是不是月末(由频率定义)
is_quarter_start 逻辑判断是不是季初(由频率定义)
is_quarter_end 逻辑判断是不是季末(由频率定义)
is_year_start 逻辑判断是不是年初(由频率定义)
is_year_end 逻辑判断是不是年末(由频率定义)
is_leap_year 逻辑判断是不是日期所在年是不是闰年


有时候,我们拿到的数据不一定是一列时间数据,而是分开的,我们就可以做如下操作,合并多列为DatetimeIndex。

索引查询

单标签索引

切片

df.iloc[x1:x2:x3,y1:y2:y3]指的是搜索[x1,x2)行,间隔x3行(x3默认为1),搜索[y1,y2)列,间隔y3列(y3默认为1)。

loc/iloc/ix

loc,iloc,ix都是用来索引的,只是使用方式略有不同。

loc,iloc,ix的区别:

  1. loc是根据行列标签来进行索引
  2. iloc是根据位置来查询的,即行号列号
  3. ix是混合查询,即可以通过行列号也可以通过行列标签索引,但是要注意,行索引必须是行标签而不能是行号,列索引可以是列标签也可以是列号

我个人更喜欢用ix,虽然官方文档有写从Pandas 0.20.0起,这个方法将被弃用,但我用的版本是0.25.3,这个方法却仍然适用,只是会报错误警告。
官方推荐使用更为严谨的索引方式,即标签索引用loc,定位索引用iloc

at/iat

[]索引会消耗更多的资源来判断你需要的是什么,如果你只想查询某一个值,可以直接用at/iat,使用方式类似于loc/iloc。

at/iat只能使用标签/位置作为参数,不能使用切片":"。

实际测试下来同样取单个值at/iat和loc/iloc仅仅相差1ms(仿佛在逗我)。

所以,还是用loc/iloc/ix吧,记太多麻烦。

布尔索引(复杂索引)

Pandas的判断符号:

  1. &与,两者同时满足
  2. |或,两者满足其一即可
  3. ~非,满足条件的相反情况
  4. 切记’==‘判断是否相等,’='是赋值

使用多个条件进行过滤时,每个条件都需要用圆括号括起来


如果过滤条件过多我们可以将代码进行修改。 例如现在我要查询2020年1月份上海的销量。


上述方法适用于过滤条件很多很多的时候,不然,没啥必要。

快速计算离散值百分比

value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)

参数 说明
normalize 默认false,如为true,则以百分比的形式显示
sort 默认True,根据ascengding排序排序
ascending 默认False,根据计数降序排列
dropna 默认True,删除np.nan
bins 默认None,类似于qcut,输入数值自动分桶

常见统计函数

方法名 函数功能
sum() 计算数据样本的总和(按列计算)
mean() 计算数据样本的算术平均数
var() 计算数据样本的方差
std() 计算数据样本的标准差
corr() 计算数据样本的Spearman(Pearman)相关系数矩阵
cov() 计算数据样本的协方差矩阵
skew() 样本值的偏度(三阶矩)
kurt() 样本值的峰度(四阶矩)
describe() 给出样本的基本描述(基本统计量如均值、标准差等)

统计函数返回的是一个值,并不是列。

缺失值处理

处理缺失值的方法为:删除、填补、不处理。

更多的情况下我们根据缺失数值列的数据类型来判断处理方式:

  1. 缺失数据为连续性数据时,常采用均值填补
  2. 缺失数据为离散性数据时,常采用众数填补
  3. 机器学习,通过其他数据来拟合填补缺失值

判断空值的函数有isin(),isna(),isnull()(isnull()其实是isna()的别称)


判断两列是否相等。

缺失值填补。

显示维度过多的数据

jupyter默认设置显示行数列数太少,当维度太多时,常常会出现…省略,所以下面给出两种方式。

  1. 修改配置文件
  2. 使用转置

str = “自从关注了这个公众号,我的追求者排队到五环开外{}!”


str.format(,做梦)
后台回复“pandas1”即可获取源码及数据哦!

一分钟一个Pandas小技巧(一)相关推荐

  1. pandas apply lambda_一分钟一个Pandas小技巧(二)

    " 在逛Kaggle的时候发现了一篇不错的Pandas技巧,我将挑选一些有用的并外加一些自己的想法分享给大家.本系列虽基础但带仍有一些奇怪操作,粗略扫一遍,您或将发现一些您需要的技巧.&qu ...

  2. 3分钟学会python_3分钟学会一个Python小技巧

    Python时间日期转换在开发中是非常高频的一个操作,你经常会遇到需要将字符串转换成 datetime 或者是反过来将 datetime 转换成字符串. datetime 分别提供了两个方法 strp ...

  3. pandas fillna_6个提升效率的pandas小技巧

    文章来源:towardsdatascience 作者:B.Chen 翻译\编辑:Python大数据分析 pandas是python中常用的数据分析库,出现频率非常高,而且pandas功能之多让人咋舌, ...

  4. 程序员的反击!每天一个离职小技巧

    作者 | 梦想橡皮擦 来源 | 非本科程序员(ID:htmlhttp) 写在前面 俗话说的好,代码写的少,离职少不了. 最近畅游互联网,发现一些离职小技巧,读后,内心被深深的打动了,但是细细的品过之后 ...

  5. vob转mp4,每天一个实用小技巧

    vob转mp4,vob的英文全称是Video Object,它是DVD视频媒体使用的容器格式,vob格式擅长将数字视频.音频.字幕.菜单等多个元素复用在流格式中.而且vob格式的文件可以被加密保护.经 ...

  6. 每天一个前端小技巧——生成gif动图下载

    每天一个前端小技巧--生成gif动图下载 动态热图的展现,分别展现某个时间段的热图时间变化,例如:最近一周七天内,每天的热图分布变化图:这个动态变化的图生成一个gif图提供下载是否可行? 实现方案: ...

  7. 每天一个脱发小技巧 | Eclipse环境下spotbugs的安装配置和详细使用方法

    每天一个脱发小技巧 | Eclipse环境下spotbugs的安装配置和详细使用方法 SpotBugs介绍 Eclipse环境下SpotBugs安装 SpotBugs的使用 其他 SpotBugs介绍 ...

  8. 独家 | 11个Python Pandas小技巧让你的工作更高效(附代码实例)

    作者:Shiu-TangLi 翻译:吴振东 校对:王雨桐 本文约1800字,建议阅读6分钟. 本文为你介绍Pandas隐藏的炫酷小技巧,我相信这些会对你有所帮助. 或许本文中的某些命令你早已知晓,只是 ...

  9. 不容错过的Pandas小技巧:万能转格式、轻松合并、压缩数据,让数据分析更高效...

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 作者 | Roman Orac 转自 | 量子位    编译 | 鱼羊 数据分析,如何 ...

最新文章

  1. AI寒冬论作者:通用人工智能仍是白日梦
  2. WPF中的动画——(二)From/To/By 动画
  3. Hdu 1283 钱币兑换问题
  4. python字符串排序_Python对字符串列表进行排序
  5. 【2017年第4期】大数据标准体系
  6. Jsp对字符串的处理
  7. 成绩记录薄系统C语言,成绩记录簿C语言版.doc
  8. 鸿蒙OS 生成密钥和证书请求文件
  9. python tableview 自适应_iOS8下UITableView的contentsize自动变化问题
  10. leetCode:35. 搜索插入位置
  11. 关于NDK及安装使用
  12. 台达A2/B2伺服电机编码器改功率 台达A2/B2伺服电机编码修改
  13. 10天学会avr单片机和c语言,郭天祥十天学会AVR单片机
  14. Java聊天室系统(三):图形界面窗口展示
  15. linux 离线地图开发包,Mapbox本地离线部署
  16. 查看分辨率的linux命令,Ubuntu: Linux下查看本机显示器分辨率(xrandr)
  17. Adobe AE CC切换语言 中英文切换
  18. 潜心专研Python模拟登陆专题,实现网易云音乐自动签到!这项目居然只值三百?
  19. windows系统流氓软件太厉害卸载不掉怎么办?看我弄死它们
  20. jquery实现点击按钮变灰不可点击并开始倒计时10秒特效代码

热门文章

  1. Android 选择器 PickerView实例,时间选择器、地址选择器、单项选择器、多项选择器自定义布局
  2. 阿里云ACP考试模拟试题(2)
  3. php半透明,php水印代码,php半透明水印支持png透明背景
  4. Android日常开发收集的Tips
  5. jetson nano opencv 打开 CSI摄像头_OpenCV基础操作-读取、几何变换、阈值
  6. C语言与Java的异同
  7. 大数据------维度表,事实表
  8. 程序员需要晓得是术语
  9. java 折扣_java会员折扣
  10. 模拟机械键盘音效的软件