您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
学习python中的pandas有没有好的教程推荐?
数据,我们可以,方法学习python中的pandas有没有好的教程推荐?
发布时间:2020-12-06加入收藏来源:互联网点击:
按位置索引与NumPy索引非常相似。如果您想了解更多信息,可以阅读我们的NumPy教程。现在我们知道了如何按位置索引,让我们删除第一列,该列没有任何有用的信息:
在Pandas中使用标签在Python中建立索引
既然我们知道如何按位置检索行和列,那么值得研究使用DataFrames的另一种主要方法,即按标签检索行和列。与NumPy相比,Pandas的主要优势在于,每一列和每一行都有一个标签。可以处理列的位置,但是很难跟踪哪个数字对应于哪个列。
我们可以使用pandas.DataFrame.loc方法处理标签,该方法允许我们使用标签而不是位置进行索引。我们可以reviews使用以下loc方法显示前五行:
上面的内容实际上与并没有太大的不同reviews.iloc[0:5,:]。这是因为尽管行标签可以采用任何值,但我们的行标签与位置完全匹配。您可以在上方表格的最左侧看到行标签(它们以粗体显示)。您还可以通过访问DataFrame 的index属性来查看它们。我们将显示的行索引reviews:
reviews.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, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, ...], dtype='int64')
不过,索引不一定总是与位置匹配。在下面的代码单元中,我们将:
a.获取行10至行20的reviews,并分配结果some_reviews。
b.显示的第一5行some_reviews。
如上所示,在中some_reviews,行索引始于,10结束于20。因此,尝试loc使用小于10或大于的数字20将导致错误:
some_reviews.loc[9:21,:]
如前所述,在使用数据时,列标签可以使工作变得更加轻松。我们可以在loc方法中指定列标签,以按标签而不是按位置检索列。
我们还可以通过传入列表来一次指定多个列:
Pandas系列对象
我们可以通过几种不同的方式在Pandas中检索单个列。到目前为止,我们已经看到了两种语法:
1)reviews.iloc[:,1] —将检索第二列。
2)reviews.loc[:,\"score_phrase\"] —还将检索第二列。
还有第三种甚至更容易的方法来检索整列。我们可以在方括号中指定列名称,例如使用字典:
我们还可以通过以下方法使用列列表:
当我们检索单个列时,实际上是在检索Pandas Series对象。DataFrame存储表格数据,而Series存储数据的单列或单行。
我们可以验证单个列是否为系列:
我们可以手动创建系列以更好地了解其工作原理。要创建一个Series,我们在实例化它时将一个列表或NumPy数组传递给Series对象:
系列可以包含任何类型的数据,包括混合类型。在这里,我们创建一个包含字符串对象的系列:
在Pandas中创建一个DataFrame
我们可以通过将多个Series传递到DataFrame类中来创建DataFrame。在这里,我们传入刚刚创建的两个Series对象,
s1作为第一行,s2作为第二行:
我们还可以使用列表列表完成同样的事情。每个内部列表在结果DataFrame中被视为一行:
我们可以在创建DataFrame时指定列标签:
以及行标签(索引):
还请注意,不需要缩进和单独的行。我们已经以这种方式编写了代码,以使其更易于解析,但是您经常会遇到将它们全部写成一行的情况。例如,以下代码将产生与我们在本段上方的表中看到的结果完全相同的结果:
无论如何,添加标签后,便可以使用它们对DataFrame进行索引:
columns如果将字典传递给DataFrame构造函数,则可以跳过指定关键字参数的操作。这将自动设置列名称:
PandasDataFrame方法
如前所述,pandas DataFrame中的每一列都是Series对象:
我们可以在Series对象上调用与在DataFrame上可以调用的大多数相同的方法,包括head:
Pandas Series和DataFrames还具有其他使计算更简单的方法。例如,我们可以使用pandas.Series.mean方法来查找Series的均值:
我们还可以调用类似的pandas.DataFrame.mean方法,该方法默认情况下将查找DataFrame中每个数字列的平均值:
我们可以修改axis关键字参数以mean计算每行或每列的平均值。默认情况下,axis等于0,并将计算每列的平均值。我们还可以将其设置1为计算每行的平均值。请注意,这只会计算每行中数值的平均值:
reviews.mean(axis=1)
0 510.500
1 510.500
2 510.375
3 510.125
4 510.125
5 509.750
6 508.750
7 510.250
8 508.750
9 509.750
10 509.875
11 509.875
12 509.500
13 509.250
14 509.250
...
18610 510.250
18611 508.700
18612 509.200
18613 508.000
18614 515.050
18615 515.050
18616 508.375
18617 508.600
18618 515.025
18619 514.725
18620 514.650
18621 515.000
18622 513.950
18623 515.000
18624 515.000
Length: 18625, dtype: float64
Series和DataFrames上有很多类似的方法mean。这里有一些方便的东西:
1)pandas.DataFrame.corr —查找DataFrame中各列之间的相关性。
2)pandas.DataFrame.count —计算每个DataFrame列中非空值的数量。
3)pandas.DataFrame.max —在每一列中找到最大值。
4)pandas.DataFrame.min —查找每一列中的最小值。
5)pandas.DataFrame.median —查找每列的中位数。
6)pandas.DataFrame.std —查找每列的标准偏差。
例如,我们可以使用该corr方法查看是否有任何列与关联score。这可以告诉我们最近发布的游戏获得了更高的评价(release_year),还是在年底之前发布的游戏获得了更好的评分(release_month):
正如我们在上面看到的那样,我们的数字列都没有与关联score,因此我们知道发布时间与评论评分并不线性相关。
DataFrame Math与Pandas
我们还可以使用pandas在Python中的Series或DataFrame对象上执行数学运算。例如,我们可以将score列中的每个值除以2以将刻度从0– 切换10到0– 5:
reviews[\"score\"] / 2
0 4.50
1 4.50
2 4.25
3 4.25
4 4.25
5 3.50
6 1.50
7 4.50
8 1.50
9 3.50
10 3.75
11 3.75
12 3.50
13 4.50
14 4.50
...
18610 3.00
18611 2.90
18612 3.90
18613 4.00
18614 4.60
18615 4.60
18616 3.75
18617 4.20
18618 4.55
18619 3.95
18620 3.80
18621 4.50
18622 2.90
18623 5.00
18624 5.00
Name: score, Length: 18625, dtype: float64
所有常用的数学运算符在Python的工作,如+,-,*,/,和^将在系列或DataFrames大Pandas的工作,并且将适用于每一个元素在一个数据帧或一个系列。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |