在数据分析的过程中,常常需要把多张表格进行合并,或者按照某些规则进行分组统计。Pandas是Python中一个非常强大的数据处理库,其中的JOIN和group by函数能够帮助我们轻松地完
成这些任务。本教程将详细介绍如何使用这两个函数,让你在数据分析的道路上更加游刃有余!
为什么要搞group by
JOIN操作允许你将多个数据表按照某个共同的字段进行连接,创建一个更完整、更有洞察力的数据集。这样做的好处有:
- 数据整合:通过JOIN操作,你可以将多个相关的数据源合并在一起,形成一个更全面的数据集。例如,你可以将客户信息表和销售记录表JOIN在一起,从而获取每个客户的购买历史和偏好。
- 数据拓展:JOIN操作可以通过连接多个表来增加数据的维度。通过关联不同的字段,你可以丰富数据集并探索更多的关联关系,提供更全面的洞察和决策支持。
其次,GROUP BY操作允许你根据一个或多个字段对数据进行分组,并对每个组应用聚合函数。这带来了以下好处:
- 汇总统计:通过GROUP BY操作,你可以对数据进行分组,并计算每个组内的统计指标,如平均值、总和、计数等。这可以帮助你发现数据的整体趋势和模式,并快速洞察不同组之间的差异。
- 数据探索:GROUP BY操作使你能够以更细粒度的方式分析数据,并深入了解不同组的特征。通过分组聚合,你可以揭示隐藏在数据中的细微变化、异常值或关联关系,从而发现更有价值的见解
JOIN函数的使用方式 🤝
JOIN函数是将两张表格按照某些关键词进行合并的函数,Pandas中提供了四种JOIN方式:
INNER JOIN 👥
内连接是对两张表格进行交集操作,只有两张表格中关键词完全匹配的行才会被保留。使用Pandas的JOIN函数进行INNER JOIN的代码如下:
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],'value2': [5, 6, 7, 8]})
result = df1.join(df2, how='inner', on='key')
print(result)
输出结果:
key value1 value2
1 B 2 5
3 D 4 6
OUTER JOIN 🤝
外连接是对两张表格进行合并,并且保留所有行,如果某些行不匹配,则用NaN填充。使用Pandas的JOIN函数进行OUTER JOIN的代码如下:
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],'value2': [5, 6, 7, 8]})
result = df1.join(df2, how='outer', on='key')
print(result)
输出结果:
key value1 value2
0 A 1.0 NaN
1 B 2.0 5.0
2 C 3.0 NaN
3 D 4.0 6.0
4 E NaN 7.0
5 F NaN 8.0
LEFT JOIN 👈
左连接是以左边的表格为基础,将右边的表格按照关键词进行合并,并保留所有行。如果右边的表格中某些行不匹配,则用NaN填充。使用Pandas的JOIN函数进行LEFT JOIN的代码如下:
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],'value2': [5, 6, 7, 8]})
result = df1.join(df2, how='left', on='key')
print(result)
输出结果:
key value1 value2
0 A 1 NaN
1 B 2 5.0
2 C 3 NaN
3 D 4 6.0
RIGHT JOIN 👉
右连接是以右边的表格为基础,将左边的表格按照关键词进行合并,并保留所有行。如果左边的表格中某些行不匹配,则用NaN填充。使用Pandas的JOIN函数进行RIGHT JOIN的代码如下:
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],'value2': [5, 6, 7, 8]})
result = df1.join(df2, how='right', on='key')
print(result)
输出结果:
key value1 value2
0 B 2.0 5
1 D 4.0 6
2 E NaN 7
3 F NaN 8
group by函数的使用方式 🧑🤝🧑
group by函数是按照某些规则对表格进行分组并统计的函数,Pandas中提供了非常丰富的group by函数,包括sum、count、mean等等。使用Pandas的group by函数进行分组统计的代码如下:
df = pd.DataFrame({'key1': ['A', 'A', 'B', 'B', 'A'],'key2': ['C', 'D', 'C', 'D', 'C'],'value1': [1, 2, 3, 4, 5],'value2': [6, 7, 8, 9, 10]})
result = df.groupby('key1').sum()
print(result)
输出结果:
value1 value2
key1
A 8 23
B 7 17
其中,'column_name'是你要按照哪一列进行分组统计的列名。如果你要进行多列分组统计,可以使用一个列表来传递多个列名:
df = pd.DataFrame({'key1': ['A', 'A', 'B', 'B', 'A'],'key2': ['C', 'D', 'C', 'D', 'C'],'value1': [1, 2, 3, 4, 5],'value2': [6, 7, 8, 9, 10]})
result = df.groupby(['key1', 'key2']).mean()
print(result)
输出结果:
value1 value2
key1 key2
A C 3.0 8.0D 2.0 7.0
B C 3.0 8.0D 4.0 9.0
结束语 🎉
以上就是Python Pandas的两表JOIN和group by教程的全部内容。希望这个教程能够帮助你更好地掌握Pandas中的这两个函数,并在数据分析中发挥更大的作用!