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

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

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

9d7c74a20d55e1729562d61440de1b893a7563cd 

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

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

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

现在让我们开始:

import pandas as pd

pandas包最基本的功能

1、读取数据:

data = pd.read_csv('my_file.csv')

data=pd.read_csv('my_file.csv',sep=';',encoding='latin-1',nrows=1000, kiprows=[2,5])

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

最常用的函数:read_csv, read_excel

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

2、写入数据

data.to_csv('my_new_file.csv', index=None)

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

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

3、检查数据:

data.shape

data.describe()

data.head(3)

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

data.loc[8]

打印第8行

data.loc[8, 'column_1']

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

data.loc[range(4,6)]

打印第4行到第6行

pandas初级功能

1、逻辑运算

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')]

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

data[data['column_1'].isin(['french', 'english'])]

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

2、基本绘图

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

data['column_numerical'].plot()

e9200f7226b9ce56649d844cf8b1d30ebaaf7e0d 

 1 .plot() 输出示例

data['column_numerical'].hist()

绘制分布图(直方图)

40d05e950692ff91b457d1d686d3f82dc1f7f9c8 

 2 .hist() 函数输出示例

%matplotlib inline

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

3、更新数据

data.loc[8, 'column_1'] = 'english'

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

data.loc[data['column_1']=='french', 'column_1'] = 'French'

在一行中更改多行值

3、pandas的中级功能

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

1、计算功能

data['column_1'].value_counts()

a7fbd11131c9be7513bd4d761c7d3442bd2b8fe2 

 3 .value_counts() 输出示例

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

data['column_1'].map(len)

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

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

data['column_1'].map(len).map(lambda x : x/100).plot()

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

data.apply(sum)

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

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

3、tqdm包

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

from tqdm import tqdm_notebook

tqdm_notebook().pandas()

pandas设置tqdm

data['column_1'].progress_map(lambda x : x.count('e'))

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

96d484d4f3e44422b9f242aec89895cd23fe6649 

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

4、相关矩阵和散射矩阵


data.corr()

data.corr().applymap(lambda x : int(x*100)/100)


796e8481a0ef681e5409cbf165954e02e6f77c0a 

 5.corr() 函数会得到相关矩阵

pd.plotting.scatter_matrix(data, figsize=(12,8))

4a193f000c4a4d92e67b364b8b56af2a5142767a 

 6散射矩阵的例子,它绘制同一图表中两列的所有组合

pandas的高级功能

1、 行列合并

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

data.merge(other_data, on=['column_1', 'column_2', 'column_3'])

合并3列只需要一行代码

2、分组

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

data.groupby('column_1')['column_2'].apply(sum).reset_index()

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

243bb6119a730b30267f378e4b64481c0865a97a 

 7使用式操作,只需一行代码

3、遍历行

dictionary = {}

for i,row in data.iterrows():

dictionary[row['column_1']] = row['column_2']

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

 

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

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

2、非常直观;

3、快速。


本文由阿里云云栖社区组织翻译。

文章原标题《Be a more efficient data scientist, master pandas with this guide

》,译者:黄小凡,审校:袁虎。

文章简译,更为详细的内容,请查看原文

相关文章
|
2月前
|
数据处理 Python
在数据科学领域,Pandas和NumPy是每位数据科学家和分析师的必备工具
在数据科学领域,Pandas和NumPy是每位数据科学家和分析师的必备工具。本文通过问题解答形式,深入探讨Pandas与NumPy的高级操作技巧,如复杂数据筛选、分组聚合、数组优化及协同工作,结合实战演练,助你提升数据处理能力和工作效率。
46 5
|
3月前
|
数据采集 机器学习/深度学习 数据处理
数据科学家的秘密武器:Pandas与NumPy高级应用实战指南
【10月更文挑战第4天】在数据科学领域,Pandas和NumPy是每位数据科学家不可或缺的秘密武器。Pandas凭借其DataFrame和Series数据结构,提供高效灵活的数据处理工具;NumPy则以其强大的N维数组对象ndarray和丰富的数学函数库,成为科学计算的基石。本文通过实战示例,展示了两者如何携手助力数据科学家在数据探索中披荆斩棘。Pandas擅长数据清洗、转换和结构化操作,NumPy则专注于数值计算与矩阵运算。通过结合使用,可以实现高效的数据处理与分析,大幅提升工作效率与数据处理深度。
46 4
|
3月前
|
数据采集 机器学习/深度学习 数据处理
数据科学家的秘密武器:Pandas与NumPy高级应用实战指南
【7月更文挑战第14天】Pandas与NumPy在数据科学中扮演关键角色。Pandas的DataFrame和Series提供高效数据处理,如数据清洗、转换,而NumPy则以ndarray为基础进行数值计算和矩阵操作。两者结合,从数据预处理到数值分析,形成强大工具组合。示例展示了填充缺失值、类型转换、矩阵乘法、标准化等操作,体现其在实际项目中的协同效用。掌握这两者,能提升数据科学家的效能和分析深度。**
66 0
|
6月前
|
数据采集 机器学习/深度学习 数据处理
数据科学家的秘密武器:Pandas与NumPy高级应用实战指南
【7月更文挑战第14天】Pandas与NumPy在数据科学中扮演关键角色。Pandas的DataFrame和Series提供高效数据处理,如数据清洗、转换,而NumPy则以ndarray为基础进行数值计算和矩阵操作。两者结合,从数据预处理到数值分析,形成强大工具组合。示例展示了填充缺失值、类型转换、矩阵乘法、标准化等操作,体现其在实际项目中的协同效用。掌握这两者,能提升数据科学家的效能和分析深度。**
53 0
|
机器学习/深度学习 人工智能 自然语言处理
高手系列!数据科学家私藏pandas高阶用法大全 ⛵
本文汇总介绍了21个 Pandas 进阶用法,能保持代码整洁优雅,更能提高代码效率!这篇是从数据科学家朋友那里搞到的私藏,快一起薅羊毛~
1257 4
高手系列!数据科学家私藏pandas高阶用法大全 ⛵
|
2月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
81 0
|
4月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
114 0
|
2月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
53 2
|
3月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
100 3
|
3月前
|
数据采集 数据挖掘 API
Python数据分析加速器:深度挖掘Pandas与NumPy的高级功能
在Python数据分析的世界里,Pandas和NumPy无疑是两颗璀璨的明星,它们为数据科学家和工程师提供了强大而灵活的工具集,用于处理、分析和探索数据。今天,我们将一起深入探索这两个库的高级功能,看看它们如何成为数据分析的加速器。
51 1