0、前言:因为之前自己在学习pandas的过程中就简单做了下笔记,发现在用的时候还是会比较乏力,很多东西容易忘,所以我就决定结合之前笔记的内容,按照使用pandas的习惯,把知识点梳理一下,方便之后查找和记忆。
1、说明pandas中的Series和Dataframe数据的区别:
- pandas中series数据:series数据是一维数组,它有对应的索引(index)和数据(data)两部分组成,在初始化的时候可以不传index,只传data进去,注意不论是index还是data都是通过列表传入的数据,index默认是从0开始,你也可以自己传了index列表,index列表中不一定是数字,也可以是字符串。
- 一般使用pandas就直接使用DataFrame,因为一维数组也可以用其表示,且一维的DataFrame可以转化为
- pandas中的dataframe数据:dataframe数据是二维数组,它有对应的行索引(index)、列索引(columns)、二维数组的数据(data),这些数据都是通过列表传入,行索引和列索引不一定是数字,也可以是字符串。
注意:在DataFrame中有很多属性,其中比较有用的是通过(.values)查看所有值,通过(.columns)查看所有列名,通过(.index)查看所有行名,通过(.shape)查看行数和列数;在DataFrame中也有很多有用的函数,比如通过(.info())查看详细信息。求每一列的非空值、每一列的最大值、每一列的平均数、每一列的方差等等。
- Series数据和DataFrame数据之间的相互转换
注意:DataFrame数据转series只需要直接用loc或者iloc抽取其中的行和列即可,在提取的时候不要给索引加([ ]),可以参考下面的数据抽取!
2、对Series数据的增删改查:
-
查:
-
增:
- 增加后变为新Series对象
- 在原来的Series对象上增加(★★★★★)
- 增加后变为新Series对象
-
删:使用drop函数,注意其中传入的第一个参数是要删除的数据的索引的列表,第二个数据要记得把inplace设置为True,否则不会修改源数据。
-
改:改其实就是在查的基础上完成的。
3、对DataFrame数据,通过loc方法进行数据抽取:这种方法就是通过行索引和列索引来抽取数据,如果涉及区间抽取数据,结果是左闭右闭。
-
提取一行数据:因为一行是一维的,所以提取之后可以是DataFrame数据也可以是Series数据,区别就是行索引加不加([ ])
-
提取一列数据:因为一列是一维的,所以提取之后可以是DataFrame数据也可以是Series数据,区别就是列索引加不加([ ])
-
提取一个指定行号和列号的数值:一个([ ])都不加是得到的是值,加一个得到的是Series数据,加两个,得到的是DataFrame数据
-
提取多行多列数据:分为提取行区间数据,列区间数据和提取指定行,指定列数据两种。
4、对DataFrame数据,通过iloc方法进行数据抽取:这种方法就是通过行索引号和列索引号来抽取数据,索引是从0开始的,如果涉及区间提取,结果是左闭右开。
-
提取一行数据:因为一行是一维的,所以提取之后可以是DataFrame数据也可以是Series数据,区别就是行索引加不加([ ]),具体可以参考上面loc抽取数据的举例。
-
提取一列数据:因为一列是一维的,所以提取之后可以是DataFrame数据也可以是Series数据,区别就是列索引加不加([ ]),具体可以参考上面loc抽取数据的举例。
-
提取一个指定行号和列号的数值:一个([ ])都不加是得到的是值,加一个得到的是Series数据,加两个,得到的是DataFrame数据,具体可以参考上面loc抽取数据的举例。
-
提取多行多列数据:分为提取行区间数据,列区间数据和提取指定行,指定列数据两种,具体可以参考上面loc抽取数据的举例。
5、对DataFrame数据的增删改查:
-
查
对DataFrame数据进行查找,本质就是进行数据抽取,方法可以参考上面的3和4,通过loc和iloc即可。 -
增:可以用iloc来增加,但是不能用loc增加,会报错。
- 增加列数据:用iloc可以增加,用直接索引的的方法也可以增加,建议用iloc,因为iloc也可用来增加行数据。
- 增加行数据:只能用iloc增加行数据,且增加行数据的时候,iloc中直接传新的行索引即可。
- 总结,给DataFrame增加数据可以用loc方法,但是loc只能将数据增加在末尾,如果要想在指定位置插入,就要用其他方法了,要插入列数据相对简单,用insert函数即可,要插入行数据,相对就比较复杂了,需要用切片之后连接的方法来做。
- 增加列数据:用iloc可以增加,用直接索引的的方法也可以增加,建议用iloc,因为iloc也可用来增加行数据。
-
删:用drop函数,删列和删行都有两种方法,选择哪一种都要记得inplace设置为True,否则不会修改源数据。
- 删除列数据:有两种方式一种是通过drop中的参数(labels标签搭配axis=1)表示从列标签中找对应标签删除,一种是通过columns参数直接输入对应的列索引来删除。
- 删除行数据:
- 删除列数据:有两种方式一种是通过drop中的参数(labels标签搭配axis=1)表示从列标签中找对应标签删除,一种是通过columns参数直接输入对应的列索引来删除。
-
改
-
修改列索引:方法就是调用rename函数,其中输入参数columns是个字典,其中‘键’表示原来的列索引名称,’值‘表示要替换的列索引名称。
-
修改行索引:方法就是调用rename函数,其中输入参数index是个字典,其中‘键’表示原来的列索引名称,’值‘表示要替换的列索引名称。
-
修改列数据:本质是通过直接赋值的方法,重新给对应列赋值,通过iloc和loc都可以,举例如下:
df.loc[:, ‘语文’] = [115, 108, 112, 118, 115] -
修改行数据:本质是通过直接赋值的方法,重新给对应行赋值,通过iloc和loc都可以,举例如下:
df.loc[‘张飞’] = [120, 115, 109, 105] -
修改具体值:
df.iloc[0, 0] = 115
df.loc[‘张飞’, ‘语文’] = 115
-