作者 |Billy Fetzner
编译 |VK
起源 |Towards Data Science
我认为,既然你点开了这个页面,你可能有大量的数据须要剖析,你可能正在想最好和最无效的办法来解决你数据的一些问题。你问题的答案能够通过 Pandas 解决。
如何接触 Pandas
因为 Pandas 的风行,它有本人的传统缩写,所以无论何时将 Pandas 导入 python,请应用以下命名:
import pandas as pd
Pandas 包的主要用途是数据框
Pandas API 将 Pandas 数据帧定义为:
二维、大小可变、潜在的异构表格数据。数据结构还蕴含轴(行和列)。算术运算对行标签和列标签进行对齐。能够认为是一个相似于 dict 的容器,用于存储序列对象。是 Pandas 次要的数据结构。
基本上,这意味着你有蕴含在格局中的数据,如下所示。在行和列中找到的数据:
数据帧十分有用,因为它们提供了一种高效的办法来可视化数据,而后按你心愿的形式操作数据。
这些行能够很容易地被索引援用,索引是数据帧最右边的数字。索引将是从零开始的编号,除非你指定每一行的名称。列也能够很容易地被列名称(例如“Track name”)或其在数据帧中的地位进行援用。咱们将在本文前面具体探讨援用行和列。
创立数据帧
创立 Pandas 数据帧的办法有几种:
- 从.csv 文件导入数据(或其余文件类型,例如 Excel、SQL 数据库)
- 从列表中
- 从字典里
- 从 numpy 数组
- 其余
通常,你将次要将.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/pan…
第一件事
当初你曾经筹备好了这个微小的数据集,你必须查看它,看看它的外观。作为一个剖析这些数据的人,首先必须对数据集相熟,并真正理解数据集中产生了什么。我喜爱用四种办法来理解我的数据。
- .head() & .tail()
- .info()
- .describe()
- .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.co…
欢送关注磐创 AI 博客站:
http://panchuang.net/
sklearn 机器学习中文官网文档:
http://sklearn123.com/
欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/