添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Python 教程之 Pandas(1)—— Pandas 数据框

Python 教程之 Pandas(1)—— Pandas 数据框

Pandas DataFrame 是具有标记轴(行和列)的二维大小可变、可能异构的表格数据结构。数据框是一种二维数据结构,即数据以表格的方式在行和列中对齐。Pandas DataFrame 由三​​个主要组件组成,即 数据
创建 Pandas 数据框
在现实世界中,将通过从现有存储中加载数据集来创建 Pandas DataFrame,存储可以是 SQL 数据库、CSV 文件和 Excel 文件。Pandas DataFrame 可以从列表、字典和字典列表等中创建。Dataframe 可以通过不同的方式创建,以下是我们创建数据框的一些方法:
使用 List 创建数据框: 可以使用单个列表或列表列表创建数据框。
# import pandas as pd import pandas as pd # 字符串列表 lst = ['Geeks', 'For', 'Geeks', 'is', 'portal', 'for', 'Geeks'] # 在列表中调用 DataFrame 构造函数 df = pd.DataFrame(lst) print(df)
输出:



从 ndarray/lists 的 dict创建 DataFrame : 要从 narray/list 的 dict 创建 DataFrame,所有的 narray 必须具有相同的长度。如果传递了索引,则长度索引应等于数组的长度。如果没有传递索引,则默认情况下,索引将是 range(n),其中 n 是数组长度。
# Python 代码演示了从 dict narray / lists 默认地址创建 DataFrame。 import pandas as pd # 初始化列表的数据。 data = {'Name':['Tom', 'nick', 'krish', 'jack'], 'Age':[20, 21, 19, 18]} # 创建数据框 df = pd.DataFrame(data) # 打印输出。 print(df)
在 IDE 上运行
输出:


处理行和列
数据框是一种二维数据结构,即数据以表格的方式在行和列中对齐。我们可以对行/列执行基本操作,例如选择、删除、添加和重命名。
列选择: 为了在 Pandas DataFrame 中选择一列,我们可以通过列名调用它们来访问这些列。
# Import pandas package import pandas as pd # 定义包含员工数据的字典 data = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32], 'Address':['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'], 'Qualification':['Msc', 'MA', 'MCA', 'Phd']} # 将字典转换为 DataFrame df = pd.DataFrame(data) # 选择两列 print(df[['Name', 'Qualification']])
在 IDE 上运行
输出:



行选择: Pandas 提供了一种从数据框中检索行的独特方法。 DataFrame.loc[] 方法用于从 Pandas DataFrame 中检索行。也可以通过将整数位置传递给iloc[]函数来选择行。

注意: 我们将 nba.csv 在下面的示例中使用文件。
# importing pandas package import pandas as pd # 从csv文件制作数据框 data = pd.read_csv("nba.csv", index_col ="Name") # 通过 loc 方法检索行 first = data.loc["Avery Bradley"] second = data.loc["R.J. Hunter"] print(first, "\n\n\n", second)
输出:
如输出图像所示,由于两次都只有一个参数,因此返回了两个系列。



索引和选择数据
pandas 中的索引意味着只需从 DataFrame 中选择特定的数据行和列。索引可能意味着选择所有行和一些列,一些行和所有列,或每行和列中的一些。索引也可以称为 子集选择
使用索引运算符索引数据框 []
索引运算符用于引用对象后面的方括号。和索引器 .loc .iloc 使用索引运算符进行选择。在这个索引运算符中要引用 df[]。
选择单个列
为了选择单个列,我们只需将列名放在括号之间
# importing pandas package import pandas as pd # 从csv文件制作数据框 data = pd.read_csv("nba.csv", index_col ="Name") # 通过索引运算符检索列 first = data["Age"] print(first)
输出:



使用 索引 DataFrame .loc[ ]
此函数通过行和列的 标签选择数据。 df.loc 索引器以不同于索引运算符的方式选择数据。它可以选择行或列的子集。它还可以同时选择行和列的子集。
选择单行
为了使用 选择单行,我们在函数 .loc[] 中放置了单行标签。 .loc
# importing pandas package import pandas as pd # 从csv文件制作数据框 data = pd.read_csv("nba.csv", index_col ="Name") # 通过 loc 方法检索行 first = data.loc["Avery Bradley"] second = data.loc["R.J. Hunter"] print(first, "\n\n\n", second)
输出:
如输出图像所示,由于两次都只有一个参数,因此返回了两个系列。



使用 索引 DataFrame .iloc[ ]
此函数允许我们按位置检索行和列。为了做到这一点,我们需要指定我们想要的行的位置,以及我们想要的列的位置。索引器 df.iloc 非常相似, df.loc 但仅使用整数位置进行选择。
选择单行
为了使用 选择单行 .iloc[] ,我们可以将单个整数传递给 .iloc[] 函数。
import pandas as pd # 从csv文件制作数据框 data = pd.read_csv("nba.csv", index_col ="Name") # 通过 iloc 方法检索行 row2 = data.iloc[3] print(row2)
输出:


处理缺失数据
当没有为一个或多个项目或整个单元提供信息时,可能会出现缺失数据。缺少数据是现实生活场景中的一个非常大的问题。缺失数据也可以指熊猫中的 NA(不可用)值。
使用 isnull() and notnull() :
检查缺失值 为了检查 Pandas DataFrame 中的缺失值,我们使用函数 isnull() and notnull() 。这两个函数都有助于检查值是否 NaN 存在。这些函数也可以在 Pandas 系列中使用,以便在系列中查找空值。
# importing pandas as pd import pandas as pd # importing numpy as np import numpy as np # 列表字典 dict = {'First Score':[100, 90, np.nan, 95], 'Second Score': [30, 45, 56, np.nan], 'Third Score':[np.nan, 40, 80, 98]} # 从列表创建数据框 df = pd.DataFrame(dict) # 使用 isnull() 函数 df.isnull()
输出:



使用 fillna() , replace() interpolate() :
填充缺失值为了填充数据集中的空值,我们使用 fillna() , replace() interpolate() 函数这些函数将 NaN 值替换为它们自己的一些值。所有这些功能都有助于在 DataFrame 的数据集中填充空值。Interpolate() 函数基本上用于填充 NA 数据帧中的值,但它使用各种插值技术来填充缺失值,而不是对值进行硬编码。
# importing pandas as pd import pandas as pd # importing numpy as np import numpy as np # 列表字典 dict = {'First Score':[100, 90, np.nan, 95], 'Second Score': [30, 45, 56, np.nan], 'Third Score':[np.nan, 40, 80, 98]} # 从字典创建数据框 df = pd.DataFrame(dict) # 使用 fillna() 填充缺失值 df.fillna(0)
输出:



使用删除缺失值 dropna()
为了从数据框中删除空值,我们使用 dropna() 此功能以不同方式删除具有空值的数据集的行/列。
# importing pandas as pd import pandas as pd # importing numpy as np import numpy as np # 列表字典 dict = {'First Score':[100, 90, np.nan, 95], 'Second Score': [30, np.nan, 45, 56], 'Third Score':[52, 40, 80, 98], 'Fourth Score':[np.nan, np.nan, np.nan, 65]} # 从字典创建数据框 df = pd.DataFrame(dict) df


现在我们删除具有至少一个 Nan 值(Null 值)的行
# importing pandas as pd import pandas as pd # importing numpy as np import numpy as np # 列表字典 dict = {'First Score':[100, 90, np.nan, 95], 'Second Score': [30, np.nan, 45, 56], 'Third Score':[52, 40, 80, 98], 'Fourth Score':[np.nan, np.nan, np.nan, 65]} # 从字典创建数据框 df = pd.DataFrame(dict) # 使用 dropna() 函数 df.dropna()
输出:



遍历行和列
迭代是一个通用术语,用于一个接一个地获取某物的每一项。Pandas DataFrame 由行和列组成,因此,为了迭代数据帧,我们必须像字典一样迭代数据帧。
对行进行迭代:
为了对行进行迭代,我们可以使用三个函数 iteritems() , iterrows() , itertuples() 。这三个函数将有助于对行进行迭代。
# importing pandas as pd import pandas as pd # 列表字典 dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"], 'degree': ["MBA", "BCA", "M.Tech", "MBA"], 'score':[90, 40, 80, 98]} # 从字典创建数据框 df = pd.DataFrame(dict) print(df)


现在我们应用 iterrows() 函数来获取行的每个元素。
# importing pandas as pd import pandas as pd # 列表字典 dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"], 'degree': ["MBA", "BCA", "M.Tech", "MBA"], 'score':[90, 40, 80, 98]} # 从字典创建数据框 df = pd.DataFrame(dict) # 使用 iterrows() 函数遍历行 for i, j in df.iterrows(): print(i, j) print()
输出:



迭代列:
为了迭代列,我们需要创建一个数据框列的列表,然后遍历该列表以提取数据框列。
# importing pandas as pd import pandas as pd # 列表字典 dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"], 'degree': ["MBA", "BCA", "M.Tech", "MBA"], 'score':[90, 40, 80, 98]} # 从字典创建数据框 df = pd.DataFrame(dict) # 使用 iterrows() 函数遍历行 for i, j in df.iterrows(): print(i, j) print()
在 IDE 上运行


现在我们遍历列为了遍历列,我们首先创建一个数据框列的列表,然后遍历列表。
# importing pandas as pd import pandas as pd # 列表字典 dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"], 'degree': ["MBA", "BCA", "M.Tech", "MBA"], 'score':[90, 40, 80, 98]} # 从字典创建数据框 df = pd.DataFrame(dict) print(df)
输出:


数据框方法:

功能 描述
index() 方法返回 DataFrame 的索引(行标签)
insert() 方法在 DataFrame 中插入一列
add() 方法返回数据框和其他元素的添加(二元运算符添加)
sub() 方法返回数据帧和其他元素的减法(二元运算符子)
mul() 方法返回数据帧和其他元素的乘法(二元运算符 mul)
div() 方法返回数据帧和其他元素的浮动除法(二元运算符 truediv)
unique() 方法提取数据框中的唯一值
nunique() 方法返回数据框中唯一值的计数
value_counts() 方法计算每个唯一值在系列中出现的次数
columns() 方法返回 DataFrame 的列标签
axes() 方法返回一个表示 DataFrame 轴的列表
isnull() 方法创建一个布尔系列以提取具有空值的行
notnull() 方法创建一个布尔系列,用于提取具有非空值的行
between() 方法提取列值位于预定义范围之间的行
isin() 方法从预定义集合中存在列值的 DataFrame 中提取行
dtypes() 方法返回具有每列数据类型的 Series。结果的索引是原始 DataFrame 的列
astype() 方法转换系列中的数据类型
values() 方法返回 DataFrame 的 Numpy 表示,即仅返回 DataFrame 中的值,轴标签将被删除
sort_values()- Set1, Set2 方法按传递的列的升序或降序对数据框进行排序
sort_index() 方法根据它们的索引位置或标签而不是它们的值对 DataFrame 中的值进行排序,但有时一个数据帧由两个或多个数据帧组成,因此以后可以使用此方法更改索引
loc[] 方法根据索引标签检索行
iloc[] 方法根据索引位置检索行
ix[] 方法根据索引标签或索引位置检索 DataFrame 行。此方法结合了 .loc[] 和 .iloc[] 方法的最佳特性
rename() 在 DataFrame 上调用方法以更改索引标签或列名的名称
columns() 方法是更改​​列名称的替代属性
drop() 方法用于从 DataFrame 中删除行或列
pop() 方法用于从 DataFrame 中删除行或列
sample() 方法从 DataFrame 中提取行或列的随机样本
nsmallest() 方法拉出列中值最小的行
nlargest() 方法拉出列中具有最大值的行
nlargest() 方法返回一个表示 DataFrame 维度的元组
ndim() 方法返回一个表示轴数/数组维数的“int”。 如果是 Series,则返回 1,否则如果是 DataFrame,则返回 2
dropna() 方法允许用户以不同的方式分析和删除具有 Null 值的行/列
fillna() 方法管理并让用户用他们自己的一些值替换 NaN 值
rank() 可以使用此方法对系列中的值进行排序
query() Method 是另一种基于字符串的语法,用于从 DataFrame 中提取子集
copy() 方法创建一个 pandas 对象的独立副本
duplicated() 方法创建一个布尔系列并使用它来提取具有重复值的行
drop_duplicates() 方法是识别重复行并通过过滤删除它们的替代选项
set_index() 方法使用一个或多个现有列设置 DataFrame 索引(行标签)
reset_index() 方法重置数据框的索引。此方法设置从 0 到数据长度的整数列表作为索引
where() 方法用于检查数据框的一个或多个条件并相应地返回结果。默认情况下,不满足条件的行用 NaN 值填充

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,


关注与私信博主(08)学习更多Python知识与技巧,课件,源码,安装包,还有最新大厂面试资料等等等

咱们下期见。


收藏 等于白嫖,点赞才是真情。

发布于 2022-09-30 14:26