파이썬数据可视化入门2 - 处理Pandas

힘센캥거루
2023년 11월 10일(수정됨)
6
python

在本文中,我们将讨论用于数据处理的工具Pandas

如果尚未配置数据可视化的环境,请参考以下文章

1. 什么是Pandas?

Pandas是用于数据操作和分析的库。

可以将列表或字典转换为表格形式进行处理

파이썬数据可视化入门2 - 处理Pandas-1

例如,假设有一个包含3个列表的列表,如下所示。

lstInLst = [[1,2,3],[4,5,6],[7,8,9]]

如果仅更改此资料的表示方法,就会得到如下形式。乍一看有点像表格

lstInLst = [[1,2,3],
    [4,5,6],
    [7,8,9]]

现在将这些数据转换为Pandas...

import pandas as pd
df = pd.DataFrame(lstInLst)
print(df)

如下所示成为表的形式。

这种Pandas数据类型称为数据框

파이썬数据可视化入门2 - 处理Pandas-2

现在可以根据行或列进行处理

如果难以理解,可以认为它类似于Excel

现在让我们看看一些大致的功能。

2. 基本的pandas用法

如上所述,Pandas类似于Excel

因此,使用Pandas时需要学习的功能与使用Excel时学习的功能相同

通常,在使用Excel时,最重要的功能是查看数据、排序、复制所需的单元格等。

让我们以这些内容为中心来体验一下Pandas

파이썬数据可视化入门2 - 处理Pandas-3

数据已附加在下面。大约有11行和5列的数据。你可以使用它,也可以自己创建使用。

1) 导入模块和加载文件(read_excel)

首先将数据和Jupyter Notebook文件放在一起

파이썬数据可视化入门2 - 处理Pandas-4

然后输入如下代码。代码的解释已在注释中添加。

# 将pandas导入为pd
import pandas as pd

# 导入同一文件夹中的名为workout的Excel,并存入名为df的变量
df = pd.read_excel("./workout.xlsx")

# 调用df变量以确认内容
df

通过确认df可以看到已加载的数据

通常需要使用print(df),但在Jupyter Notebook中,仅输入变量名也能直接查看值。

现在我们来处理这些数据。

파이썬数据可视化入门2 - 处理Pandas-5

2) 查看(head, tail, index, columns)

由于数据量很小,可以显示全部内容,但如果数据量大,就难以一次查看。

在这种情况下,可以通过head、tail函数和index大致查看值。

(1) head

head显示顶部的数据

点击顶部的[+ 代码]将添加一个输入窗口。

파이썬数据可视化入门2 - 处理Pandas-6

在此窗口中输入下方代码。

# 显示数据的顶部数据(默认5行)
# df为包含数据框的变量(对象)。
df.head()

# 在括号中输入要查看的行数。
df.head(3)

如果显示如下输出,则成功。

这样可以查看部分数据。

파이썬数据可视化入门2 - 处理Pandas-7

(2) tail

tail用于查看最后的数据

默认显示5个值,但在括号中输入数值即可输出指定数量的值。

与head相同。

# 显示最下方的数据
df.tail()

# 在括号中输入所需的行数。
df.tail(3)

为了初学者的说明,括号中输入的值称为参数

파이썬数据可视化入门2 - 处理Pandas-8

(3) index

index用于简单地显示数据的数量和形态。

在想要确认数据的大致数量时很有用。

df.index
파이썬数据可视化入门2 - 处理Pandas-9

3) 排序(sort_values, sort_index, reset_index)

(1) sort_values

sort_values可以按值的升序或降序排序。

可以在存有对象的变量后输入以下形式来轻松排序。

# 变量名.sort_values("列名")
df.sort_values("名称")
파이썬数据可视化入门2 - 处理Pandas-10

如果希望在两个以上列中排序,可以在括号中以列表形式输入列名

# 如果输入的列表是["数学", "名称"],
# 则先按名称排序,再按数学分数排序。
# 列表中越靠前,排序优先级越高。
df.sort_values(["数学","名称"])
파이썬数据可视化入门2 - 处理Pandas-11

默认情况下,排序为升序。

如果希望按降序排序,则需额外输入一个参数

# 如果将ascending设为False,则按降序排序。
# 在前面用by=[]明确表示参数的作用。
df.sort_values(["数学","名称"], ascending=False)
df.sort_values(by=["数学","名称"], ascending=False)
파이썬数据可视化入门2 - 处理Pandas-12

顺便一说,排序后,查看原始数据会发现与开始时相同

这是由于未将排序后的数据重新分配给df所导致的问题。

有两种解决方法。

  • 分配给新变量

  • 添加参数inplace = True

如果添加一个新变量,则如下所示。

파이썬数据可视化入门2 - 处理Pandas-13

如果添加参数inplace=True,则会覆盖原有的变量

파이썬数据可视化入门2 - 处理Pandas-14

(2) sort_index

sort_index顾名思义是根据索引排序。输入代码如下。

# 如果分配给新变量
df3 = df.sort_index()
df3

# 如果使用inplace参数
df.sort_index(inplace=True)
df

查看输出时,可以看到索引按初始顺序排序。

파이썬数据可视化入门2 - 处理Pandas-15

(3) reset_index

reset_index是重新指定索引。

对数据进行排序后要重新指定索引时,输入的代码如下。

# 根据地球科学分数升序排序,并存入原变量
df.sort_values("地球科学", inplace=True)

# 重新指定索引,丢弃原索引,并存入原变量
df.reset_index(drop=True, inplace=True)

# 查看输出
df

可以看到数据根据地球科学分数升序排列后重新指定了索引

如果希望保留原索引,则删除drop参数即可。

파이썬数据可视化入门2 - 处理Pandas-16

4) 删除(drop, dropna)

(1) drop

此函数用于删除指定的行或列

接受index 和 columns为参数

虽然可以使用axis等多种方法删除,但使用简单且舒适的就好

#drop接受各种参数,但用index和columns最方便。
# 删除第2行
df.drop(index=1, inplace=True)
df

# 删除数学、英语列
df.drop(columns=["数学","英语"], inplace=True)
df

首先,删除索引为1的行,可以看到输出结果。

파이썬数据可视化入门2 - 处理Pandas-17

接下来,删除数学和英语列,需要将参数设置为columns,并以列表形式输入值

파이썬数据可视化入门2 - 处理Pandas-18

(2) dropna

dropna用于删除缺少值的行

通常称为删除缺失值

我用numpy创建了一个临时的任意缺失值。

以下代码可以一知半解

大致来说就是将第4行、第3列的值更改为缺失值的代码

파이썬数据可视化入门2 - 处理Pandas-19

数据中出现NaN表示该值缺失。NaN是Not a Number的缩写

现在,删除没有值的行。

df.dropna(inplace=True)
df
파이썬数据可视化入门2 - 处理Pandas-20

可以看到没有地球科学成绩的“이서”被删除了。

或者,也可以将NaN值替换为0或其他数字。

在此不涉及该水平。

5) 提取行列(loc, iloc, 简单方法)

使用数据时,可以仅使用指定的行或列

在这种情况下,使用loc和iloc

(1) loc

loc是location的缩写

在loc后输入行和列的范围,如同输入字典的键值

# df.loc[行索引范围, 列索引范围]
df.loc[0:3,"名称":"国语"]
df

需要输入索引和列的真实名称

当前行的索引是数字,列的索引是中文,输入后可以显示指定范围内的数据。

파이썬数据可视化入门2 - 处理Pandas-21

如果想要显示索引为3的行开始的名称和地球科学列,可以按如下方式输入。

df.loc[3:,["名称","地球科学"]]
df

连续的数据使用冒号(:)不连贯的数据使用列表形式

파이썬数据可视化入门2 - 处理Pandas-22

(2) iloc

iloc是integer location的缩写

loc与loc功能相同,但行和列的位置用数字表示。

例如,如上所述,如果想要输出索引为3行的姓名和地球科学,则可以按如下方式输入。

df.iloc[2:,[0,2]]
df
파이썬数据可视化入门2 - 处理Pandas-23

注意在loc中行参数为3,而在iloc中行参数为2

파이썬数据可视化入门2 - 处理Pandas-24

loc则是从索引为3的行开始输出,iloc是跳过第0行、第1行,从第2行开始输出

(3) 简单方法

变量后面可简单地使用字典形式的方括号[]来查看数据

如果你想查看0~3行、名称和地球科学列,可以按如下方式输入。

# 在变量后简单地用[]查看数据。
df[0:4][["名称","地球科学"]]
df
파이썬数据可视化入门2 - 处理Pandas-25

现在让我们查看一下名称。

名称所在列的索引为“名称”,可以简单地输入如下内容。

df["名称"]
파이썬数据可视化入门2 - 处理Pandas-26

在使用过程中会发现该方法在尝试修改数据时可能引发错误

因此,如果想要更改值,建议使用loc或iloc。

6) 条件语句

(1) 单一条件语句

条件语句用于查找符合条件的数据。

认为它与Excel的过滤功能相同即可。

例如,若要查找地球科学成绩超过90分的学生,可以如下输入。

df["地球科学"] > 90

这样输入时,会遍历表中的所有单元格并返回条件的True或False值

파이썬数据可视化入门2 - 处理Pandas-27

将其放入数据框中,Pandas会输出True的行。

# 使用loc条件语句(推荐)
df.loc[df["地球科学"]>90]

# 使用更简单的方法
df[df["地球科学"]>90]

无论哪种方式,输出结果都没有太大区别,选择你喜欢的方式即可。

因为我们目标不是Pandas,首先尝试一下发生错误时再换方法也不迟。

파이썬数据可视化入门2 - 处理Pandas-28파이썬数据可视化入门2 - 处理Pandas-29

(2) 多重条件语句

可以给出多个条件。

df.loc[(df["地球科学"]>90) & (df["英语"]>90)]

要找到同时满足两个条件的值将两个条件括在一起并在中间插入&符号

插入and会产生错误。

파이썬数据可视化入门2 - 处理Pandas-30

若要找到满足任意一个条件的值输入 | 即可。

同样插入or会产生错误。

df.loc[(df["地球科学"]>90) | (df["英语"]>90)]
파이썬数据可视化入门2 - 处理Pandas-31

可以在条件符合的值中仅查看所需的列

df.loc[(df["地球科学"]>90) | (df["英语"]>90), ["名称","英语" "地球科学"]]
파이썬数据可视化入门2 - 处理Pandas-32

7) 其他有用功能(columns, unique)

在进行数据可视化时,有时需要将数据的性质作为图例表示

在这种情况下,可用columns查看列的索引,或使用unique函数返回唯一值。

(1) columns

用于查看数据的列的索引。

df.columns

重新调用数据后,再次查看索引时,可以看到如下输出。

파이썬数据可视化入门2 - 处理Pandas-33

如果要绘制国文、数学、英语、地球科学的成绩图,无需手动输入图例,可以很方便地指定

파이썬数据可视化入门2 - 处理Pandas-34

(2) unique

该函数去除数据的重复值并返回唯一值

先查看地球科学的成绩

파이썬数据可视化入门2 - 处理Pandas-35

输出地球科学成绩的唯一值。

df["地球科学"].unique()

查看代码输出结果,可以看到相同99分的学生实际上有两个,但显示中只有一个

파이썬数据可视化入门2 - 处理Pandas-36

以数组形式返回,可以逐一拿出来查看值。

파이썬数据可视化入门2 - 处理Pandas-37

3. 结束语

在本文中,我们了解了使用Pandas处理数据的方法

只涉及基础内容,可能感觉难度较低。

我们第一个目标不是数据预处理,而是可视化结构化数据

接下来的文章将尝试解决一些简单的Pandas练习题

댓글을 불러오는 중...