"数字类与指的是十进制和数字,是同一类型。严格来说不是数字类型,因为他们实际上是把数字保存为字符串,其值的每一位(包括小数点)都要占用一个字节的存储空间,所以这种类型占用的空间很大。
但是,它的突出优点是小数位数是固定的,不会"扭曲"在操作上,它更适用于"价格"和"金额和金额要求低精度但非常高的精度。
pythonpandas库是python成为数据分析优秀编程语言的原因之一。pandas使导入、分析和可视化数据变得更加容易。它基于numpy和matplotlib等软件包,方便您进行大部分数据分析和可视化。
在这篇python数据科学教程中,我们将使用ericgrinstein捕获的数据,使用熊猫来分析来自流行的视频游戏评论网站ign的视频游戏评论。哪个主持人赢得了"控制台战争与游戏(游戏审查方面)?这个数据集将帮助我们找到答案。
当我们分析视频游戏评论时,我们将理解关键的熊猫概念,例如索引。您可以在我们的其他python教程中学习更多关于python和pandas的知识,或者注册pythonpandas课程。熊猫也用于我们的许多其他数据科学课程。
请记住,本教程是用python3.5编写的,内置在jupyternotebook中。你可能用的是较新版本的python,pandas和jupyter,但是结果应该基本相同。
用熊猫导入数据
如果你正在使用本教程,你需要下载数据集,你可以在这里。
我们将采取的第一步是读取数据。数据存储在逗号分隔值或csv文件中,其中每行由换行符分隔,每列由逗号(,)分隔。以下是ign.csv文件的前几行:
从上面可以看到,文件中的每一行都代表一款游戏,已经过ign审核。这些栏包含关于游戏的信息:
1)1)score_phrase—ign如何用一个词描述游戏。这链接到它收到的分数。
2)标题——游戏的名称。
3)url—您可以在其中查看完整注释的url。
4)平台——一个评论游戏的平台(pc,ps4等。).
5)分数——游戏的分数,从1.0到10.0。6)流派——游戏类型。
7)editors_choice-n如果游戏不是编辑选择的y,那么就是。这和分数密切相关。
8)release_year——游戏发布的年份。
9)release_month——游戏发布的月份。
10)release_day——游戏发布的那一天。
还有一个包含行索引值的前导列。我们可以放心地忽略该列,但是我们将在后面深入讨论哪些索引值。
为了在python和pandas中有效地处理数据,我们需要将csv文件读入pandasdataframe。dataframe是一种表示和处理表格数据的,也就是表格数据,比如电子表格。表格数据具有行和列的格式,就像我们的csv文件一样,但是如果我们可以将其作为表格来查看,我们将更容易读取和排序。
为了读入数据,我们需要使用_csv函数。这个函数将接收一个csv文件并返回一个数据帧。以下代码将:
a.导入熊猫库。为了更快地输入,我们将其重命名为pd。这是数据分析和数据科学中的标准约定。你会经常看到进口的熊猫和其他人一样。;pd中的s代码。
b.将ign.csv读入dataframe,并将结果赋给一个名为reviews的新变量,这样我们就可以使用reviews来引用我们的数据。
读完dataframe,用更直观的看看我们得到了什么,会很有帮助。pandas方便地为我们提供了两种快速将数据打印到表格中的方法。这些功能是:
1)dataframe.head()—打印dataframe的前n行,其中n是作为参数传递给函数的数字,即dataframe.head(7)。如果没有传递参数,默认值为5。
2)dataframe.tail()—打印dataframe的最后n行。同样,默认值是5。
我们将使用此标题方法来查看内容评论:
我们还可以访问酒店,查看以下线路评论:
正如我们所看到的,一切都被正确地读取了——我们有18,625行和11列。
与像numpy这样的python包相比,使用pandas的一个优点是它允许我们拥有不同数据类型的列。在我们的数据集中,reviews我们有一个r列,存储浮点值(比如score)、字符串值(比如score_phrase)和整数(比如。elease_year,所以这里会很难用numpy,但是熊猫和python可以处理的很好。
既然我们已经正确地读取了数据,让让我们开始构建索引审查,以获得所需的行和列。
用熊猫索引数据帧
以前,我们使用这种标题方法来打印前5行评论。我们可以使用该方法来完成同样的事情。这个iloc方法允许我们按位置检索行和列。为此,我们需要指定所需行的位置和所需列的位置。以下代码通过选择数据集中的第0行到第5行以及所有列来复制我们的结果:
让让我们更深入地研究我们的代码:我们指定了所需的行0:5。这意味着我们希望第5行从位置0到(但不包括)位置。
第一行被认为是在位置0,所以选择行0:5给我们位置0,1,2,3,4。我们还需要所有的列,并使用快捷键来选择它们。它是这样工作的:如果我们不不喜欢第一个位置值,比如:5,假设我们的意思是0。如果我们忽略最后一个位置值(如)0:),则假设我们指的是数据帧中的最后一行或最后一列。我们需要所有的列,所以只指定一个冒号((:),没有任何位置。这会将我们的列从0移动到最后一列。以下是一些索引示例和结果:
1)[:5,:]-前5行,以及这些行的所有列。
2)[:,:]-整个数据帧。
3)[5:,5:]-行从位置5开始,列从位置5开始。
4)[:,0]—第一列,以及该列中的所有行。
5)[9,:]-第十行,以及这一行的所有列。
按位置索引非常类似于numpy索引。如果想了解更多,可以看看我们的numpy教程。现在我们知道了如何通过位置索引,让让我们删除第一列。;我没有任何有用的信息:
在pandas中使用标签在python中创建索引
既然我们知道了如何按位置检索行和列,那么就值得研究使用dataframes的另一种主要方法,即按标记检索。行和列。与numpy相比,熊猫的主要优势是每一列每一行都有一个标签。您可以处理列的位置,但是很难跟踪哪个数字对应于哪个列。
我们可以使用方法来处理标签,这允许我们使用标签而不是位置进行索引。我们可以使用下面的loc方法来显示r:5,:】没有太大区别。这是因为尽管行标签可以取任何值,但是我们的行标签与位置完全匹配。您可以在上表的最左侧看到行标签(它们以粗体显示)。您也可以通过访问dataframe的index属性来查看它们。我们将显示行索引评论:
int64index([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,4281,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,...],dtypeint64)
但是,索引并不总是与位置匹配。在下面的代码单元中,我们将:
a.从第10行到第20行获取评论,并将结果分配给some_reviews。
b.显示某些评论的前5行。
如上图,在某些_reviews中,行索引从开始,10到20结束。因此,尝试将小于10或大于10的数字20用于loc将导致错误:
some_reviews.loc[9:21,:]
如前所述,使用数据时,列标签可以使工作更容易。我们可以在loc方法中指定列标签,通过标签而不是位置来检索列。
我们您还可以通过传入一个列表来一次指定多个列:
熊猫系列物品
我们可以用几种不同的方法在pandas中检索一个单独的列。到目前为止,我们已经看到了两种语法:
1)[:,1]—检索第二列。
2)reviews.loc[:,scor:18625,dtyp:浮动64
在序列和数据帧上也有类似的方法。这里有一些方便的东西:
1)—找出数据帧中各列之间的相关性。
2)—计算每个dataframe列中非空值的数量。
3)—找出每列中的最大值。
4)—找出每列中的最小值。
5)—求每列的中值。
6)—求每列的标准差。
例如,我们可以使用这个corr方法来查看是否有任何列与分数相关联。这可以告诉我们是最近发布的游戏获得了更高的评级(r:得分,l:18625,dtyp:浮动64
所有常用的数算符都在python中工作,例如,-、*、/,并将在序列或数据帧中工作,并将应用于数据帧或序列中的每个元素。
熊猫的布尔索引
既然我们已经了解了一些关于熊猫的基本知识,让我们一起来学习吧。;让我们继续分析。我们之前看到的,平均来说,在评分栏中的价值评价是7左右。如果我们想找到所有分数高于平均水平的游戏呢?
我们可以先做个对比。comparison将序列中的每个值与指定的值进行比较,然后生成一个包含指示比较状态的布尔值的序列。例如,使用pythonpandas分析视频游戏数据,我们可以看到哪些行的分数值大于7:
分数_过滤评论[分数]gt7
分数_过滤器
0真
1正确
2正确
3正确
4正确
5错误
6错误
7正确
8假
9假
10正确
11真实的
12个错误
13正确
14对...
18610假
18611错误
18612正确
18613正确
18614正确
18615正确
18616真
18617正确
18618正确
18619正确
18620正确
18621正确
18622错误
18623正确
18624正确
nam:得分,l:18625,dtyp:·波尔
对于布尔序列,我们可以使用它在序列包含值的数据帧中选择行true。因此,我们只能选择得分大于7的行评审:
您可以使用多个筛选标准。假设我们在寻找发布xboxone得分超过0的第7场比赛。在下面的代码中,我们:
a.为两个条件设置过滤器:
1)检查分数是否大于7。
2)检查平台是否等于xboxone。
b.应用筛选器仅查看所需的行。
c.head方法打印的前5行是filtered_reviews。
当使用多个条件进行筛选时,将每个条件放在括号中并用amp符号分隔是很重要的。
熊猫图
现在我们知道了如何筛选,我们可以创建图表来观察xboxone和playstation4的回溯分布。这将帮助我们确定哪个主机的游戏更好。
我们可以通过直方图来做到这一点,直方图将绘制不同得分范围内的频率。我们可以使用该方法为每个控制台制作一个直方图。这种方法在幕后使用流行的python绘图库matplotlib来生成漂亮的绘图。
绘图方法默认为绘制折线图。我们需要传入关键字参数kindhist来绘制直方图。在下面的代码中,我们:
a.内联调用%matplotlib在jupyter笔记本中设置绘图。
b.过滤评论,仅包含相关数据。
c.画分数栏。
我们还可以谈谈ps4:
从我们的柱状图可以看出,与playstation相比4xboxone,一款收视率较高的游戏。
显然,这只是冰山一角,这涉及到我们可以用来分析数据集的潜在方向,但我们已经有了一个良好的开端:我们使用python和pandas导入了数据集,学会了使用各种索引方法来选择我们想要的数据点,并进行了一些快速的探索性数据分析,以回答我们一开始遇到的问题。