基于Pycharm的Excel文件导入以及数据处理
用了一天的时间进行学习了利用python进行导入excel文件以及处理数据。由于自己是第一次学习,因此特地将所学知识进行总结与分享。
1.包的选取
据我所知,目前常用处理Excel的包主要包括xlrd、pandas。
xlrd
和 pandas
都是 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
是更强大和灵活的工具,它提供了更多的功能来满足您的需求。
通常,根据您的具体需求和项目复杂性,您可以选择使用 xlrd
、pandas
,或两者结合使用,以便充分利用它们的优势。
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)
# # 创建一个空字典