1. pandas读取excel文件的背景介绍
在处理大量数据时,往往需要使用Excel软件进行数据处理和分析,而在Python编程中,使用pandas库能够方便、高效地读取和处理Excel文件中的数据,极大地增强了数据处理效率和灵活性。
2. pandas读取excel文件的基本代码介绍
为了读取Excel文件,我们需要导入pandas库,使用pandas库的read_excel函数可以读取Excel文件中的数据,该函数的基本使用格式如下所示:
import pandas as pd
data = pd.read_excel('文件名.xlsx')
其中,“文件名.xlsx”是待读取的Excel文件名,read_excel函数会默认读取文件的第一个工作表(sheet)中的所有数据,读取结果返回一个包含全部数据的pandas数据框(DataFrame)对象。
2.1 读取指定sheet的数据
若要读取Excel文件中的某个指定sheet中的数据,可以在read_excel函数中使用sheet_name参数来指定Sheet名称或Sheet编号,如下所示:
import pandas as pd
# 读取sheet名称为“Sheet1”的数据
data = pd.read_excel('文件名.xlsx', sheet_name='Sheet1')
# 读取第3个sheet中的数据
data = pd.read_excel('文件名.xlsx', sheet_name=2)
2.2 读取指定行和列的数据
通常情况下,我们只需要读取Excel文件中的部分数据,我们可以使用pandas的iloc函数来实现,代码如下所示:
import pandas as pd
# 读取第2行至第11行、第1列至第4列的数据
data = pd.read_excel('文件名.xlsx', sheet_name='Sheet1',
header=None,
index_col=None,
usecols="A:D",
skiprows=[0,1],
)
其中header=None表示不采用Excel文件中的列名作为DataFrame的列名,index_col=None表示不采用Excel文件中的某列作为DataFrame的行索引,usecols="A:D"表示仅读取Excel文件中第1列至第4列的数据,skiprows=[0,1]表示跳过Excel文件中的第1行和第2行。
2.3 读取数据时的常见参数设置
除了可以使用read_excel函数中的sheet_name、header、index_col、usecols、skiprows等参数进行数据读取的灵活性外,read_excel函数还有很多功能强大的参数可以设置,包括:
sheet_name=None:选定要读取的工作表,可以通过Sheet名称或Sheet编号进行选择
header=0:将第1行作为DataFrame的列名,header=None表示不使用Excel文件中的列名作为DataFrame的列名
index_col=None:列设置DataFrame的索引列,index_col=False表示不采用Excel文件中的某列作为DataFrame的行索引
usecols=None:要读取的列的个数,可以使用列的名称或列号进行表示
skiprows=None:跳过的行数
skip_footer=0:跳过文件末尾的行数
names=None:读取文件时使用的列名列表
nrows=None:要读取的行数
dtype=None:读取每列的数据类型,默认是浮点型
converters=None:将列的数据转换为指定类型的字典
keep_default_na=True:是否保留Excel文件中的空值,默认是True
3. pandas读取excel文件的应用
pandas读取Excel文件可以帮助我们快速处理大量的数据和统计分析,以下例子展示如何使用pandas读取Excel文件,并对读取的数据进行简单的统计分析和可视化展示。
3.1 示例:读取Excel数据并统计分析
下面是一个简单的数据文件example_data.xlsx,文件包含了一些我们需要分析和展示的数据,其中含有两个sheet,分别为Sheet1和Sheet2,我们将采用pandas库读取这些数据,并进行简单的统计分析和可视化展示。
首先,我们需要导入必要的库,读取Excel数据,代码如下所示:
import pandas as pd
import matplotlib.pyplot as plt
# 读取Excel数据
file = "example_data.xlsx"
sheet1_data = pd.read_excel(file, sheet_name="Sheet1")
sheet2_data = pd.read_excel(file, sheet_name="Sheet2")
读取数据完成后,我们可以对读取的数据进行简单的统计分析,代码如下所示:
# 统计Sheet1中男女员工的数量
male_num = len(sheet1_data[sheet1_data['性别']=='男'])
female_num = len(sheet1_data[sheet1_data['性别']=='女'])
# 统计Sheet2中国家城市的数量
coutry_num = sheet2_data['国家'].nunique()
city_num = sheet2_data['城市'].nunique()
上述代码中,我们分别使用了sheet1_data和sheet2_data两个pandas数据框的内置函数进行了统计分析,分别统计了Sheet1中男女员工的数量和Sheet2中国家城市的数量。
3.2 示例:使用pandas绘制条形图和饼图
通过将读取的数据进行统计分析后,我们可以进一步使用pandas的可视化工具丰富数据的呈现方式。例如,我们将使用pandas和matplotlib库绘制数据的条形图和饼图。
首先,我们绘制Sheet1中男女员工的数量的条形图,代码如下所示:
# 绘制Sheet1中男女员工数量的条形图
sex_data = pd.DataFrame({'sex':['男','女'], 'num':[male_num, female_num]})
plt.bar(sex_data['sex'], sex_data['num'], width=0.4, alpha=0.7)
plt.title("Sheet1中男女员工数量分布图")
plt.xlabel("性别")
plt.ylabel("人数")
plt.show()
通过执行上述代码,我们可以得到如下的条形图:
![条形图](https://i.loli.net/2021/03/18/hXOgCx5TSV7IMj9.png)
从条形图中可以看出,Sheet1中男性员工的数量略多于女性员工数量。
随后,我们将绘制Sheet2中国家城市的数量占比的饼图,代码如下所示:
# 统计Sheet2中不同国家城市数量的分布情况
city_data = sheet2_data.groupby(['国家','城市']).size().reset_index(name='num')
country_data = city_data.groupby('国家')['num'].sum().reset_index(name='total')
# 计算每个国家城市数量的占比
country_data['percent'] = country_data['total'] / city_data['num'].sum()
# 绘制饼图
pie_data = country_data[['国家','percent']]
pie_data = pie_data.sort_values('percent',ascending = False)
colors = ['green','red','blue','yellow','gray']
plt.pie(pie_data['percent'], labels=pie_data['国家'], colors=colors,
autopct='%1.2f%%', shadow=False, startangle=90)
plt.title("Sheet2中各个国家城市数量占比")
plt.show()
通过执行上述代码,我们可以得到如下的饼图:
![饼图](https://i.loli.net/2021/03/18/IufQxYrGhqcvzVm.png)
从饼图中可以看出,Sheet2中美国和中国的城市数量占比较高,其他国家城市数量占比比较低。
4. 结论
本文介绍了pandas库读取Excel文件的基本知识以及应用示例,包括读取指定sheet的数据、读取指定行和列的数据以及读取数据时常见参数的设置等。此外,还展示了使用pandas将读取的数据进行统计分析和可视化展示的实例,通过实例介绍了如何使用pandas绘制条形图和饼图,展示了不同类型的数据可以用以不同的方式进行表达和呈现。在数据处理和分析过程中,pandas库提供了一种高效灵活的方式,可以显著提高工作效率并且降低错误率。