内容简介:本文阅读时间:8min
-
愿码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
如果您还没有听说过,这是一个重要的命令。如果执行以下命令:
你会发现df1已经改变了。这是因为df2 = df1没有复制df1并将其分配给df2,而是设置指向df1的指针。因此,df2的任何变化都会导致df1发生变化。要解决这个问题,你可以使用任何一种方法
或
map
这个命令可以很容易的进行数据转换。首先定义一个字典,其中'keys'是旧值,'values'是新值。
一些例子:True, False to 1, 0 (for modeling); defining levels; user defined lexical encodings.
apply or not apply?
如果我们想创建一个包含其他几列作为输入的新列,那么apply函数有时非常有用。
在上面的代码中,我们定义了一个带有两个输入变量的函数,并使用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()来计算指定列中缺失值的数量。
select rows with specific IDs
在 SQL 中,我们可以使用SELECT * FROM ... WHERE ID('A001','C022',...)来获取具有特定ID的记录。如果你想用熊猫做同样的事情,你可以做到
Percentile groups
您有一个数字列,并希望将该列中的值分类为组,例如前5%进入组1,5-20%进入组2,20%-50%进入组3,将底部50%归入组4当然,你可以用pandas.cut来做,但我想在这里提供另一种选择:
这是快速运行(没有使用应用功能)。
to_csv
这也是每个人都会使用的命令。我想在这里指出两个技巧。第一个是:print(df[:5].to_csv())
您可以使用此命令打印出准确写入文件的前五行。
另一个技巧是处理混合在一起的整数和缺失值。如果列包含缺失值和整数,则数据类型仍将是float而不是int。导出表时,可以添加 float_format ='%。0f' 将所有浮点数舍入为整数。如果您只想要所有列的整数输出,请使用此技巧 - 您将摆脱所有恼人的'.0'。
END
热文推荐
Google面试问题指南:使用Python删除重复出现的字符
System.out.println("点个在看吧!"); console.log("点个在看吧!"); print("点个在看吧!"); printf("点个在看吧!\n"); cout << "点个在看吧!" << endl; Console.WriteLine("点个在看吧!"); Response.Write("点个在看吧!"); alert("点个在看吧!") echo "点个在看吧!"
点击阅读原文,查看更多技术干货
你点的每个“在看”,我都认真当成了喜欢
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 有效率的用 jsonnet 撰寫 Drone CI/CD 設定檔
- 基于 Figma 和 GitHub Actions 的自动化系统,让图标「交接」更有效率
- 英特尔实现光子神经网络新突破,有效提升光子芯片效率
- CVPR 2020 | 如何同时保证NAS的效率和有效性?暗物智能等提出基于知识蒸馏的分块监督神经网络搜索算法
- 渗透技巧之Powershell实战技巧
- 渗透技巧——快捷方式文件的参数隐藏技巧
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Persuasive Technology
B.J. Fogg / Morgan Kaufmann / 2002-12 / USD 39.95
Can computers change what you think and do? Can they motivate you to stop smoking, persuade you to buy insurance, or convince you to join the Army? "Yes, they can," says Dr. B.J. Fogg, directo......一起来看看 《Persuasive Technology》 这本书的介绍吧!