Python Pandas数据处理教程之合并与拼接
本教程将介绍Python Pandas库中的合并与拼接方法。在实际数据处理中,数据通常分散在多个表格或文件中,需要进行合并与拼接,以实现数据分析和统计处理的目的。Pandas库提供了多种方法来处理不同类型的数据,例如:merge(), join(), concat()等。
准备数据
在学习Pandas的合并与拼接方法之前,我们需要先准备一些数据。我们可以使用Pandas库中的read_csv()函数读取CSV文件或使用read_excel()函数读取Excel文件作为演示数据。
例如,在本教程中,我们将使用以下两个练习数据集:
-
sales.csv:包含销售业绩数据,具有以下特征:
-
order_id:订单ID
- customer_id:客户ID
- order_date:订单日期
- product_name:产品名称
- quantity:销售数量
- price_per_unit:每个单位的价格
的数据
order_id,customer_id,order_date,product_name,quantity,price_per_unit
1001,001,2019-01-01,Apple,10,2.2
1001,001,2019-01-01,Banana,20,1.3
1002,002,2019-01-02,Orange,5,3.1
1003,003,2019-01-03,Pear,15,1.7
1002,002,2019-01-02,Watermelon,2,6.2
-
customers.csv:包含客户数据,具有以下特征:
-
customer_id:客户ID
- customer_name:客户名称
- city:所在城市
- state:所在州
customer_id,customer_name,city,state
001,Alice,New York,NY
002,Bob,San Francisco,CA
003,Eve,Los Angeles,CA
004,Jeff,Chicago,IL
合并数据
在Pandas库中,合并方法将两个数据集中的记录合并成一个数据集。我们可以使用merge()函数来实现数据合并,合并的结果取决于合并的方式和合并键的选择。Pandas库中支持四种数据合并方式,包括“inner”、“outer”、“left”和“right”(其中,“left”和“right”通常称为“left outer join”和“right outer join”)。
1. inner join
内连接是一个常见的数据合并方式,仅返回具有匹配键的记录。我们可以通过指定“how = 'inner'”或“不指定how参数”来进行内连接操作。
例如,我们将sales.csv和customers.csv数据集合并,连接键为“customer_id”,具体代码如下:
import pandas as pd
sales_data = pd.read_csv('sales.csv')
customers_data = pd.read_csv('customers.csv')
# 内连接,连接键为customer_id
merged_data = pd.merge(sales_data, customers_data, on='customer_id')
print(merged_data)
输出结果:
order_id customer_id order_date product_name quantity price_per_unit customer_name city state
0 1001 001 2019-01-01 Apple 10 2.2 Alice New York NY
1 1001 001 2019-01-01 Banana 20 1.3 Alice New York NY
2 1002 002 2019-01-02 Orange 5 3.1 Bob San Francisco CA
3 1002 002 2019-01-02 Watermelon 2 6.2 Bob San Francisco CA
4 1003 003 2019-01-03 Pear 15 1.7 Eve Los Angeles CA
上面的代码中,“on”参数指定了连接键(即“customer_id”),“how”参数未指定,默认为“inner”。
2. outer join
外连接是将两个数据集中的所有记录合并成一个数据集,缺失值用NaN填充组合键。我们可以通过指定“how = 'outer'”来进行外连接操作。
例如,我们将sales.csv和customers.csv数据集进行外连接,连接键为“customer_id”,具体代码如下:
import pandas as pd
sales_data = pd.read_csv('sales.csv')
customers_data = pd.read_csv('customers.csv')
# 外连接,连接键为customer_id
merged_data = pd.merge(sales_data, customers_data, on='customer_id', how='outer')
print(merged_data)
输出结果:
order_id customer_id order_date product_name quantity price_per_unit customer_name city state
0 1001 001 2019-01-01 Apple 10.0 2.2 Alice New York NY
1 1001 001 2019-01-01 Banana 20.0 1.3 Alice New York NY
2 1002 002 2019-01-02 Orange 5.0 3.1 Bob San Francisco CA
3 1002 002 2019-01-02 Watermelon 2.0 6.2 Bob San Francisco CA
4 1003 003 2019-01-03 Pear 15.0 1.7 Eve Los Angeles CA
5 NaN 004 NaN NaN NaN NaN Jeff Chicago IL
上面的代码中,“how”参数指定为“outer”。
拼接数据
拼接操作是将多个数据集中的记录组合成一个数据集。在Pandas中,我们可以使用concat()函数来进行数
据集的拼接。拼接的方式包括横向拼接和纵向拼接。
1. 横向拼接
横向拼接是将两个数据集在行方向上进行拼接。我们可以使用concat()函数,通过指定“axis = 1”来进行横向拼接操作。
例如,我们将sales.csv与customers.csv拼接,具体代码如下:
import pandas as pd
sales_data = pd.read_csv('sales.csv')
customers_data = pd.read_csv('customers.csv')
# 横向拼接
merged_data = pd.concat([sales_data, customers_data], axis=1)
print(merged_data)
输出结果:
order_id customer_id order_date product_name quantity price_per_unit customer_id customer_name city state
0 1001 001 2019-01-01 Apple 10 2.2 001 Alice New York NY
1 1001 001 2019-01-01 Banana 20 1.3 002 Bob San Francisco CA
2 1002 002 2019-01-02 Orange 5 3.1 003 Eve Los Angeles CA
3 1003 003 2019-01-03 Pear 15 1.7 004 Jeff Chicago IL
4 1002 002 2019-01-02 Watermelon 2 6.2 NaN NaN NaN NaN
在上面的代码中,我们使用了concat()函数进行横向拼接,指定“axis = 1”表示在行方向上拼接。
2. 纵向拼接
纵向拼接是将两个数据集在列方向上进行拼接。我们可以使用concat()函数,通过指定“axis = 0”来进行纵向拼接操作。
例如,我们将两个相同结构的数据集进行纵向拼接,具体代码如下:
import pandas as pd
data1 = pd.DataFrame({'Col1':[1,2,3],'Col2':[4,5,6],'Col3':[7,8,9]})
data2 = pd.DataFrame({'Col1':[10,11,12],'Col2':[13,14,15],'Col3':[16,17,18]})
# 纵向拼接
merged_data = pd.concat([data1, data2], axis=0)
print(merged_data)
输出结果:
Col1 Col2 Col3
0 1 4 7
1 2 5 8
2 3 6 9
0 10 13 16
1 11 14 17
2 12 15 18
在上面的代码中,我们使用了concat()函数进行纵向拼接,指定“axis = 0”表示在列方向上拼接。
结论
本教程向大家介绍了Python Pandas库中的合并与拼接方法,包括内连接、外连接、横向拼接和纵向拼接等。通过实践练习,你掌握了如何使用这些方法来进行数据处理与分析。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python pandas数据处理教程之合并与拼接 - Python技术站