陈宇涵 發表於 2026-1-8 09:52:53

python读取excel数据的详细教学

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">前言</a></li><li><a href="#_label1">一、准备工作</a></li><li><a href="#_label2">二、读取Excel文件的基本步骤</a></li><li><a href="#_label3">三、详细示例</a></li><ul class="second_class_ul"><li><a href="#_lab2_3_0">3.1 读取指定工作表</a></li><li><a href="#_lab2_3_1">3.2 读取特定列和行</a></li><li><a href="#_lab2_3_2">3.3 读取所有工作表</a></li></ul><li><a href="#_label4">四、数据清洗和预处理</a></li><ul class="second_class_ul"><li><a href="#_lab2_4_3">4.1 删除空值</a></li><li><a href="#_lab2_4_4">4.2 填充空值</a></li><li><a href="#_lab2_4_5">4.3 更改列的数据类型</a></li></ul><li><a href="#_label5">五、导出Excel文件</a></li><ul class="second_class_ul"></ul><li><a href="#_label6">六、处理带有复杂格式的Excel文件</a></li><ul class="second_class_ul"><li><a href="#_lab2_6_6">6.1 处理合并单元格</a></li><li><a href="#_lab2_6_7">6.2 处理复杂的表头</a></li></ul><li><a href="#_label7">七、其他Excel文件处理库</a></li><ul class="second_class_ul"></ul><li><a href="#_label8">八、总结</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>前言</h2>
<p>在Python中读取Excel数据是一个常见的数据处理任务。通过<code>pandas</code>库,你可以轻松地读取、分析和操作Excel文件。以下是如何使用Python读取Excel数据的详细讲解。</p>
<p class="maodian"><a name="_label1"></a></p><h2>一、准备工作</h2>
<p>在开始之前,确保已安装<code>pandas</code>库以及Excel文件处理的依赖库<code>openpyxl</code>。你可以使用以下命令安装这些库:</p>
<div class="jb51code"><pre class="brush:bash;">pip install pandas openpyxl
</pre></div>
<p class="maodian"><a name="_label2"></a></p><h2>二、读取Excel文件的基本步骤</h2>
<p>使用<code>pandas</code>库中的<code>read_excel()</code>函数可以轻松读取Excel文件。以下是该函数的基本用法。</p>
<div class="jb51code"><pre class="brush:py;">import pandas as pd

# 读取Excel文件
df = pd.read_excel('example.xlsx')
</pre></div>
<p><strong>read_excel()函数的基本参数</strong></p>
<ul><li><strong>filepath</strong>: 要读取的Excel文件的路径,支持相对路径和绝对路径。</li><li><strong>sheet_name</strong>: 指定要读取的工作表(Sheet)。可以是工作表名称、索引(从0开始),或者是<code>None</code>(读取所有工作表)。</li><li><strong>header</strong>: 指定数据表头的行号,默认是0(第一行作为表头)。</li><li><strong>usecols</strong>: 指定要读取的列,可以是列名列表或列索引列表。</li><li><strong>skiprows</strong>: 跳过文件开头的行数(通常用于跳过不需要的行,如文件说明)。</li></ul>
<p class="maodian"><a name="_label3"></a></p><h2>三、详细示例</h2>
<p class="maodian"><a name="_lab2_3_0"></a></p><h3>3.1 读取指定工作表</h3>
<p>如果Excel文件中有多个工作表,你可以指定要读取的工作表名称或索引。</p>
<div class="jb51code"><pre class="brush:py;"># 读取名为 "Sheet2" 的工作表
df = pd.read_excel('example.xlsx', sheet_name='Sheet2')

# 读取索引为1的工作表(第二个工作表)
df = pd.read_excel('example.xlsx', sheet_name=1)
</pre></div>
<p class="maodian"><a name="_lab2_3_1"></a></p><h3>3.2 读取特定列和行</h3>
<p>可以使用<code>usecols</code>参数读取特定的列,使用<code>skiprows</code>参数跳过某些行。例如:</p>
<div class="jb51code"><pre class="brush:py;"># 只读取A列和C列,并跳过前两行
df = pd.read_excel('example.xlsx', usecols=['A', 'C'], skiprows=2)
</pre></div>
<p class="maodian"><a name="_lab2_3_2"></a></p><h3>3.3 读取所有工作表</h3>
<p>将<code>sheet_name</code>设置为<code>None</code>,读取Excel文件中的所有工作表,并将其作为一个字典返回,键是工作表名称,值是对应的DataFrame。</p>
<div class="jb51code"><pre class="brush:py;"># 读取所有工作表
dfs = pd.read_excel('example.xlsx', sheet_name=None)

# 访问特定工作表的数据
df_sheet1 = dfs['Sheet1']
</pre></div>
<p class="maodian"><a name="_label4"></a></p><h2>四、数据清洗和预处理</h2>
<p>读取Excel数据后,通常需要对数据进行清洗和预处理。<code>pandas</code>提供了丰富的函数来帮助你完成这些任务。</p>
<p class="maodian"><a name="_lab2_4_3"></a></p><h3>4.1 删除空值</h3>
<p>使用<code>dropna()</code>函数可以删除DataFrame中的空值:</p>
<div class="jb51code"><pre class="brush:py;"># 删除任何包含NaN的行
df_cleaned = df.dropna()

# 删除任何包含NaN的列
df_cleaned = df.dropna(axis=1)
</pre></div>
<p class="maodian"><a name="_lab2_4_4"></a></p><h3>4.2 填充空值</h3>
<p>可以使用<code>fillna()</code>函数填充空值,例如用零或均值填充:</p>
<div class="jb51code"><pre class="brush:py;"># 用0填充所有空值
df_filled = df.fillna(0)

# 用每列的均值填充空值
df_filled = df.fillna(df.mean())
</pre></div>
<p class="maodian"><a name="_lab2_4_5"></a></p><h3>4.3 更改列的数据类型</h3>
<p>在处理Excel数据时,可能需要更改某些列的数据类型。<code>pandas</code>提供了<code>astype()</code>函数来完成这一任务:</p>
<div class="jb51code"><pre class="brush:py;"># 将某列转换为整数类型
df['Age'] = df['Age'].astype(int)
</pre></div>
<p class="maodian"><a name="_label5"></a></p><h2>五、导出Excel文件</h2>
<p>处理完数据后,可以将其导出回Excel文件。<code>pandas</code>提供了<code>to_excel()</code>函数来完成这一任务。</p>
<div class="jb51code"><pre class="brush:py;"># 导出到一个新的Excel文件
df.to_excel('output.xlsx', index=False)
</pre></div>
<p><strong>导出多个工作表</strong></p>
<p>可以使用<code>ExcelWriter</code>对象将多个DataFrame写入同一个Excel文件的不同工作表:</p>
<div class="jb51code"><pre class="brush:py;"># 创建一个ExcelWriter对象
with pd.ExcelWriter('output.xlsx') as writer:
    df1.to_excel(writer, sheet_name='Sheet1')
    df2.to_excel(writer, sheet_name='Sheet2')
</pre></div>
<p class="maodian"><a name="_label6"></a></p><h2>六、处理带有复杂格式的Excel文件</h2>
<p>有时,Excel文件中可能包含合并单元格、复杂的表头等情况。你可以使用<code>pandas</code>的高级功能来处理这些问题。</p>
<p class="maodian"><a name="_lab2_6_6"></a></p><h3>6.1 处理合并单元格</h3>
<p><code>read_excel()</code>函数会自动处理大多数合并单元格的情况,将它们展开为普通表格。如果需要更复杂的处理,可以使用<code>merge_cells</code>参数(默认为<code>True</code>)。</p>
<p class="maodian"><a name="_lab2_6_7"></a></p><h3>6.2 处理复杂的表头</h3>
<p>可以使用<code>header</code>参数指定表头所在的行,并使用<code>skiprows</code>跳过其他不需要的行。例如,假设你的数据从第3行开始,第1行是文件说明,第2行是表头:</p>
<div class="jb51code"><pre class="brush:py;"># 读取数据,跳过前两行,指定第3行为表头
df = pd.read_excel('example.xlsx', header=2)
</pre></div>
<p class="maodian"><a name="_label7"></a></p><h2>七、其他Excel文件处理库</h2>
<p>除了<code>pandas</code>,还有一些其他库可以用于处理Excel文件,如<code>openpyxl</code>、<code>xlrd</code>、<code>xlwt</code>等:</p>
<ul><li><strong>openpyxl</strong>:可以用于读取和写入<code>.xlsx</code>格式的Excel文件,支持处理Excel文件的样式、图表等复杂功能。</li><li><strong>xlrd</strong>:可以用于读取<code>.xls</code>和<code>.xlsx</code>文件,适用于简单的读取任务(请注意,从2021年起,<code>xlrd</code>不再支持<code>.xlsx</code>格式)。</li><li><strong>xlwt</strong>:用于写入<code>.xls</code>格式的Excel文件。</li></ul>
<p class="maodian"><a name="_label8"></a></p><h2>八、总结</h2>
<p>Python通过<code>pandas</code>库提供了强大而灵活的Excel数据处理功能,可以轻松实现读取、清洗、分析和导出Excel数据。通过掌握这些基本和高级操作,可以极大地提升数据处理和分析的效率。</p>
<p>如果需要更多定制化功能,建议深入研究<code>pandas</code>文档和其他专用Excel处理库(如<code>openpyxl</code>)的功能。</p>
頁: [1]
查看完整版本: python读取excel数据的详细教学