DataFrame的遍历、排序、去重与分组
最后更新时间:
文章总字数:
预计阅读时间:
一.遍历
1.1 series遍历
1 |
|
结果:
1 |
|
可见,遍历series会直接拿到其中的值。
1.2 DataFrame遍历
1.2.1 直接遍历
1 |
|
结果:
1 |
|
可见直接遍历DataFrame时只会得到列标签,无法得到数据
那怎么才能得到其中的数据呢?
1.2.2 遍历行
itertuples()
方法用于遍历 DataFrame 的行,返回一个包含行数据的命名元组。
1 |
|
结果:
1 |
|
1.2.3 遍历列
items()
方法用于遍历 DataFrame 的列,返回一个包含列名和列数据的迭代器。
1 |
|
结果:
1 |
|
1.2.4 使用属性遍历
loc 和 iloc 方法可以用于按索引或位置遍历 DataFrame 的行和列。
1 |
|
结果:
1 |
|
1 |
|
结果:
1 |
|
二.排序
2.1 sort_index
sort_index
方法用于对 DataFrame 或 Series 的索引进行排序。
1 |
|
参数:
axis:指定要排序的轴。默认为 0,表示按行索引排序。如果设置为 1,将按列索引排序。
ascending:布尔值,指定是升序排序(True)还是降序排序(False)。
inplace:布尔值,指定是否在原地修改数据。如果为 True,则会修改原始数据;如果为 False,则返回一个新的排序后的对象。
1 |
|
结果:
1 |
|
2.2 sort_values
sort_values
方法用于根据一个或多个列的值对 DataFrame 进行排序。
1 |
|
参数:
by:列的标签或列的标签列表。指定要排序的列,加[]可以添加多个,按级别依次排序。
axis:指定沿着哪个轴排序。默认为 0,表示按行排序。如果设置为 1,将按列排序。
ascending:布尔值或布尔值列表,指定是升序排序(True)还是降序排序(False)。可以为每个列指定不同的排序方向。
inplace:布尔值,指定是否在原地修改数据。如果为 True,则会修改原始数据;如果为 False,则返回一个新的排序后的对象。
kind:排序算法。默认为 quicksort,也可以选择 mergesort (归并排序) 或 heapsort (堆排序)。
na_position:指定缺失值(NaN)的位置。可以是 first 或 last。
1 |
|
结果:
1 |
|
三.去重
drop_duplicates
方法用于删除 DataFrame 或 Series 中的重复行或元素。
1 |
|
参数:
subset:与 by 类似,但用于指定列的子集。
keep :指定如何处理重复项。可以是:
first :保留第一个出现的重复项(默认值)。
last :保留最后一个出现的重复项。
False :删除所有重复项。
inplace:布尔值,指定是否在原地修改数据。如果为 True,则会修改原始数据;如果为 False,则返回一个新的删除重复项后的对象。
1 |
|
结果:
1 |
|
1 |
|
结果:
1 |
|
四.分组
将数据集按照某个列(或多个列)的值分组,期间一列或一行相同的值归为一组。
1 |
|
参数:
by :用于分组的列名或列名列表。
axis :指定沿着哪个轴进行分组。默认为 0,表示按行分组。
level :用于分组的 MultiIndex 的级别。
as_index :布尔值,指定分组后索引是否保留。如果为 True,则分组列将成为结果的索引;如果为 False,则返回一个列包含分组信息的 DataFrame。
sort :布尔值,指定在分组操作中是否对数据进行排序。默认为 True。
group_keys :布尔值,指定是否在结果中添加组键。
squeeze :布尔值,如果为 True,并且分组结果返回一个元素,则返回该元素而不是单列 DataFrame。
1 |
|
结果:
1 |
|
1 |
|
结果:
1 |
|
用transform把计算后的数据添加到原来的DataFrame中
1 |
|
结果:
1 |
|
4.2 filter
根据定义的条件过滤数据并返回一个新的数据集。
1 |
|
结果:
1 |
|