Pandas概论

做者|Billy Fetzner
编译|VK
来源|Towards Data Sciencehtml

我认为,既然你点开了这个页面,你可能有大量的数据须要分析,你可能正在想最好和最有效的方法来解决你数据的一些问题。你问题的答案能够经过Pandas解决。python

如何接触Pandas

因为Pandas的流行,它有本身的传统缩写,因此不管什么时候将Pandas导入python,请使用如下命名:数据库

import pandas as pd

Pandas包的主要用途是数据框api

Pandas API将Pandas数据帧定义为:数组

二维、大小可变、潜在的异构表格数据。数据结构还包含轴(行和列)。算术运算对行标签和列标签进行对齐。能够认为是一个相似于dict的容器,用于存储序列对象。是Pandas主要的数据结构。数据结构

基本上,这意味着你有包含在格式中的数据,以下所示。在行和列中找到的数据:框架

数据帧很是有用,由于它们提供了一种高效的方法来可视化数据,而后按你但愿的方式操做数据。机器学习

这些行能够很容易地被索引引用,索引是数据帧最左边的数字。索引将是从零开始的编号,除非你指定每一行的名称。列也能够很容易地被列名称(例如“Track name”)或其在数据帧中的位置进行引用。咱们将在本文后面详细讨论引用行和列。工具

建立数据帧

建立Pandas数据帧的方法有几种:学习

  1. 从.csv文件导入数据(或其余文件类型,例如Excel、SQL数据库)

  2. 从列表中

  3. 从字典里

  4. 从numpy数组

  5. 其余

一般,你将主要将.csv文件或某种类型的数据源的数据放入Pandas数据框架中,而不是从头开始,由于这将须要很是长的时间来完成,这取决于你拥有的数据量。如下是python字典中的一个快速、简单的示例:

import pandas as pd
dict1 = {'Exercises': ['Running','Walking','Cycling'],
         'Mileage': [250, 1000, 550]}
df = pd.DataFrame(dict1)
df

输出:

字典键(“Exercises”和“Mileage”)成为相应的列标题。字典中的值是本示例中的列表,成为数据帧中的单个数据点。Running是“Exercises”列表中的第一个,250将被列在第二列的第一个。另外,你会注意到,因为我没有为数据帧的索引指定标签,所以它会自动标记为0、1和2。

可是,就像我以前所说的,建立Pandas数据帧的最可能方法是从csv或其余类型的文件中导入,你将导入该文件来分析数据。只需如下内容便可轻松完成:

df = pd.read_csv("file_location.../file_name.csv")

pd.read_csv是一种很是强大和通用的方法,根据你但愿如何导入数据,它将很是有用。若是csv文件已经附带了头或索引,则能够在导入时指定。为了充分了解pd.read_csv,我建议你看看这里的PandasAPI:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html?highlight=read_csv

第一件事

如今你已经准备好了这个巨大的数据集,你必须查看它,看看它的外观。做为一个分析这些数据的人,首先必须对数据集熟悉,并真正了解数据集中发生了什么。我喜欢用四种方法来了解个人数据。

  1. .head() & .tail()
  2. .info()
  3. .describe()
  4. .sample()
raw_song.head()

它显示数据帧的前5行和每一个列,以便你轻松地总结数据的外观。你还能够在方法中指定必定数量的行,以显示更多行。

.tail仅显示最后5行。

raw_song.tail()

从这两个快速方法中,我对列名和数据的外观有了一个大体的了解,这只是从数据集的一个小样本中获得的。这些方法也很是有用,尤为是对于Spotify数据集这样的数据集,处理超过300万行的数据时,你能够轻松地显示数据集并快速了解数据,并且你的计算机也不会花很长时间来显示数据。

.info也颇有用,它向我显示了全部列、它们的数据类型以及是否有null数据点。

raw_song.info(verbose=True, null_counts=True)

若是你有完整的整型或浮点型列(即'Position'、'Streams'),那么.describe是一个有用的方法,能够帮助你更好地了解数据集,由于它将显示关于这些列的许多描述性统计信息。

raw_song.describe()

最后,.sample将容许你随机对数据帧进行采样,并查看你所作的任何操做是否错误地更改了数据集中的某些内容,并且当你第一次探索数据集时,也能够很好地了解数据集包含哪些内容

raw_song.sample(10)

在探索和准备数据集进行分析时,我始终使用这些方法。每当我更改列中的数据、更改列名或添加/删除行/列时,我都会经过至少快速运行前面5个方法中的一些来确保全部更改都按我但愿的方式进行。

选择行或列

太棒了,如今你知道如何将数据集做为一个总体来看待,但实际上你只想查看几列或几行,而后将其他部分排除在外。

.loc[]和.iloc[]

这两个方法将以不一样的方式来实现这一点,这取决于你可以引用特定行或列的方式。

若是知道行或列的标签,请使用.loc[]。

若是知道行或列的索引,请使用.iloc[]。

若是你二者都知道,就选你最喜欢的。

所以,回到Spotify数据集。你可使用.loc[]或.iloc[]查看列“Track Name”。若是知道列的标签可使用.loc[],因此我将使用如下内容:

raw_song.loc[:,'Track Name']

第一个括号后面的冒号指定我引用的行,因为我但愿全部行都位于“Track Name”列中,因此我使用“:”。

我将收到与.iloc[]相同的输出,但此次须要指定“Track Name”列的索引:

raw_song.iloc[:,1]

.loc[]和.iloc[]对行的做用相同,但在本例中,由于行的标签和索引都是相同的,因此它们看起来彻底相同。

切片

另外一种获取DataFrame部分的简单方法是使用[]并在方括号内指定列名。

raw_song[['Artist','Streams']].head()

若是你只使用一列和一组括号,你将获得Pandas Series。

raw_song['Streams']

从数据帧添加行、列

利用咱们已经从.loc[]得到的信息,咱们可使用this或.insert将行或列添加到数据帧中。

添加行

若是决定使用.loc[]将行添加到dataframe,则只能将其添加到dataframe的底部。指定dataframe中的任何其余索引,删除当前在该行中的数据,并用要插入的数据替换它。

raw_song.loc[3441197] = [0,'hello','bluemen',1,"https://open.spotify.com/track/notarealtrack", '2017-02-05','ec']

你也可使用.loc[]将列添加到数据帧中。

raw_song.loc[:,'new_col'] = 0
raw_song.tail()

除了在末尾以外,还有两种方法能够将新列插入数据帧中。

insert方法容许你指定要将列放入数据帧的位置。它接受3个参数、要放置它的索引、新列的名称以及要做为列数据放置的值。

raw_song.insert(2,'new_col',0)
raw_song.tail()

将列添加到dataframe的第二种方法是经过使用[]命名新列并使其与新数据相等,从而使其成为dataframe的一部分。

raw_song['new_col'] = 0
raw_song.tail()

经过这种方式,我没法指定新列的位置,但这是执行该操做的另外一种有用方法。

从数据帧中删除行、列

若是你想删除一些行或列,这很简单,只需删除它们。

只需指定要删除的轴(行为0,列为1)和要删除的行或列的名称,就能够开始了!

raw_song.drop(labels='new_col',axis=1)

重命名索引或列

若是要将dataframe的索引更改成dataframe中的其余列,请使用.set_index并在括号中指定列的名称。可是,若是你确切知道要为索引命名的内容,请使用.rename方法。

raw_song.rename(index={0:'first'}).head()

要重命名列,请在.rename方法中指定要重命名的列以及在{}中要为其命名的名称,相似于重命名索引。

raw_song.rename(columns={'Position':'POSITION_RENAMED'}).head()

如何迭代数据帧

不少时候,当你处理数据帧中的数据时,你须要以某种方式更改数据并迭代数据帧中的全部值。最简单的方法是在pandas中内置for循环:

for index, col in raw_song.iterrows():
    # 在此处操做数据

如何将数据帧写入文件

在完成对数据帧的全部操做以后,如今是导出数据帧的时候了,以即可以将其发送到其余地方。与从文件导入数据集相似,如今正好相反。Pandas有多种不一样的文件类型,你能够将数据帧写入其中,但最多见的是将其写入csv文件。

pd.to_csv('file_name.csv')

如今你知道Pandas和数据帧的基本知识了。这些是数据分析工具箱中很是强大的工具。

原文连接:https://towardsdatascience.com/an-introduction-to-pandas-29d15a7da6d

欢迎关注磐创AI博客站:
http://panchuang.net/

sklearn机器学习中文官方文档:
http://sklearn123.com/

欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/