云栖君导读:Python是开源的,所以有很多开源固有的问题。如果你是Python新手,很难知道针对特定任务的包哪个是最好的。你需要有经验的人来告诉你。今天我要告诉你们的是:在数据科学中,有一个软件包是你们需要学习的,那就是pandas。
![76f7f4eb3a46dc277625d655999b4748.png](https://i-blog.csdnimg.cn/blog_migrate/3532a821eef605ca949f2f7102fac221.jpeg)
而pandas真正有趣的地方是,很多其他的包也在里面。pandas是一个核心包,因此它具有来自其他各种包的特性。
pandas类似于Python中的Excel:它使用表(即DataFrame)并对数据进行转换,但它还能做更多。
如果你已经熟悉Python,可以直接进入第三部分。
现在让我们开始:
![68adeb7db921c23c5c91d6b97d3aac43.png](https://i-blog.csdnimg.cn/blog_migrate/2e86907ac7c502704b6f7ed4f576d83c.png)
pandas包最基本的功能
1、读取数据:
![abe17b01feb7a598507347aaed6e83f5.png](https://i-blog.csdnimg.cn/blog_migrate/03f57b9838df846e498950891f3f78bd.png)
sep变量代表分隔符。因为Excel中的csv分隔符是“;”,因此需要显示它。编码设置为“latin-1”以读取法语字符。nrows=1000表示读取前1000行。skiprows=[2,5]表示在读取文件时将删除第2行和第5行
最常用的函数:read_csv, read_excel
还有一些很不错的函数:read_clipboard、read_sql
2、写入数据
![e82017ff23327f7c37510f4b45753624.png](https://i-blog.csdnimg.cn/blog_migrate/a07b71f1c4a96f2398331d514fcd01c4.png)
index=None将简单地按原样写入数据。如果你不写index=None,会得到额外的行。
我通常不使用其他函数,比如to_excel,to_json,to_pickle,to_csv,虽然它们也做得很好,但是csv是保存表最常用的方法。
3、检查数据:
![6a5175709c8ca60ce01fa586fb818ad9.png](https://i-blog.csdnimg.cn/blog_migrate/8d0406fa7435806385a72dff81fe73ef.png)
.head(3)打印数据的前3行,.tail()函数将查看数据的最后一行。
![d26b1b83706662eda599d62b52641378.png](https://i-blog.csdnimg.cn/blog_migrate/1ec07c46539a85334d1f7accee06ef36.png)
打印第8行。
![914a277bd24e0e0540cbe001a4ea7a1b.png](https://i-blog.csdnimg.cn/blog_migrate/54ea85ccab3d74113f2213a8c6d60d15.png)
将第8行值打印在“column_1”上。
![b112696fa143ccf495f05a79d7ba38e7.png](https://i-blog.csdnimg.cn/blog_migrate/055a114f60132c6020f4c83b5f1512b9.png)
打印第4行到第6行。
pandas的初级功能
1、逻辑运算
![4899fd2a1c4dbb5d17dda9a4fe3aa540.png](https://i-blog.csdnimg.cn/blog_migrate/510c558ca43230ac5ff9d8cdbe4f23ef.png)
如果要根据逻辑操作对数据进行运算,在使用& (AND)、~ (NOT)和| (OR)等逻辑操作之前和之后添加“(”&“)”。
![40cb30b02e1e1ec6ed296091ce15ee1f.png](https://i-blog.csdnimg.cn/blog_migrate/8aa1d393d420550115f9713cfda12833.png)
不要为同一列编写多个OR,最好是使用.isin()函数。
2、基本绘图
多亏了matplotlib包,这个特性才得以实现。就像我们在介绍中说的,它可以直接用在pandas身上。
![313883e8b2bd588bb3221d950ba885e4.png](https://i-blog.csdnimg.cn/blog_migrate/68446a5a8dc247b2258a1e4709816569.png)
![ac2a5020dc8457ca6961e43d1f4d45d8.png](https://i-blog.csdnimg.cn/blog_migrate/9aff7736cc60fc785cd7605653fa7a6b.png)
图 1 .plot() 输出示例
![2dd0eb3ba1223562b635bf62159420cd.png](https://i-blog.csdnimg.cn/blog_migrate/d253a3dea1db8f83eba64a41bed4dbb8.png)
绘制分布图(直方图)
![44ab173a12229e2354eee9fdcc5dce38.png](https://i-blog.csdnimg.cn/blog_migrate/9da43ca7f50b40773794fd884eabfa94.png)
图 2 .hist() 函数输出示例
![5fee36dc28c5a27b04928ba86786effe.png](https://i-blog.csdnimg.cn/blog_migrate/a1821ba6adbd845b7324b8dd96af5dfc.png)
如果你使用Jupyter,在绘图之前,不要忘记写这一行(在代码中只写一次)
3、更新数据
![bc6e6d85563e26d41782388ec3ab1f66.png](https://i-blog.csdnimg.cn/blog_migrate/5a3e0f2c859e08dc4b40517816b78283.png)
将' column_1 '的第8行值替换为' english '
![41dfa3ccb9bf187f2221501af4bc1c80.png](https://i-blog.csdnimg.cn/blog_migrate/b3727255fdf215410a42250e57cae391.png)
在一行中更改多行值
3、pandas的中级功能
现在你可以做一些在Excel中很容易做的事情。让我们来挖掘一些在Excel中做不到的神奇事情。
1、计算功能
![f28d7ae9dee4f99b38727329ff534b10.png](https://i-blog.csdnimg.cn/blog_migrate/540c21dd94590680155dd7bb634bf325.png)
![275ea077a263132dad1259bc3ce9791c.png](https://i-blog.csdnimg.cn/blog_migrate/9c90a029d75efcf2b8849281b40f4df3.png)
图 3 .value_counts() 输出示例
2、对全行、全列或所有数据的操作
![a8528f5e7f73759892b6a9e66bd35851.png](https://i-blog.csdnimg.cn/blog_migrate/4b3cde14c7ccef49a994d0e92463967c.png)
len()函数应用于“column_1”的每个元素
map()操作将一个函数应用于列的每个元素。
![7349210c493834f591c2b563bbeed43e.png](https://i-blog.csdnimg.cn/blog_migrate/6a1c2148fbb431c24944b9d6331561a9.png)
pandas的另一个特点是进行链式操作。它可以帮助你在一行代码中执行多个操作,从而更加简单和高效。
![a4933f0d26f965517ec466714d658aeb.png](https://i-blog.csdnimg.cn/blog_migrate/d238fabfde83b425c448111de6d2331e.png)
.apply()将函数应用于列。
.applymap()将一个函数应用于表(DataFrame)中的所有单元格。
3、tqdm包
在处理大型数据集时,pandas可能需要一些时间来运行.map()、.apply()、.applymap()操作。tqdm是一个非常有用的包,它可以帮助预测这些操作何时完成。
![326f2ee4c3bf5f65f246905c4bda81ef.png](https://i-blog.csdnimg.cn/blog_migrate/de706012443af511aefc481043c6e1fa.png)
用pandas设置tqdm
![ee774325b373e08dcf3e28f7f5a3976e.png](https://i-blog.csdnimg.cn/blog_migrate/0e9c4114187fce5f8b7704f873a6a2c7.png)
将.map()替换为.progress_map(),.apply()和.applymap()也是一样
![aefac4431ef707e7eb9138c5d9fdbf48.gif](https://i-blog.csdnimg.cn/blog_migrate/14a99757ab979f33bd6a56fe2c2c9b85.gif)
图4 这是你在Jupyter上看到的的进度条
4、相关矩阵和散射矩阵
![37c2bedcc440f08a122c04453c1f8635.png](https://i-blog.csdnimg.cn/blog_migrate/68b3393ac5235ffa44545e371955d141.png)
![9ee9718bd9476edd62ba7e520800287a.png](https://i-blog.csdnimg.cn/blog_migrate/43764d0b629b85ea1a8ed8518afaffcf.png)
图 5.corr() 函数会得到相关矩阵
![f3626f2cd756d8de2b24d65a07b2bc26.png](https://i-blog.csdnimg.cn/blog_migrate/1aa7749fa864ce2c4644909cd1a79449.png)
![0b71d6fde027eeff0e319fce64aceffc.png](https://i-blog.csdnimg.cn/blog_migrate/7428f75eac90eb79639332c5167863b8.png)
图 6散射矩阵的例子,它绘制同一图表中两列的所有组合
pandas的高级功能
1ã行列合并
在pandas中,行列合并非常简单。
![4aa3eadf611869957c41f12cda3ee7dc.png](https://i-blog.csdnimg.cn/blog_migrate/c8ac952da2b0cfbbccb42e30defc5567.png)
合并3列只需要一行代码
2、分组
分组一开始并不简单,但是如果掌握其语法,你将发现这非常简单。
![4bdda5f4d591605beb42708c1b79d06e.png](https://i-blog.csdnimg.cn/blog_migrate/9fd8b0bdb4b0413af0d9a48f474f1ed1.png)
按列分组,选择要在其上操作函数的另一列。reset_index()将数据重新生成DataFrame(表)
![566e5fccae3b56affdc616201da38593.png](https://i-blog.csdnimg.cn/blog_migrate/add0266d0f1f3d9f9a23346445a8d223.png)
图 7使用链式操作,只需一行代码
3、遍历行
![6fb322ada58dfacae5a436ff289fc937.png](https://i-blog.csdnimg.cn/blog_migrate/6d8f3e494e0ad484fbac44a7d98f6c73.png)
iterrows()循环两个变量:行索引和行(上面代码中的i和row)。
总体来说,pandas是一个帮助数据科学家快速阅读和理解数据的工具包,它也可以说是Python如此优秀的原因之一。我还可以展示更多pandas包其他有趣的特点,但以上所述足以让人理解为什么数据科学家离不开pandas包。总之,pandas包有以下特点:
1、 简单易用,隐藏了所有复杂和抽象的计算;
2、非常直观;
3、快速。
本文由阿里云云栖社区组织翻译。
文章原标题《Be a more efficient data scientist, master pandas with this guide
》,译者:黄小凡,审校:袁虎。
程序员必看电影片单,高分烧脑假期必备!
终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码
2019年开发者必读!20位阿里技术大牛们帮你列了一份经典书单!