pandas 读取excel文件的操作代码

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库提供了一种高效灵活的方式,可以显著提高工作效率并且降低错误率。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签