当您开始使用Python进行数据分析和数据科学时,Pandas是您将学习的第一个库之一。其可帮助您处理数据集,转换和清理数据以及获取统计信息。在本教程中,我们将回答人们在使用熊猫时遇到的10个最常见的问题。
Pandas教程:Python数据框架的10个常见问题
当您开始使用Python进行数据分析和数据科学时,Pandas是您将学习的第一个库之一。其可帮助您处理数据集,转换和清理数据以及获取统计信息。

在本教程中,我们将回答人们在使用熊猫时遇到的10个最常见的问题。
数据集
在本教程的第一部分中,我们将使用包含城市人口样本数据以及有关土地面积和人口密度的一些信息的数据集。

Pandas Loc和iloc
pandas.loc[] 有助于通过标签或布尔数组切片访问一组行和列。
让我们选择墨西哥城的人口。

下面我们仅打印墨西哥城的人口。

使用,.iloc[]您可以使用数字整数索引选择列。
请记住以下几点:
- 平原:用于选择行/列中的所有数据。
- 0:2 将选择行/列0和1。不包括2。
- -1 将选择最后一个元素。

重命名列
接下来,我们将重命名这些列,以使它们将来更易于访问。
有几种方法可以做到这一点:
- 直接分配df.columns一个列名称数组。
- 用df.rename重命名特定列。

在pandas DataFrame中选择多个列
让我们将DataFrame分为两个包含以下内容的DataFrame:
- 城市,国家和人口。
- 城市,区域和密度。
我们可以通过几种方式做到这一点:
- 通过使用.iloc[:, 0:3],其中括 中的第一个参数选择所有行,第二个参数选择列0,列1和列2。
- 通过将DataFrame切片为double[]并输入要选择的列名。

熊猫按列合并两个表
接下来,我们将垂直连接我们创建的两个表。这些表具有相同的City列,因此我们将使用该pd.merge函数来连接两个表。
该left_on和right_on参数指示列名在第一和第二个表合并上。

使用pandas更改pandas中的列类型
与数据帧的工作进一步,我们需要转变Population,Area以及Density从字符串列转换为数字。
为此,我们将:
- 创建一个函数,to_int()它将带有’,’符 的字符串转换为整数。
- 将apply函数与lambda表达式一起使用。
分组并变成一个DataFrame
现在,让我们对DataFrame进行分组,Country并计算此数据样本中每个国家/地区的人口。
困难之pd.groupby处在于它返回一个groupby对象,而不是DataFrame。在下面的示例中,我们将展示如何从groupby对象创建DataFrame。
我们将对进行分组Country,同时计算Population和Area列的总和。我们将删除密度列,因为我们不再需要它。

如何在Pandas中的DataFrame中的行上进行迭代
尽管遍历行可能不是最快的解决方案,但有时仍然可以派上用场。您可以使用循环.iterrows()功能来做到这一点。
考虑尝试对applyPandas DataFrame的函数或向量化表示执行相同的操作。在大型数据集上,这将提高计算速度。
在下面,我们将Population列除以1000,并以千为单位获得人口数。下面有3个替代代码示例。

如何根据列值从DataFrame中选择行
让我们选择人口超过1000万人,面积不到2000平方公里的国家。
您可以通过在中输入逻辑约束来做到这一点[]。

如何更改DataFrame列的顺序
您可以简单地通过以不同顺序切片现有的DataFrame来做到这一点。

用Pandas清理数据
要开始使用数据,您需要清理数据。
首先的基本步骤是:
- 在DataFrame中删除重复项。
- 用有意义的值填充空单元格,或用很多空值删除列。
- 获取有关列值的统计信息。
让我们下载带有 球比赛结果的数据集。

我们将降大任于重复使用pd.drop_duplicates,以inplace = True将更改应用到数据帧。

现在,让我们找出DataFrame中是否存在NaN值。
df.isna().any() 当该列包含NaN值时为True。

在此minutes列中,我们具有91%的NaN值,因此将其删除,因为它不包含任何有用的信息。

在winner_age,loser_age,loser_rank,和winner_rank列没有太多的NaN值,所以我们会用中位数代替NaN值。



有了df.describe我们,我们可以获得有关数字列数据的统计信息。

这就是我们的Pandas教程。你学会了吗即下载体验吧!您有任何疑问或意见欢迎评论!
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!