10个Python Pandas技巧,使您的工作更有效率

栏目: Python · 发布时间: 5年前

内容简介:本文阅读时间:8min

10个Python Pandas技巧,使您的工作更有效率

10个Python Pandas技巧,使您的工作更有效率

  • 愿码Slogan | 连接每个 程序员 的故事

  • 网站 | http://chaindesk.cn

  • 愿码愿景 | 打造全学科IT系统免费课程,助力小白用户、初级工程师0成本免费系统学习、低成本进阶,帮助BAT一线资深工程师成长并利用自身优势创造睡后收入。

  • 官方公众号 | 愿码 | 愿码服务号 | 区块链部落

  • 免费加入愿码全思维工程师社群 | 任一公众号回复“愿码”两个字获取入群二维码

本文阅读时间:8min

Pandas是一个广泛用于结构化数据的 Python 包。本文将介绍一些读者可能以前不知道的很实用的技巧。

read_csv

每个人都知道这个命令。但是读取的数据很大,可以尝试添加这个参数: nrows = 5 以便在实际加载整个表之前读取表的一小部分。然后你可以通过选择错误的分隔符来避免错误(它可能不总是以逗号分隔)。或者,您可以在 linux 中使用'head'命令检查任何文本文件中的前5行(比如说): head -n 5 data.txt

然后,您可以通过使用df.columns.tolist()提取所有列来提取列列表,然后添加 usecols = ['c1','c2',...] 参数来加载您需要的列。此外,如果您知道几个特定列的数据类型,则可以添加参数 dtype = {'c1':str,'c2':int,...}, 以便加载更快。这个参数的另一个优点是,如果您有一个同时包含字符串和数字的列,那么将它的类型声明为string是一个很好的实践,这样在试图使用该列作为键合并表时就不会出现错误。

select_dtypes

如果数据预处理必须在Python中完成,那么这个命令可以节省你一些时间。读入表后,每列的默认数据类型可以是bool,int64,float64,object,category,timedelta64或datetime64。您可以先用df.dtypes.value_counts(),要了解数据帧的所有可能数据类型,然后执行df.select_dtypes(include=['float64', 'int64'])

选择仅具有数字特征的子数据帧。

copy

如果您还没有听说过,这是一个重要的命令。如果执行以下命令:

10个Python Pandas技巧,使您的工作更有效率

你会发现df1已经改变了。这是因为df2 = df1没有复制df1并将其分配给df2,而是设置指向df1的指针。因此,df2的任何变化都会导致df1发生变化。要解决这个问题,你可以使用任何一种方法

10个Python Pandas技巧,使您的工作更有效率

map

这个命令可以很容易的进行数据转换。首先定义一个字典,其中'keys'是旧值,'values'是新值。

10个Python Pandas技巧,使您的工作更有效率

一些例子:True, False to 1, 0 (for modeling); defining levels; user defined lexical encodings.

apply or not apply?

如果我们想创建一个包含其他几列作为输入的新列,那么apply函数有时非常有用。

10个Python Pandas技巧,使您的工作更有效率

在上面的代码中,我们定义了一个带有两个输入变量的函数,并使用apply函数将它应用于列'c1'和'c2'。

“应用”的问题是它有时太慢了 。如果你想计算两列“c1”和“c2”的最大值,你当然可以这样做

但你会发现它比这个命令慢得多:

愿码提示 :如果您可以使用其他内置函数完成相同的工作(它们通常更快),请不要使用apply。例如,如果要将列'c'舍入为整数,请执行round(df ['c'],0)或df ['c']。round(0)而不是使用apply函数:df.apply(lambda x: round(x['c'], 0), axis = 1)。

value counts

这是检查值分布的命令。例如,如果您想检查“c”列中每个值的可能值和频率,您可以执行此操作:df['c'].value_counts()

还有就是它的一些有用的技巧/参数:
A. normalize = True:如果您想检查频率而不是计数。
B. dropna = False:如果您还想在统计中包含缺失的值。
C. df['c'].value_counts().reset_index():如果希望将stats表转换为panda数据aframe并对其进行操作。
D. df['c'].value_counts().reset_index().sort_values(by='index'):在'c'列中显示按不同值 排序 的统计信息,而不是count。

number of missing values

构建模型时,您可能希望排除具有太多缺失值的行/具有所有缺失值的行。您可以使用.isnull()和.sum()来计算指定列中缺失值的数量。

10个Python Pandas技巧,使您的工作更有效率

select rows with specific IDs

SQL 中,我们可以使用SELECT * FROM ... WHERE ID('A001','C022',...)来获取具有特定ID的记录。如果你想用熊猫做同样的事情,你可以做到

10个Python Pandas技巧,使您的工作更有效率

Percentile groups

您有一个数字列,并希望将该列中的值分类为组,例如前5%进入组1,5-20%进入组2,20%-50%进入组3,将底部50%归入组4当然,你可以用pandas.cut来做,但我想在这里提供另一种选择:

10个Python Pandas技巧,使您的工作更有效率

这是快速运行(没有使用应用功能)。

to_csv

这也是每个人都会使用的命令。我想在这里指出两个技巧。第一个是:print(df[:5].to_csv())

您可以使用此命令打印出准确写入文件的前五行。

另一个技巧是处理混合在一起的整数和缺失值。如果列包含缺失值和整数,则数据类型仍将是float而不是int。导出表时,可以添加 float_format ='%。0f' 将所有浮点数舍入为整数。如果您只想要所有列的整数输出,请使用此技巧 - 您将摆脱所有恼人的'.0'。

END

10个Python Pandas技巧,使您的工作更有效率

热文推荐

使用Python挖掘GitHub的流行趋势(上)

使用Python挖掘GitHub的流行趋势(下)

学习Python编程的书籍Top7

Google面试问题指南:使用Python删除重复出现的字符

如何在7分钟内快速完整地浏览Python3中的列表

Python面试问题指南:如何编码链表

Python到底能做什么?

如何管理多个Python版本和虚拟环境

System.out.println("点个在看吧!"); console.log("点个在看吧!"); print("点个在看吧!"); printf("点个在看吧!\n"); cout << "点个在看吧!" << endl; Console.WriteLine("点个在看吧!"); Response.Write("点个在看吧!"); alert("点个在看吧!") echo "点个在看吧!"

点击阅读原文,查看更多技术干货

你点的每个“在看”,我都认真当成了喜欢


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

3D游戏设计与开发

3D游戏设计与开发

2011-9 / 28.00元

《3D游戏设计与开发》,本书共分为九章:第一章主要对计算机游戏设计和3D游戏引擎进行简单介绍;第二章介绍3D游戏开发基础和Torque引擎的各种对象;第三章详细讲解游戏编程的语言及其语法;第四章详细介绍了Torque引擎编辑器的应用;第五章至第六章介绍了3D游戏的环境、角色和物品的制作;第七章讲解如何实现游戏音效;第八章详细介绍3D网络游戏的创建方法;第九章讲解如何掌握3D资源导入Torque引擎......一起来看看 《3D游戏设计与开发》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具