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

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

aFrame是具有标记轴(行和列)的二维大小可变、可能异构的表格数据结构。数据框是一种二维数据结构,即数据以表格的方式在行和列中对齐。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)

输出:

image.png

从 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 上运行

输出:

image.png

处理行和列

数据框是一种二维数据结构,即数据以表格的方式在行和列中对齐。我们可以对行/列执行基本操作,例如选择、删除、添加和重命名。

列选择: 为了在 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 上运行

输出:

image.png


行选择:  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)

输出:

如输出图像所示,由于两次都只有一个参数,因此返回了两个系列。

image.png

索引和选择数据

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)

输出:

image.png


使用 索引 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)

输出:

如输出图像所示,由于两次都只有一个参数,因此返回了两个系列。


image.png

使用 索引 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)

输出:

image.png

处理缺失数据

当没有为一个或多个项目或整个单元提供信息时,可能会出现缺失数据。缺少数据是现实生活场景中的一个非常大的问题。缺失数据也可以指熊猫中的 NA(不可用)值。

使用isnull()andnotnull() :

检查缺失值 为了检查 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()

输出:

image.png

使用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)

输出:

image.png


使用删除缺失值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

image.png

现在我们删除具有至少一个 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()

输出:

image.png

遍历行和列

迭代是一个通用术语,用于一个接一个地获取某物的每一项。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)

image.png

现在我们应用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()

输出:

image.png

迭代列:

为了迭代列,我们需要创建一个数据框列的列表,然后遍历该列表以提取数据框列。

# 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 上运行

image.png

现在我们遍历列为了遍历列,我们首先创建一个数据框列的列表,然后遍历列表。

# 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)

输出:

image.png

数据框方法:

image.png

image.png

image.png

image.png

目录
相关文章
|
4月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
388 0
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
580 0
|
5月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
874 19
|
4月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
206 1
|
5月前
|
数据采集 存储 JSON
使用Python获取1688商品详情的教程
本教程介绍如何使用Python爬取1688商品详情信息,涵盖环境配置、代码编写、数据处理及合法合规注意事项,助你快速掌握商品数据抓取与保存技巧。
|
6月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
540 0
|
6月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
415 0
|
6月前
|
数据采集 索引 Python
Python Slice函数使用教程 - 详解与示例 | Python切片操作指南
Python中的`slice()`函数用于创建切片对象,以便对序列(如列表、字符串、元组)进行高效切片操作。它支持指定起始索引、结束索引和步长,提升代码可读性和灵活性。
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
380 1
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
383 0