在本文中,我们将讨论用于数据处理的工具Pandas。
如果尚未配置数据可视化的环境,请参考以下文章。
1. 什么是Pandas?
Pandas是用于数据操作和分析的库。
可以将列表或字典转换为表格形式进行处理。

例如,假设有一个包含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数据类型称为数据框。

现在可以根据行或列进行处理。
如果难以理解,可以认为它类似于Excel。
现在让我们看看一些大致的功能。
2. 基本的pandas用法
如上所述,Pandas类似于Excel。
因此,使用Pandas时需要学习的功能与使用Excel时学习的功能相同。
通常,在使用Excel时,最重要的功能是查看数据、排序、复制所需的单元格等。
让我们以这些内容为中心来体验一下Pandas。

数据已附加在下面。大约有11行和5列的数据。你可以使用它,也可以自己创建使用。
1) 导入模块和加载文件(read_excel)
首先将数据和Jupyter Notebook文件放在一起。

然后输入如下代码。代码的解释已在注释中添加。
# 将pandas导入为pd
import pandas as pd
# 导入同一文件夹中的名为workout的Excel,并存入名为df的变量
df = pd.read_excel("./workout.xlsx")
# 调用df变量以确认内容
df通过确认df可以看到已加载的数据。
通常需要使用print(df),但在Jupyter Notebook中,仅输入变量名也能直接查看值。
现在我们来处理这些数据。

2) 查看(head, tail, index, columns)
由于数据量很小,可以显示全部内容,但如果数据量大,就难以一次查看。
在这种情况下,可以通过head、tail函数和index大致查看值。
(1) head
head显示顶部的数据。
点击顶部的[+ 代码]将添加一个输入窗口。

在此窗口中输入下方代码。
# 显示数据的顶部数据(默认5行)
# df为包含数据框的变量(对象)。
df.head()
# 在括号中输入要查看的行数。
df.head(3)如果显示如下输出,则成功。
这样可以查看部分数据。

(2) tail
tail用于查看最后的数据。
默认显示5个值,但在括号中输入数值即可输出指定数量的值。
与head相同。
# 显示最下方的数据
df.tail()
# 在括号中输入所需的行数。
df.tail(3)为了初学者的说明,括号中输入的值称为参数。

(3) index
index用于简单地显示数据的数量和形态。
在想要确认数据的大致数量时很有用。
df.index
3) 排序(sort_values, sort_index, reset_index)
(1) sort_values
sort_values可以按值的升序或降序排序。
可以在存有对象的变量后输入以下形式来轻松排序。
# 变量名.sort_values("列名")
df.sort_values("名称")
如果希望在两个以上列中排序,可以在括号中以列表形式输入列名。
# 如果输入的列表是["数学", "名称"],
# 则先按名称排序,再按数学分数排序。
# 列表中越靠前,排序优先级越高。
df.sort_values(["数学","名称"])
默认情况下,排序为升序。
如果希望按降序排序,则需额外输入一个参数。
# 如果将ascending设为False,则按降序排序。
# 在前面用by=[]明确表示参数的作用。
df.sort_values(["数学","名称"], ascending=False)
df.sort_values(by=["数学","名称"], ascending=False)
顺便一说,排序后,查看原始数据会发现与开始时相同。
这是由于未将排序后的数据重新分配给df所导致的问题。
有两种解决方法。
分配给新变量
添加参数inplace = True
如果添加一个新变量,则如下所示。

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

(2) sort_index
sort_index顾名思义是根据索引排序。输入代码如下。
# 如果分配给新变量
df3 = df.sort_index()
df3
# 如果使用inplace参数
df.sort_index(inplace=True)
df查看输出时,可以看到索引按初始顺序排序。

(3) reset_index
reset_index是重新指定索引。
对数据进行排序后要重新指定索引时,输入的代码如下。
# 根据地球科学分数升序排序,并存入原变量
df.sort_values("地球科学", inplace=True)
# 重新指定索引,丢弃原索引,并存入原变量
df.reset_index(drop=True, inplace=True)
# 查看输出
df可以看到数据根据地球科学分数升序排列后重新指定了索引。
如果希望保留原索引,则删除drop参数即可。

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的行,可以看到输出结果。

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

(2) dropna
dropna用于删除缺少值的行。
通常称为删除缺失值。
我用numpy创建了一个临时的任意缺失值。
以下代码可以一知半解。
大致来说就是将第4行、第3列的值更改为缺失值的代码。

数据中出现NaN表示该值缺失。NaN是Not a Number的缩写。
现在,删除没有值的行。
df.dropna(inplace=True)
df
可以看到没有地球科学成绩的“이서”被删除了。
或者,也可以将NaN值替换为0或其他数字。
在此不涉及该水平。
5) 提取行列(loc, iloc, 简单方法)
使用数据时,可以仅使用指定的行或列。
在这种情况下,使用loc和iloc。
(1) loc
loc是location的缩写。
在loc后输入行和列的范围,如同输入字典的键值。
# df.loc[行索引范围, 列索引范围]
df.loc[0:3,"名称":"国语"]
df需要输入索引和列的真实名称。
当前行的索引是数字,列的索引是中文,输入后可以显示指定范围内的数据。

如果想要显示索引为3的行开始的名称和地球科学列,可以按如下方式输入。
df.loc[3:,["名称","地球科学"]]
df连续的数据使用冒号(:),不连贯的数据使用列表形式。

(2) iloc
iloc是integer location的缩写。
loc与loc功能相同,但行和列的位置用数字表示。
例如,如上所述,如果想要输出索引为3行的姓名和地球科学,则可以按如下方式输入。
df.iloc[2:,[0,2]]
df
注意在loc中行参数为3,而在iloc中行参数为2。

loc则是从索引为3的行开始输出,iloc是跳过第0行、第1行,从第2行开始输出。
(3) 简单方法
变量后面可简单地使用字典形式的方括号[]来查看数据。
如果你想查看0~3行、名称和地球科学列,可以按如下方式输入。
# 在变量后简单地用[]查看数据。
df[0:4][["名称","地球科学"]]
df
现在让我们查看一下名称。
名称所在列的索引为“名称”,可以简单地输入如下内容。
df["名称"]
在使用过程中会发现该方法在尝试修改数据时可能引发错误。
因此,如果想要更改值,建议使用loc或iloc。
6) 条件语句
(1) 单一条件语句
条件语句用于查找符合条件的数据。
认为它与Excel的过滤功能相同即可。
例如,若要查找地球科学成绩超过90分的学生,可以如下输入。
df["地球科学"] > 90这样输入时,会遍历表中的所有单元格并返回条件的True或False值。

将其放入数据框中,Pandas会输出True的行。
# 使用loc条件语句(推荐)
df.loc[df["地球科学"]>90]
# 使用更简单的方法
df[df["地球科学"]>90]无论哪种方式,输出结果都没有太大区别,选择你喜欢的方式即可。
因为我们目标不是Pandas,首先尝试一下发生错误时再换方法也不迟。


(2) 多重条件语句
可以给出多个条件。
df.loc[(df["地球科学"]>90) & (df["英语"]>90)]要找到同时满足两个条件的值,将两个条件括在一起并在中间插入&符号。
插入and会产生错误。

若要找到满足任意一个条件的值,输入 | 即可。
同样插入or会产生错误。
df.loc[(df["地球科学"]>90) | (df["英语"]>90)]
可以在条件符合的值中仅查看所需的列。
df.loc[(df["地球科学"]>90) | (df["英语"]>90), ["名称","英语" "地球科学"]]
7) 其他有用功能(columns, unique)
在进行数据可视化时,有时需要将数据的性质作为图例表示。
在这种情况下,可用columns查看列的索引,或使用unique函数返回唯一值。
(1) columns
用于查看数据的列的索引。
df.columns重新调用数据后,再次查看索引时,可以看到如下输出。

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

(2) unique
该函数去除数据的重复值并返回唯一值。
先查看地球科学的成绩。

输出地球科学成绩的唯一值。
df["地球科学"].unique()查看代码输出结果,可以看到相同99分的学生实际上有两个,但显示中只有一个。

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

3. 结束语
在本文中,我们了解了使用Pandas处理数据的方法。
只涉及基础内容,可能感觉难度较低。
我们第一个目标不是数据预处理,而是可视化结构化数据。
接下来的文章将尝试解决一些简单的Pandas练习题。
댓글을 불러오는 중...