摘要:Python是开源的,因此有不少开源固有的问题。若是你是Python新手,很难知道针对特定任务的包哪一个是最好的。你须要有经验的人来告诉你。今天我要告诉大家的是:在数据科学中,有一个软件包是大家绝对须要学习的,那就是pandas。
而pandas真正有趣的地方是,不少其余的包也在里面。pandas是一个核心包,所以它具备来自其余各类包的特性。sql
pandas相似于Python中的Excel:它使用表(即DataFrame)并对数据进行转换,但它还能作更多。json
若是你已经熟悉Python,能够直接进入第三部分app
如今让咱们开始:函数
import pandas as pd
一、读取数据:工具
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_sqlspa
二、写入数据excel
data.to_csv('my_new_file.csv', index=None)
index=None将简单地按原样写入数据。若是你不写index=None,会获得额外的行。code
我一般不使用其余函数,好比to_excel,to_json,to_pickle,to_csv,虽然它们也作得很好,可是csv是保存表最经常使用的方法。
三、检查数据:
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行。
一、逻辑运算
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()函数。
二、基本绘图
多亏了matplotlib包,这个特性才得以实现。就像咱们在介绍中说的,它能够直接用在pandas身上。
data['column_numerical'].plot()
data['column_numerical'].hist()
绘制分布图(直方图)
%matplotlib inline
若是你使用Jupyter,在绘图以前,不要忘记写这一行(在代码中只写一次)
三、更新数据
data.loc[8, 'column_1'] = 'english'
将' column_1 '的第8行值替换为' english '
data.loc[data['column_1']=='french', 'column_1'] = 'French'
在一行中更改多行值
如今你能够作一些在Excel中很容易作的事情。让咱们来挖掘一些在Excel中作不到的神奇事情。
一、计算功能
data['column_1'].value_counts()
二、对全行、全列或全部数据的操做
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)中的全部单元格。
三、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()也是同样
四、相关矩阵和散射矩阵
data.corr() data.corr().applymap(lambda x : int(x*100)/100)
pd.plotting.scatter_matrix(data, figsize=(12,8))
一、行列合并
在pandas中,行列合并不是常简单。
data.merge(other_data, on=['column_1', 'column_2', 'column_3'])
合并3列只须要一行代码
二、分组
分组一开始并不简单,可是若是掌握其语法,你将发现这很是简单。
data.groupby('column_1')['column_2'].apply(sum).reset_index()
按列分组,选择要在其上操做函数的另外一列。reset_index()将数据从新生成DataFrame(表)
三、遍历行
dictionary = {} for i,row in data.iterrows(): dictionary[row['column_1']] = row['column_2']
iterrows()循环两个变量:行索引和行(上面代码中的i和row)。
整体来讲,pandas是一个帮助数据科学家快速阅读和理解数据的工具包,它也能够说是Python如此优秀的缘由之一。我还能够展现更多pandas包其余有趣的特色,但以上所述足以让人理解为何数据科学家离不开pandas包。总之,pandas包有如下特色:
一、 简单易用,隐藏了全部复杂和抽象的计算;
二、很是直观;
三、快速。
本文为云栖社区原创内容,未经容许不得转载。