Pandas知识
数据科学与人工智能
共 3652字,需浏览 8分钟
· 2020-06-29
选自 towardsdatascience作者:Félix Revert机器之心编译
Pandas 是为了解决数据分析任务而创建的一种基于 NumPy 的工具包,囊括了许多其他工具包的功能,具有易用、直观、快速等优点。要想成为一名高效的数据科学家,不会 Pandas 怎么行?
Python 是开源的,它很棒,但是也无法避免开源的一些固有问题:很多包都在做(或者在尝试做)同样的事情。如果你是 Python 新手,那么你很难知道某个特定任务的最佳包是哪个,你需要有经验的人告诉你。有一个用于数据科学的包绝对是必需的,它就是 pandas。
pandas 最有趣的地方在于里面隐藏了很多包。它是一个核心包,里面有很多其他包的功能。这点很棒,因为你只需要使用 pandas 就可以完成工作。
pandas 相当于 python 中 excel:它使用表(也就是 dataframe),能在数据上做各种变换,但还有其他很多功能。
如果你早已熟知 python 的使用,可以直接跳到第三段。
让我们开始吧:
import pandas as pd别问为什么是「pd」而不是「p」,就是这样。用就行了:)
pandas 最基本的功能
读取数据
data = pd.read_csv( my_file.csv )sep 代表的是分隔符。如果你在使用法语数据,excel 中 csv 分隔符是「;」,因此你需要显式地指定它。编码设置为 latin-1 来读取法语字符。nrows=1000 表示读取前 1000 行数据。skiprows=[2,5] 表示你在读取文件的时候会移除第 2 行和第 5 行。
data = pd.read_csv( my_file.csv , sep= ; , encoding= latin-1 , nrows=1000, skiprows=[2,5])
最常用的功能:read_csv, read_excel
其他一些很棒的功能:read_clipboard, read_sql
写数据
data.to_csv( my_new_file.csv , index=None)index=None 表示将会以数据本来的样子写入。如果没有写 index=None,你会多出一个第一列,内容是 1,2,3,...,一直到最后一行。
我通常不会去使用其他的函数,像.to_excel, .to_json, .to_pickle 等等,因为.to_csv 就能很好地完成工作,并且 csv 是最常用的表格保存方式。
检查数据
Gives (#rows, #columns)
给出行数和列数data.describe()计算基本的统计数据
查看数据
data.head(3)打印出数据的前 3 行。与之类似,.tail() 对应的是数据的最后一行。
data.loc[8]打印出第八行
data.loc[8, column_1 ]打印第八行名为「column_1」的列
data.loc[range(4,6)]第四到第六行(左闭右开)的数据子集
pandas 的基本函数
逻辑运算
data[data[ column_1 ]== french ]通过逻辑运算来取数据子集。要使用 & (AND)、 ~ (NOT) 和 | (OR),必须在逻辑运算前后加上「and」。
data[(data[ column_1 ]== french ) & (data[ year_born ]==1990)]
data[(data[ column_1 ]== french ) & (data[ year_born ]==1990) & ~(data[ city ]== London )]
data[data[ column_1 ].isin([ french , english ])]除了可以在同一列使用多个 OR,你还可以使用.isin() 函数。
基本绘图
matplotlib 包使得这项功能成为可能。正如我们在介绍中所说,它可以直接在 pandas 中使用。
data[ column_numerical ].plot()
().plot() 输出的示例
data[ column_numerical ].hist()画出数据分布(直方图)
.hist() 输出的示例
%matplotlib inline如果你在使用 Jupyter,不要忘记在画图之前加上以上代码。
更新数据
data.loc[8, column_1 ] = english
将第八行名为 column_1 的列替换为「english」
data.loc[data[ column_1 ]== french , column_1 ] = French在一行代码中改变多列的值
好了,现在你可以做一些在 excel 中可以轻松访问的事情了。下面让我们深入研究 excel 中无法实现的一些令人惊奇的操作吧。
中级函数
统计出现的次数
data[ column_1 ].value_counts()
.value_counts() 函数输出示例
在所有的行、列或者全数据上进行操作
data[ column_1 ].map(len)len() 函数被应用在了「column_1」列中的每一个元素上
.map() 运算给一列中的每一个元素应用一个函数
data[ column_1 ].map(len).map(lambda x: x/100).plot()pandas 的一个很好的功能就是链式方法(https://tomaugspurger.github.io/method-chaining)。它可以帮助你在一行中更加简单、高效地执行多个操作(.map() 和.plot())。
data.apply(sum).apply() 会给一个列应用一个函数。
.applymap() 会给表 (DataFrame) 中的所有单元应用一个函数。
tqdm, 唯一的
在处理大规模数据集时,pandas 会花费一些时间来进行.map()、.apply()、.applymap() 等操作。tqdm 是一个可以用来帮助预测这些操作的执行何时完成的包(是的,我说谎了,我之前说我们只会使用到 pandas)。
from tqdm import tqdm_notebook用 pandas 设置 tqdm
tqdm_notebook().pandas()
data[ column_1 ].progress_map(lambda x: x.count( e ))用 .progress_map() 代替.map()、.apply() 和.applymap() 也是类似的。
在 Jupyter 中使用 tqdm 和 pandas 得到的进度条
相关性和散射矩阵
data.corr()
data.corr().applymap(lambda x: int(x*100)/100)
.corr() 会给出相关性矩阵
pd.plotting.scatter_matrix(data, figsize=(12,8))
散点矩阵的例子。它在同一幅图中画出了两列的所有组合。
pandas 中的高级操作
The SQL 关联
在 pandas 中实现关联是非常非常简单的
data.merge(other_data, on=[ column_1 , column_2 , column_3 ])关联三列只需要一行代码
分组
一开始并不是那么简单,你首先需要掌握语法,然后你会发现你一直在使用这个功能。
data.groupby( column_1 )[ column_2 ].apply(sum).reset_index()按一个列分组,选择另一个列来执行一个函数。.reset_index() 会将数据重构成一个表。
正如前面解释过的,为了优化代码,在一行中将你的函数连接起来。
行迭代
dictionary = {}.iterrows() 使用两个变量一起循环:行索引和行的数据 (上面的 i 和 row)
for i,row in data.iterrows():
dictionary[row[ column_1 ]] = row[ column_2 ]
总而言之,pandas 是 python 成为出色的编程语言的原因之一
我本可以展示更多有趣的 pandas 功能,但是已经写出来的这些足以让人理解为何数据科学家离不开 pandas。总结一下,pandas 有以下优点:
易用,将所有复杂、抽象的计算都隐藏在背后了;
直观;
快速,即使不是最快的也是非常快的。
它有助于数据科学家快速读取和理解数据,提高其工作效率。
原文链接:https://towardsdatascience.com/be-a-more-efficient-data-scientist-today-master-pandas-with-this-guide-ea362d27386
评论
运营知识普及(定义、本质、职责、步骤)
█ 运营的定义运营可以分为广义和狭义两个方面,每个方面它的概念是不一样的。广义上,运营就是围绕产品做的一切人为干预,运营的基础是产品。这时候,运营基本上可以分为三大块——销售、服务、营销。销售:把产品销售出去。大客户运营、商业运营等等一般本质都是销售。服务:在产品和用户之间做一个个连接。运
产品与体验
0
Python列表知识应知应会
点击上方“Go语言进阶学习”,进行关注回复“Go语言”即可获赠从入门到进阶共10本电子书今日鸡汤只在此山中,云深不知处。一、前言 在Python程序开发中,列表(List)经常会使用。假设一个班里有50个学生现需要统计每一个学生的总成绩情况,如果不使用列
Go语言进阶学习
0
怎么才能用pandas删除第一列第0行?
点击上方“Python共享之家”,进行关注回复“资源”即可获赠Python学习资料今日鸡汤乡书不可寄,秋雁又南回。大家好,我是皮皮。一、前言前几天在Python白银交流群【unswervingly】问了一个Pandas处理的问题,提问截图如下:问题截图如下:二、实现过程这里【dcpeng】给了一个思
IT共享之家
0
这些网络知识你清楚吗?一切都要从MTU 和 MSS 说起
推荐一个原创技术号-非科班大厂码农,号主是机械专业转行进入腾讯的后端程序员!最近因为遇到了一个和 MSS 有关的问题,所以花了很多时间学习相关的东西。过程中又发现网上有很多相关的内容是错误的,或者介绍的东西其实现实世界已经不用了。(我看到这些资料的时候有了无数的疑问,然后又花了很长时间,这些疑问现在
码农有道公众号
10
CPU的入门知识
不管你玩硬件还是做软件,你的世界都少不了计算机最核心的 —— CPU。01CPU是什么?CPU与计算机的关系就相当于大脑和人的关系,它是一种小型的计算机芯片,通常嵌入在电脑的主板上。CPU的构建是通过在单个计算机芯片上放置数十亿个微型晶体管来实现。这些晶体管使它能够执行运行存储在系统内存中的程序所需
机器学习算法与Python实战
10
分享一篇关于SEO优化的前端知识总结
来源 | https://juejin.cn/post/7300118821532778511前言以前开发独立站,涉及过一些seo的内容,为了避免后面会遗忘,感觉有必要记录下相关经验,也算是一次总结吧!SEO概念SEO 是 Search Engine Optimizatio(搜索
前端达人
10
100个网络知识,懂一半绝对高手!
1)什么是链接?链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。2)OSI 参考模型的层次是什么?有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。3)什么是骨干网?骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。
数据中心运维管理
10
002 基于Python进行DevOps实践需要哪些知识?
关注开源优测不迷路大数据测试过程、策略及挑战测试框架原理,构建成功的基石在自动化测试工作之前,你应该知道的10条建议在自动化测试中,重要的不是工具在上一篇001 基于Python进行DevOps实践新手指南中我们大概...
开源优测
0