pandas指南:做更高效的数据科学家

Python是开源的,所以有很多开源固有的问题。如果你是Python新手,很难知道针对特定任务的包哪个是最好的。你需要有经验的人来告诉你。今天我要告诉你们的是:在数据科学中,有一个软件包是你们绝对需要学习的,那就是pandas。

 

而pandas真正有趣的地方是,很多其他的包也在里面。pandas是一个核心包,因此它具有来自其他各种包的特性。

pandas类似于Python中的Excel:它使用表(即DataFrame)并对数据进行转换,但它还能做更多。

如果你已经熟悉Python,可以直接进入第三部分

现在让我们开始:

<span style="color:#f8f8f2"><code class="language-none">import pandas as pd</code></span>

pandas包最基本的功能

1、读取数据:

<span style="color:#f8f8f2"><code class="language-none">data = pd.read_csv('my_file.csv')data=pd.read_csv('my_file.csv',sep=';',encoding='latin-1',nrows=1000, kiprows=[2,5])
</code></span>

sep变量代表分隔符。因为Excel中的csv分隔符是“;”,因此需要显示它。编码设置为“latin-1”以读取法语字符。nrows=1000表示读取前1000行。skiprows=[2,5]表示在读取文件时将删除第2行和第5行

最常用的函数:read_csv, read_excel

还有一些很不错的函数:read_clipboard、read_sql

2、写入数据

<span style="color:#f8f8f2"><code class="language-none">data.to_csv('my_new_file.csv', index=None)</code></span>

index=None将简单地按原样写入数据。如果你不写index=None,得到额外的行。

我通常不使用其他函数,比如to_excel,to_json,to_pickle,to_csv,虽然它们也做得很好,但是csv是保存表最常用的方法。

3、检查数据:

<span style="color:#f8f8f2"><code class="language-none">data.shapedata.describe()data.head(3)</code></span>

.head(3)打印数据的前3行.tail()函数将查看数据的最后一行。

<span style="color:#f8f8f2"><code class="language-none">data.loc[8]</code></span>

打印第8行

<span style="color:#f8f8f2"><code class="language-none">data.loc[8, 'column_1']
</code></span>

将第8行值打印在“column_1”上

<span style="color:#f8f8f2"><code class="language-none">data.loc[range(4,6)]
</code></span>

打印第4行到第6行

pandas的初级功能

1、逻辑运算

<span style="color:#f8f8f2"><code class="language-none">data[data['column_1']=='french']data[(data['column_1']=='french') & (data['year_born']==1990)]data[(data['column_1']=='french')&(data['year_born']==1990)&(data['city']=='London')]
</code></span>

如果根据逻辑操作对数据进行运算,使用& (AND)、~ (NOT)和| (OR)逻辑操作之前和之后添加“(”&“)”。

<span style="color:#f8f8f2"><code class="language-none">data[data['column_1'].isin(['french', 'english'])]
</code></span>

不要为同一列编写多个OR,最好是使用.isin()函数

2、基本绘图

多亏了matplotlib包,这个特性才得以实现。就像我们在介绍中说的,它可以直接用在pandas身上。

<span style="color:#f8f8f2"><code class="language-none">data['column_numerical'].plot()
</code></span>

<span style="color:#f8f8f2"><code class="language-none">data['column_numerical'].hist()
</code></span>

绘制分布图(直方图)

<span style="color:#f8f8f2"><code class="language-none">%matplotlib inline
</code></span>

如果你使用Jupyter,在绘图之前,不要忘记写这一行(在代码中只写一次)

3、更新数据

<span style="color:#f8f8f2"><code class="language-none">data.loc[8, 'column_1'] = 'english'
</code></span>

将' column_1 '的第8行值替换为' english '

<span style="color:#f8f8f2"><code class="language-none">data.loc[data['column_1']=='french', 'column_1'] = 'French'
</code></span>

在一行中更改多行值

3、pandas的中级功能

现在你可以做一些在Excel中很容易做的事情。让我们来挖掘一些在Excel中做不到的神奇事情。

1、计算功能

<span style="color:#f8f8f2"><code class="language-none">data['column_1'].value_counts()
</code></span>

2、对全行、全列或所有数据的操作

<span style="color:#f8f8f2"><code class="language-none">data['column_1'].map(len)
</code></span>

len()函数应用于“column_1”的每个元素

map()操作将一个函数应用于列的每个元素。

<span style="color:#f8f8f2"><code class="language-none">data['column_1'].map(len).map(lambda x : x/100).plot()
</code></span>

pandas一个特点是进行链式操作。它可以帮助你在一行代码中执行多个操作,从而更加简单和高效

<span style="color:#f8f8f2"><code class="language-none">data.apply(sum)
</code></span>

.apply()将函数应用于列。

.applymap()将一个函数应用于表(DataFrame)中的所有单元格。

3、tqdm包

在处理大型数据集时,pandas可能需要一些时间来运行.map()、.apply()、.applymap()操作。tqdm是一个非常有用的包,它可以帮助预测这些操作何时完成。

<span style="color:#f8f8f2"><code class="language-none">from tqdm import tqdm_notebooktqdm_notebook().pandas()
</code></span>

用pandas设置tqdm

<span style="color:#f8f8f2"><code class="language-none">data['column_1'].progress_map(lambda x : x.count('e'))
</code></span>

将.map()替换为.progress_map(),.apply()和.applymap()也是一样

96d484d4f3e44422b9f242aec89895cd23fe6649 

图4 这是你在Jupyter上看到的的进度条

4、相关矩阵和散射矩阵

<span style="color:#f8f8f2"><code class="language-none">data.corr()data.corr().applymap(lambda x : int(x*100)/100)</code></span>

<span style="color:#f8f8f2"><code class="language-none">pd.plotting.scatter_matrix(data, figsize=(12,8))
</code></span>

pandas的高级功能

1ã行列合并

在pandas中,行列合并非常简单。

<span style="color:#f8f8f2"><code class="language-none">data.merge(other_data, on=['column_1', 'column_2', 'column_3'])
</code></span>

合并3列只需要一行代码

2、分组

分组一开始并不简单,但是如果掌握其语法,你将发现这非常简单。

<span style="color:#f8f8f2"><code class="language-none">data.groupby('column_1')['column_2'].apply(sum).reset_index()
</code></span>

按列分组,选择要在其上操作函数的另一列。reset_index()将数据重新生成DataFrame(表)

3、遍历行

<span style="color:#f8f8f2"><code class="language-none">dictionary = {}for i,row in data.iterrows():dictionary[row['column_1']] = row['column_2']
</code></span>

iterrows()循环两个变量:行索引和行(上面代码中的i和row)。

总体来说,pandas是一个帮助数据科学家快速阅读和理解数据的工具包,它也可以说是Python如此优秀的原因之一。我还可以展示更多pandas包其他有趣的特点,但以上所述足以让人理解为什么数据科学家离不开pandas包。总之,pandas包有以下特点:

1、 简单易用,隐藏了所有复杂和抽象的计算;

2、非常直观;

3、快速。

 

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一位技术校招生在支付宝的成长笔记

哪有那么多的“逆袭”&#xff0c;唯有努力与坚持&#xff0c;机会就会在前方。 鲁直&#xff0c;1989年生&#xff0c;本科毕业于浙江工业大学&#xff0c;之后被校招进阿里巴巴。虽然&#xff0c;今年刚刚30岁&#xff0c;但他已是蚂蚁金服SOFA中间件开源负责人。 看到这个开…

java.sql.SQLException: ORA-01691: Lob 段 SONARQUBE2.SYS_LOB0000119128C00008$$ 无法通过 128 (在表空间 USERS 中

文章目录一、场景浮现1. 问题详情2. 问题描述3. 问题原因二、解决方案2.1. 查看表空间的名字及文件在哪2.2. 查询表空间使用情况2.3. 解决方法一、场景浮现 1. 问题详情 2. 问题描述 java.sql.SQLException: ORA-01691: Lob 段 SONARQUBE2.SYS_LOB0000119128C00008$$ 无法通过…

终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码

阿里妹导读&#xff1a;如同我们去年12月在 Flink Forward China 峰会所约&#xff0c;阿里巴巴内部 Flink 版本 Blink 将于 2019 年 1 月底正式开源。今天&#xff0c;我们终于等到了这一刻。 阿里资深技术专家大沙&#xff0c;将为大家详细介绍本次开源的Blink主要功能和优化…

五省竞赛计算机作品,关于征集2017年华北五省(市、自治区)及港澳台大学生计算机应用大赛河北赛区竞赛作品的通知...

原标题&#xff1a;关于征集2017年华北五省(市、自治区)及港澳台大学生计算机应用大赛河北赛区竞赛作品的通知学校各单位、各位老师们&#xff1a;为深入贯彻落实《国家中长期教育改革和发展规划纲要》(2010-2020年)和教育部《关于全面提高高等教育质量的若干意见》(教高[2012]…

Auto-Keras与AutoML:入门指南

在本教程中&#xff0c;你将学习如何使用Auto-Keras&#xff08;Google的AutoML的开源替代品&#xff09;来实现自动化机器学习和深度学习。 目前来说&#xff0c;深度学习从业者在数据集上训练神经网络时&#xff0c;主要正在尝试优化和平衡两个目标&#xff1a; 1.定义适合…

TensorFlow 2.0深度强化学习指南

在本教程中&#xff0c;我将通过实施Advantage Actor-Critic(演员-评论家&#xff0c;A2C)代理来解决经典的CartPole-v0环境&#xff0c;通过深度强化学习&#xff08;DRL&#xff09;展示即将推出的TensorFlow2.0特性。虽然我们的目标是展示TensorFlow2.0&#xff0c;但我将尽…

互联网诞生记: 浪成于微澜之间

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 老姜出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;“我早就预言了互联网。1975年&#xff0c;所有的技术都已经准备好了&#xff1b;1985年&#xff0c;所有的技术都应该很平常了&#xff1b;而直到199…

“有趣”的投影:当PCA失效时怎么办?

目前&#xff0c;大多数的数据科学家都比较熟悉主成分分析 (Principal Components Analysis&#xff0c;PCA)&#xff0c;它是一个探索性的数据分析工具。可以这样简要的描述&#xff1a;研究人员经常使用PCA来降低维度&#xff0c;希望在他们的数据中找出有用的信息&#xff0…

线程最最基础的知识

戳蓝字“CSDN云计算”关注我们哦&#xff01;什么是线程试想一下没有线程的程序是怎么样的&#xff1f;百度网盘在上传文件时就无法下载文件了&#xff0c;得等文件上传完成后才能下载文件。这个我们现在看起来很反人性&#xff0c;因为我们习惯了一个程序同时可以进行运行多个…

特征工程自动化如何为机器学习带来重大变化

随着技术的快速发展&#xff0c;在数据科学领域中&#xff0c;包括库、工具和算法等总会不断地变化的。然而&#xff0c;一直都有这么一个趋势&#xff0c;那就是自动化水平不断地提高。 近些年来&#xff0c;在模型的自动化选择和超参数调整方面取得了一些进展&#xff0c;但…

序列模型简介——RNN, Bidirectional RNN, LSTM, GRU

既然我们已经有了前馈网络和CNN&#xff0c;为什么我们还需要序列模型呢&#xff1f;这些模型的问题在于&#xff0c;当给定一系列的数据时&#xff0c;它们表现的性能很差。序列数据的一个例子是音频的剪辑&#xff0c;其中包含一系列的人说过的话。另一个例子是英文句子&…

行!人工智能玩大了!程序员:太牛!你怎么看?

人工智能真的玩大了吗&#xff1f;人工智能行业的人才真的“爆发了&#xff1f;”AI程序员究竟怎么样&#xff1f;中国AI前景分析 程序员与远方最新参考&#xff0c;是12月2日出炉的《人工智能技术专利深度分析报告》。中国AI专利&#xff0c;已经位于世界前列&#xff0c;且正…

可应用于实际的14个NLP突破性研究成果(一)

语言理解对计算机来说是一个巨大的挑战。幼儿可以理解的微妙的细微差别仍然会使最强大的机器混淆。尽管深度学习等技术可以检测和复制复杂的语言模式&#xff0c;但机器学习模型仍然缺乏对我们的语言真正含义的基本概念性理解。 但在2018年确实产生了许多具有里程碑意义的研究…

开发函数计算的正确姿势——网页截图服务

前言 首先介绍下在本文出现的几个比较重要的概念&#xff1a; 函数计算&#xff08;Function Compute&#xff09;: 函数计算是一个事件驱动的服务&#xff0c;通过函数计算&#xff0c;用户无需管理服务器等运行情况&#xff0c;只需编写代码并上传。函数计算准备计算资源&am…

如何关闭计算机的f12功能键,win10如何关闭快捷键?win10关闭F1~F12快捷键的方法

win10如何使用快捷键关闭?在win10系统中我们按下F1~F12原本可以正常使用系统中的功能。而然在笔记本中F1~F12竟然被笔记本中的功能所替代了&#xff0c;例如&#xff1a;打开/关闭 无线网卡&#xff0c;屏幕亮度加减、系统音量大小等&#xff0c;导致我们在使用F1~F12的时候只…

阿里巴巴宣布架构调整;英伟达放大招!重磅发布 ​TensorRT 7 ,支持超千种计算变换;苹果、谷歌和亚马逊罕见结盟……...

戳蓝字“CSDN云计算”关注我们哦&#xff01; 嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

阿里开源分布式事务解决方案 Fescar 全解析

广为人知的阿里分布式事务解决方案&#xff1a;GTS&#xff08;Global Transaction Service&#xff09;&#xff0c;已正式推出开源版本&#xff0c;取名为“Fescar”&#xff0c;希望帮助业界解决微服务架构下的分布式事务问题&#xff0c;今天我们一起来深入了解。 FESCAR o…

鲜为人知的混沌工程,到底哪里好?

混沌工程属于一门新兴的技术学科&#xff0c;行业认知和实践积累比较少&#xff0c;大多数IT团队对它的理解还没有上升到一个领域概念。阿里电商域在2010年左右开始尝试故障注入测试的工作&#xff0c;希望解决微服务架构带来的强弱依赖问题。通过本文&#xff0c;你将了解到&a…

将视觉深度学习模型应用于非视觉领域

介绍 近些年来&#xff0c;深度学习技术已经彻底改变了计算机视觉领域。由于迁移学习和各种各样的学习资源的出现&#xff0c;任何人都可以通过使用预训练的模型&#xff0c;将其应用到自己的工作当中&#xff0c;以此获得非常好的结果。随着深度学习越来越商业化&#xff0c;…

如何在Flutter上优雅地序列化一个对象

序列化一个对象才是正经事 对象的序列化和反序列化是我们日常编码中一个非常基础的需求&#xff0c;尤其是对一个对象的json encode/decode操作。每一个平台都会有相关的库来帮助开发者方便得进行这两个操作&#xff0c;比如Java平台上赫赫有名的GSON&#xff0c;阿里巴巴开源…