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()也是一样

图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、快速。

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

pandas指南:做更高效的数据科学家相关推荐

  1. 图解数据分析(12) | Pandas - 数据分析工具库介绍(数据科学家入门·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/33 本文地址:https://www.showmeai.tech/article-d ...

  2. 图解数据分析(13) | Pandas - 核心操作函数大全(数据科学家入门·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/33 本文地址:https://www.showmeai.tech/article-d ...

  3. 【Python基础】在pandas中利用hdf5高效存储数据

    1 简介 HDF5(Hierarchical Data Formal)是用于存储大规模数值数据的较为理想的存储格式. 其文件后缀名为h5,存储读取速度非常快,且可在文件内部按照明确的层次存储数据,同一 ...

  4. Python应用实战-在pandas中利用hdf5高效存储数据

    1 简介 HDF5(Hierarchical Data Formal)是用于存储大规模数值数据的较为理想的存储格式. 其文件后缀名为h5,存储读取速度非常快,且可在文件内部按照明确的层次存储数据,同一 ...

  5. 数说故事2022年食品饮品风味趋势报告,市场营销这样做更高效

    ​​端午节刚过,这些网红粽子你吃了吗? 螺蛳粉粽.臭豆腐粽.小龙虾粽.每日坚果棕.金丝阿胶粽.龙井鲍鱼鲜肉粽--这届年轻人眼里,万物皆可包粽子. 事实上,不只是粽子,整个食品饮品界的口味都在悄悄起变化 ...

  6. 安全数据科学家的日常:需要做什么?将面对哪些挑战?

    导读:目前网络安全领域的工作岗位远远多于合格的人选,所以好消息是网络安全还是一个适合涉足的领域.坏消息是要保持最新状态所需的技能在快速变化.通常情况下,需求是发明的动力. 随着对熟练网络安全专业人士的 ...

  7. 不懂数学,照样做数据科学家

    不懂数学,照样做数据科学家 AI和机器学习的火热让数据科学家成为近几年热门职业之一.但对于试图从事这一职业的新人来说,数学可能最大的拦路虎之一.不过本文作者认为,当数据科学家并不一定需要坚实的数学基础 ...

  8. 作为数据科学家,我都有哪些弱点

    如果现代工作面试教会了我们什么,那就是关于"你最大的弱点是什么?"这个问题,正确答案是"我工作太努力了."显然,说出自己的弱点是很可笑的.虽然在个人简历中列出弱 ...

  9. 【安全】一名安全数据科学家的日常生活

    云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 导读:目前网络安全领域的工作岗位远远多于合格的人选,所以好消息是网络安全还是一个适合涉足的领域.坏 ...

最新文章

  1. 温故知新MySQL--如何在MySQL表中删除重复行
  2. 201621123048《Java程序设计》第八周学习总结
  3. POPUP_TO_CONFIRM_LOSS_OF_DATA
  4. linux tr命令完整,linux tr命令详解
  5. 利用OpenCV在picture控件中显示图片
  6. 2019最强Python书单,喜欢看书的小伙伴看这里!
  7. RMSE、MAE和SD的基本概念
  8. 前端关于点击链接下载文件的解决办法
  9. android开发工具Eclipse Locat如何过滤log
  10. C# Bitmap GetPixel 效率太低,太慢的替代方法
  11. NVIDIA Jetson系列产品介绍
  12. 小米路由器4A千兆版 直刷 openwrt
  13. OpenCV C++案例实战五《答题卡识别》
  14. 在SWD模式下用SEGGER J-Flash 下载STM32.hex文件
  15. 苹果mac休眠快捷键_史上最详细的苹果Macbook快捷键使用
  16. HASH查找算法—JAVA实现
  17. 大数据惊人:凌晨4点的中国人都在做什么?
  18. 10343 划分凸多边形(优先做)
  19. Android mht离线文件阅读!
  20. 细谈八种架构设计模式及其优缺点概述

热门文章

  1. python开发信息系统权限设置_利用Python实现权限设置的详细教程
  2. 计算机网络 --- 数据链路层CSMA/CA协议
  3. java yaml dump方法_yamlyaml.load与yaml.dump方法
  4. latex 分页_latex 图片跨页显示问题???
  5. 清华数学能赶超北大?北大数学院士已达8人,清华引进2位菲尔兹奖
  6. 耿美玉起诉饶毅名誉侵权,法院判了!驳回请求,但对饶毅方也应给予批评
  7. To 研究生,第一:做学位论文期间,不要有任何度假休息的打算;第二,导师错的时候不多;第三……...
  8. 20世纪物理学巨人、诺奖得主菲利普安德森逝世,享年96岁
  9. 姐妹花考上川大本硕博连读,网红兄弟一起上清华
  10. Yolo家族算法分析