CodeGym /课程 /Python SELF ZH /整合多个Excel工作表和文件中的数据

整合多个Excel工作表和文件中的数据

Python SELF ZH
第 28 级 , 课程 1
可用

1. 为什么需要整合数据?

在现代的数据世界中,很少能在一个文件中找到所有需要的信息。 数据往往分散在多个表格和文件中,为了进行完整的分析,我们需要将它们整合起来。 比如,你可能有每个月的销售数据存放在不同的文件中。 为了分析整体趋势,需要将这些数据汇总到一个表中。

此外,整合数据还有以下好处:

  • 节省手动汇总报告的时间。
  • 减少因手动转移数据而产生的错误。
  • 自动化数据分析的工作流程。

2. 数据整合的方法

数据拼接

垂直和水平的数据整合称为拼接。 我们从一个简单的例子开始:假设我们有两个DataFrame,希望将它们合并。

Python

import pandas as pd

# 创建两个结构相似的DataFrame
data1 = {
    'Product': ['Apples', 'Bananas'],
    'Sales': [100, 150]
}

data2 = {
    'Product': ['Cherries', 'Dates'],
    'Sales': [75, 200]
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 垂直拼接(添加行)
combined = pd.concat([df1, df2], ignore_index=True)
print(combined)

最终会得到一个合并后的DataFrame,包含两个来源中的所有行。 注意参数ignore_index=True,它会重置最终DataFrame的索引。

使用merge方法整合数据

当你有需要基于公共列(比如idProduct)整合的数据时, 可以使用merge方法。这就像让你的数据进行约会——它们需要有共同点才能匹配。

Python

# 创建示例数据
sales_data = {
    'Product': ['Apples', 'Bananas', 'Cherries'],
    'Sales': [100, 150, 75]
}

price_data = {
    'Product': ['Apples', 'Bananas', 'Dates'],
    'Price': [1.2, 0.8, 3.0]
}

sales_df = pd.DataFrame(sales_data)
price_df = pd.DataFrame(price_data)

# 按'Product'列合并DataFrame
merged_df = pd.merge(sales_df, price_df, on='Product', how='inner')
print(merged_df)

虽然我们拥有每个产品的信息,merge仅返回在关键列Product中匹配的行。

结合类型解析:

  • inner(默认):仅返回在两个DataFrame中都存在的行。
  • outer:返回所有行,缺失值用NaN填充。
  • left:返回左侧DataFrame的所有行及其匹配的右侧数据。
  • right:返回右侧DataFrame的所有行及其匹配的左侧数据。

从多个工作表整合数据

现在,我们回顾了pandas中数据整合的用法, 让我们将这些知识应用到实际中,从一个Excel文件的多个工作表中整合数据。

Python

# 读取包含多个工作表的Excel文件
excel_file = pd.ExcelFile('sales_data.xlsx')

# 所有工作表的名称列表
sheet_names = excel_file.sheet_names

# 从每个工作表中读取数据到一个DataFrame中并将它们放入一个列表中
dataframes = [pd.read_excel(excel_file, sheet_name=sheet_name) for sheet_name in sheet_names]

# 对所有DataFrame进行垂直拼接
all_sales_data = pd.concat(dataframes, ignore_index=True)

print(all_sales_data)

在这里,我们将Excel文件的所有工作表读取到单独的DataFrame中,然后将它们整合成一个。 是不是很强大?

从多个文件整合数据

在实际中,你可能会遇到数据分布在多个文件中的情况。 让我们看看如何自动化整合过程。

Python

import glob

# 文件路径
file_path = r'data/sales_*.xlsx'

# 获取与模板匹配的所有文件列表
files = glob.glob(file_path)

# 从每个文件中读取数据到一个DataFrame并将它们放入一个列表中
dataframes = [pd.read_excel(file) for file in files]

# 对所有DataFrame进行垂直拼接
all_files_data = pd.concat(dataframes, ignore_index=True)

print(all_files_data)

我们使用glob库获取与指定模板匹配的文件列表, 然后将每个文件中的数据整合到一个DataFrame中。

3. 实际应用案例

为商业分析整合数据

假设你是一名分析师,每个月的销售数据都储存在单独的文件中。 利用上述技术,你可以轻松地整合数据以分析年度趋势并得出有价值的结论。

自动化报告

通过自动化数据整合,你可以设置一个脚本,从各种来源中收集信息, 并自动生成每日、每周或每月的报告。

处理来自不同来源的数据

数据可能来自不同的系统,每个来源只提供部分信息。 使用pandas整合,可以将它们组合起来以获取完整的图景,比如将客户数据与购买信息结合。

4. 常见错误及其修正

常见错误之一是整合的DataFrame中列名不匹配。 确保你用来整合数据的列确实一致,并在必要时使用merge方法中的 left_onright_on参数。

有时数据整合后可能会有缺失值。 使用fillna填充或dropna删除处理缺失值。

如果你的数据包含重复项,concat可能会生成比预期更长的DataFrame。 在这种情况下,可以用drop_duplicates方法清理。

现在,我们已经探索了在pandas中整合数据的方法和技巧,你有能力应对实际的自动化和数据分析任务了。 善用这些知识吧!

1
任务
Python SELF ZH, 第 28 级, 课程 1
已锁定
pandas中的基本数据合并
pandas中的基本数据合并
2
任务
Python SELF ZH, 第 28 级, 课程 1
已锁定
合并来自多个工作表的数据
合并来自多个工作表的数据
3
任务
Python SELF ZH, 第 28 级, 课程 1
已锁定
使用merge进行合并
使用merge进行合并
4
任务
Python SELF ZH, 第 28 级, 课程 1
已锁定
自动合并来自多个文件的数据
自动合并来自多个文件的数据
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION