人生必须的知识就是引人向光明方面的明灯。这篇文章主要讲述pandas基础(part4)--排序/分组/合并相关的知识,希望能为你提供帮助。
学习笔记,这个笔记以例子为主。
开发工具:Spyder
文章目录
- ??pandas排序??
- ??按行标签进行排序??
- ??按列标签进行排序??
- ??按某列值排序??
- ??举个例子??
- ??pandas分组??
- ??将数据拆分成组??
- ??迭代遍历分组??
- ??获得子分组的细节??
- ??分组聚合??
- ??合并??
- ??合并两个DataFrame??
- ??使用how参数合并DataFrame??
按行标签进行排序
【pandas基础(part4)--排序/分组/合并】使用?
?sort_index()?
?方法可以按照行/列标签对DataFrame进行排序。默认情况下,按照升序对行标签进行排序。- 语法
import pandas as pd
import numpy as np
# 按照行标进行排序
已排序序列 = 未排序序列.sort_index()
# 控制排序顺序(降序)
已排序序列 = 未排序序列.sort_index(ascending=False)
按列标签进行排序
若设置sort_index()的axis参数值为1,则会按照列标签进行排序。
- 语法
import pandas as pd
import numpy as np
# 按照列标签进行排序
已排序序列 = 未排序序列.sort_index(axis = 1)
按某列值排序
像索引排序一样,sort_values()是按值排序的方法。该函数接受一个by参数,该参数的参数值为DataFrame的列名。
- 语法
已排序序列 = 未排序序列.sort_values(by=列名)
举个例子
代码:
import pandas as pd
data = https://www.songbingjia.com/android/name:[Ada, Tom,Black, Jack, Lee],
age:[9, 19, 12, 15, 30],
weight:[8, 4, 5, 6, 10],
hight:[20, 35, 30, 33, 40]
df = pd.DataFrame(data,
index = [a1, a2, a3, a4, a5])
#按行降序排序
s01 = df.sort_index(ascending=False)
print(s01)
print(-*20)
#按列降序排序
s02 = df.sort_index(axis = 1, ascending=False)
print(s02)
print(-*20)
#按weight列升序排序
s03 = df.sort_values(by = weight)
print(s03)
结果:
agehightnameweight
a53040Lee10
a41533Jack6
a31230Black5
a21935Tom4
a1920Ada8
--------------------
weightnamehightage
a18Ada209
a24Tom3519
a35Black3012
a46Jack3315
a510Lee4030
--------------------
agehightnameweight
a21935Tom4
a31230Black5
a41533Jack6
a1920Ada8
a53040Lee10
pandas分组在许多情况下,我们需要将数据分为多个集合,并在每个子集上应用一些函数,来实现我们的需求。
将数据拆分成组
- 语法
# 将df数据框按照age字段分组
print(df.groupby(age))
# 查看分组结果
print(df.groupby(age).groups)
- 例子
import pandas as pd
data = https://www.songbingjia.com/android/name:[Ada, Tom,Black, Jack, Lee,
Yellow, Blue, Peter, Green, Trump],
age:[9, 9, 10, 10, 10, 10, 8, 9, 7, 8],
weight:[8, 4, 5, 6, 10, 10, 4, 5, 4, 8]
df = pd.DataFrame(data,
index = [a1, a2, a3, a4, a5,
a6, a7, a8, a9, a10])
print(df.groupby(age))
print(df.groupby(age).groups)
结果:
< pandas.core.groupby.DataFrameGroupBy object at 0x000000D589A294A8>
7: Index([a9], dtype=object), 8: Index([a7, a10], dtype=object), 9: Index([a1, a2, a8], dtype=object), 10: Index([a3, a4, a5, a6], dtype=object)
迭代遍历分组
df.groupby()方法可以返回可迭代对象,可以使用for循环遍历。
- 例子
import pandas as pd
data = https://www.songbingjia.com/android/name:[Ada, Tom,Black, Jack, Lee,
Yellow, Blue, Peter, Green, Trump],
age:[9, 9, 10, 10, 10, 10, 8, 9, 7, 8],
weight:[8, 4, 5, 6, 10, 10, 4, 5, 4, 8]
df = pd.DataFrame(data,
index = [a1, a2, a3, a4, a5,
a6, a7, a8, a9, a10])
for age, i in df.groupby(age):
print(age)
print(i)
print(-*10)
结果:
7
agenameweight
a97Green4
----------
8
agenameweight
a78Blue4
a108Trump8
----------
9
agenameweight
a19Ada8
a29Tom4
a89Peter5
----------
10
agenameweight
a310Black5
a410Jack6
a510Lee10
a610Yellow10
----------
获得子分组的细节
语法就不写了,看下面的例子和注释,应该就能懂。
- 例子
import pandas as pd
data = https://www.songbingjia.com/android/name:[Ada, Tom,Black, Jack, Lee,
Yellow, Blue, Peter, Green, Trump],
age:[9, 9, 10, 10, 10, 10, 8, 9, 7, 8],
weight:[8, 4, 5, 6, 10, 10, 4, 5, 4, 8]
df = pd.DataFrame(data,
index = [a1, a2, a3, a4, a5,
a6, a7, a8, a9, a10])
# 将df数据框按照age字段分组
grouped = df.groupby(age)
#查看age=8的分组的细节
print(grouped.get_group(8))
结果:
agenameweight
a78Blue4
a108Trump8
分组聚合
聚合函数为每个分组返回聚合值。当创建了分组(groupby)对象,就可以对每个分组数据执行求和、求标准差等操作。
推荐阅读
- 防火墙基础之IPSec VPN实验详解#导入Word文档图片#
- MySQL数据库(21)(连接查询 join)
- kubernetes Pod的详细总结
- 《乌合之众》读书笔记(part1)--对群体而言,最不公正的也许却是最好的
- 我常用的cmd命令
- 走近分形与混沌(part16)--三与自组织
- centos7上查看kafka-常见命令
- 《统计学(从数据到结论》学习笔记(part2)--总体是人们所关心的所有个体的集合)
- R语言与虚拟变量模型