基于Pycharm的Excel文件导入以及数据处理

用了一天的时间进行学习了利用python进行导入excel文件以及处理数据。由于自己是第一次学习,因此特地将所学知识进行总结与分享。

1.包的选取

据我所知,目前常用处理Excel的包主要包括xlrdpandas

xlrdpandas 都是 Python 中用于处理 Excel 文件的库,但它们在功能和使用上有一些重要的异同点。

异同点:

1.1 功能和用途:

  • xlrd 是一个库,主要用于读取 Excel 文件的内容。它提供了一种基本的方式来从 Excel 文件中提取数据,但不支持写入或修改 Excel 文件。
  • pandas 是一个强大的数据处理库,其中包含用于读取和写入 Excel 文件的功能,以及各种数据处理和分析工具。它可以用于读取、处理、分析和写入 Excel 数据,同时还支持多种数据格式和操作。

1.2. 数据结构:

  • xlrd 以一种较为低级的方式返回 Excel 数据,通常是原始的行和列数据。
  • pandas 使用自定义的数据结构,主要是 DataFrame 和 Series,它们更适合数据分析和操作。DataFrame 是一个表格数据结构,可以容纳多种数据类型,而 Series 是一维数组,通常用于表示单列数据。

1.3. 数据处理:

  • xlrd 提供了基本的读取功能,但如果需要进行更复杂的数据操作,需要编写额外的代码。
  • pandas 提供了丰富的数据处理和操作功能,包括数据过滤、转换、聚合、合并、透视等,使得处理和分析数据变得更加简单和高效。

1.4. 性能:

  • xlrd 通常比 pandas 更快,因为它是专门用于读取 Excel 数据的库,没有额外的数据结构和操作的开销。
  • pandas 在处理大型数据集时可能会稍慢,因为它提供了更多的功能和抽象。

选择适合的库:

  • 如果您只需要读取 Excel 文件的内容,并且对数据进行简单的查看或提取操作,xlrd 可能是一个合适的选择,因为它更轻量级且性能较好。
  • 如果您需要进行更复杂的数据处理、分析和转换操作,或者需要将 Excel 数据与其他数据源集成,那么 pandas 是更强大和灵活的工具,它提供了更多的功能来满足您的需求。

通常,根据您的具体需求和项目复杂性,您可以选择使用 xlrdpandas,或两者结合使用,以便充分利用它们的优势。

2.基于xlrd、pandas包进行讲解

现在对两种包处理数据进行分别说明:

2.1 Xlrd包

xlrd包比较老旧,只能处理后缀为.xls的文件,而pandas包则可以处理更多格式,比较新。

import xlrd
book = xlrd.open_workbook('SOWC_2014_Stat_Tables_Table_9.xls')
sheet = book.sheet_by_name('Table 9 ')
data = {}
for i in range(14, sheet.nrows):
# 从第14行开始,因为这是国家数据的起点。 ➋
  row = sheet.row_values(i)
  country = row[1]
  data[country] = {
  'child_labor': {
  'total': [row[4], row[5]],
  'male': [row[6], row[7]],
  'female': [row[8], row[9]],
  },
  'child_marriage': {
  'married_by_15': [row[10], row[11]],
  'married_by_18': [row[12], row[13]],
  }
}
  if country == 'Zimbabwe':
    break #中断程序
import pprint
pprint.pprint(data)

2.2 Pandas包

import pandas as pd
import pprint

# 读取Excel文件
df = pd.read_excel('SOWC_2014_Stat_Tables_Table_9.xls', sheet_name='Table 9 ', skiprows=13)  # skiprows=14
data = {}  # 创建一个空字典
# print(df)
for row in range(200):  # 遍历df的每一行
  row_data = df.iloc[row]
  country = row_data[0]
  # print(country)
  data[country] = {
    'child_labor': {
      'total': [row_data[4], row_data[5]],
      'male': [row_data[6], row_data[7]],
      'female': [row_data[8], row_data[9]],
    },
    'child_marriage': {
      'married_by_15': [row_data[10], row_data[11]],
      'married_by_18': [row_data[12], row_data[13]],
    }
  }
pprint.pprint(data)
# # 创建一个空字典