说真的Python读取Excel我这么跟你说,你还说看不懂,那怪我咯?

本文详细介绍使用Python读取Excel表格数据的过程,包括文件路径定义、表对象获取、行列数统计,以及如何将数据转化为字典和列表形式,便于进一步的数据处理与分析。

Excel表格

idurlboke
1https://blog.youkuaiyun.com/laozhu_Python骑着乌龟找猪
2https://www.cnblogs.com/zzpython/码上开始

需求分析

  1. 方便读取数据,将每一行数据结合标题生成字典:{“id”: 1, “url”: “https://blog.youkuaiyun.com/laozhu_Pythonrl”, “boke”: “骑着乌龟找猪”}
  2. 然后将生成的数据存放在一个列表中[{“id”: 1, “url”: “https://blog.youkuaiyun.com/laozhu_Pythonrl”, “boke”: “骑着乌龟找猪”}]

小结:

 代码中需要运用到的知识:列表/字典/循环

操作流程

  1. 处理一个表格,首先要知道路径,所以我们需要知道文件路径然后打开这张表

    #! /usr/bin/python3
    
    # @Time    : 2020/8/5 13:30
    # @Author  : 码上开始
    
    import xlrd
    
    # 定义文件路径
    path = "E:/data.xls"
    # 然后打开一个表
    data = xlrd.open_workbook(path)
    
  2. 打开表之后,通过获取表对像来操作这个表,相当于我们用鼠标选中这个Sheet1就能操作这个表里内容了,明白了吗?
    在这里插入图片描述

#! /usr/bin/python3

# @Time    : 2020/8/5 13:30
# @Author  : 码上开始

import xlrd

# 定义文件路径
path = "E:/data.xls"
# 然后打开一个表
data = xlrd.open_workbook(path)
# 通过下标获取表对象,用于操作表
sheet1 = data.sheet_by_name("Sheet1")
  1. 获取表对像后,我们需要这个表格行和列数,才方便查找数据
#! /usr/bin/python3

# @Time    : 2020/8/5 13:30
# @Author  : 码上开始

import xlrd

# 打开需要操作的表
path = "E:/data.xls"
data = xlrd.open_workbook(path)
# 通过表名获取表对象,用于操作表
sheet1 = data.sheet_by_name("Sheet1")
# 列数
cols = sheet1.ncols
# 行数
rows = sheet1.nrows
  1. id/url/boke我们每一行数据都需要用这个,所以我们需要提出来进行循环操作
#! /usr/bin/python3

# @Time    : 2020/8/5 13:30
# @Author  : 码上开始

import xlrd

# 打开需要操作的表
path = "E:/data.xls"
data = xlrd.open_workbook(path)
# 通过下标获取表对象,用于操作表
sheet1 = data.sheet_by_name("Sheet1")

# 列数
cols = sheet1.ncols
# 行数
rows = sheet1.nrows

# 定义空列表和字典用于存放数据
list = [ ]

# 获取第一行的值
one_value = sheet1.row_values(0)
# 通过打印来检查是不是获取到表里第一行的值
print(one_value)

完整 代码

#! /usr/bin/python3

# @Time    : 2020/8/5 13:30
# @Author  : 码上开始

import xlrd

# 打开需要操作的表
path = "E:/data.xls"
data = xlrd.open_workbook(path)
# 通过下标获取表对象,用于操作表
sheet1 = data.sheet_by_name("Sheet1")

# 列数
cols = sheet1.ncols
# 行数
rows = sheet1.nrows

# 定义空列表和字典用于存放数据
list = [ ]

# 获取第一行的值
one_value = sheet1.row_values(0)
# 打印结果是:["id", "url", "boke"]
print(one_value)

# 代码最重要的一段
# 外循环行数(我们从excel表里第2行开始,即下标从1开始,括号里即(1, 3)总循环次数两次
for i in range(1, rows):
    # 定义一个字典存放每一行的数据
    dict = { }
    # 列的数据则是从0开始(就是第1列)结束是我们或取的列值即:(0, 3)
    for y in range(0, cols):
        # 第一次循环字典是这样写入的:dict["id"] = 1
        # 然后依次把数字套进去
        dict[one_value[y]] = sheet1.row_values(i)[y]
    # 然后将字典数据存放在列表中    
    list.append(dict)
print(list)

运行结果

[{'id': '1', 'url': 'https://blog.youkuaiyun.com/laozhu_Python', 'boke': '骑着乌龟找猪'}, {'id': '2', 'url': 'https://www.cnblogs.com/zzpython/', 'boke': '码上开始'}]
<think>嗯,用户之前已经问过如何在Jupyter Notebook用Box-Cox变换处理Excel数据,现在他们又针对步骤二“读取Excel数据”提出了疑问。首先,我需要确定用户具体在哪个环节遇到了困难。可能的原因有很多,比如文件路径不正确、库没有正确安装、或者对代码中的某些语法不理解。 首先,用户提到自己是个小白,所以可能需要更基础的指导。在步骤二中,用户可能遇到的问题可能包括: 1. **文件路径问题**:用户可能不知道如何正确指定Excel文件的路径。比如,如果文件不在当前工作目录下,或者文件名拼写错误,就会导致读取失败。这时候需要详细解释如何检查当前目录,如何正确指定文件路径,包括绝对路径和相对路径的区别。 2. **依赖库未安装**:虽然步骤一已经提到了安装必要的库,但用户可能没有正确安装,或者安装后没有重启内核。这时候需要提醒用户检查库是否安装成功,并确认是否在Jupyter中正确导入了这些库。 3. **代码语法不理解**:用户可能对代码中的某些部分感到困惑,比如`pd.read_excel`的参数,或者`engine='openpyxl'`的作用。这时候需要逐行解释代码的含义,帮助用户理解每个参数的作用。 4. **文件格式问题**:用户可能使用的Excel文件格式不是.xlsx,或者文件中有多个工作表,导致读取时出现问题。这时候需要明如何处理不同的文件格式,或者如何指定工作表名称。 接下来,我需要考虑用户的潜在需求。用户可能不仅仅想知道如何运行代码,还想了解为什么需要这些步骤,以及如何调试常见错误。因此,在回答中应该包含详细的解释、常见问题及解决方法,以及示例代码的输出,帮助用户验证自己的操作是否正确。 另外,用户可能对Jupyter Notebook的操作不熟悉,比如如何创建新的代码单元格,如何运行代码等。但根据用户之前的提问,他们可能已经完成了步骤一,所以这部分可能不需要重复,但如果有必要的话,可以简要提及。 最后,确保回答的结构清晰,分步骤解释,使用简单的语言,避免技术术语,或者对术语进行解释。同时,提供示例和截图可以帮助用户更直观地理解操作过程。</think>以下是关于 **步骤2:读取Excel数据** 的详细解释,针对小白用户设计,分步骤拆解操作: --- ### **核心目标** 将 Excel 文件中的 X/Y/Z 三列数据读取Python 的 DataFrame(类似电子表格)中,为后续 Box-Cox 变换做准备。 --- ### **详细操作步骤** #### **1. 确认 Excel 文件位置** - **关键点**:确保 Excel 文件(如 `data.xlsx`)和 Jupyter Notebook 文件(`.ipynb`)在 **同一文件夹** 下。 - 如果不在同一文件夹,需使用文件完整路径(例如 `C:/Users/你的名字/Desktop/data.xlsx`)。 #### **2. 检查文件名和扩展名** - **注意**: - Excel 文件名需和代码中写的完全一致(区分大小写)。 - 文件扩展名需为 `.xlsx`(旧版 `.xls` 需改用 `xlrd` 库,但推荐转为 `.xlsx`)。 #### **3. 逐行代码解释** ```python import pandas as pd # 导入 pandas 库,并简写为 pd from scipy.stats import boxcox # 导入 Box-Cox 函数 import matplotlib.pyplot as plt # 导入绘图库 # 读取 Excel 文件(核心代码) df = pd.read_excel("data.xlsx", engine="openpyxl") # 显示前5行数据 print("原始数据:") display(df.head()) ``` - **`pd.read_excel("data.xlsx", engine="openpyxl")`**: - `pd`:调用 pandas 库 - `read_excel()`:读取 Excel 文件的函数 - `"data.xlsx"`:文件名(需替换为你的实际文件名) - `engine="openpyxl"`:指定使用 `openpyxl` 引擎读取 `.xlsx` 文件(必须!) - **`df.head()`**:显示 DataFrame 的前5行数据,用于确认是否读取成功。 --- ### **常见问题排查** #### **问题1:报错 `FileNotFoundError`** - **原因**:文件路径错误或文件名拼写错误。 - **解决方法**: 1. 检查文件名是否完全一致(包括大小写)。 2. 如果文件不在当前文件夹,使用绝对路径: ```python df = pd.read_excel(r"C:\Users\你的用户名\Desktop\data.xlsx", engine="openpyxl") ``` #### **问题2:报错 `ModuleNotFoundError: No module named 'openpyxl'`** - **原因**:未安装 `openpyxl` 库。 - **解决方法**:回到步骤1,运行安装命令: ```python !pip install openpyxl ``` #### **问题3:数据列名不符(例如没有Z列)** - **原因**:Excel 文件中列名不匹配。 - **解决方法**: 1. 打开 Excel 文件,确认列名是否为 X/Y/Z。 2. 若列名不同,需修改代码中的列名,例如: ```python df["你的实际列名"] # 替换 Z 为实际列名 ``` --- ### **正确运行后的效果** - **期望输出**: ``` 原始数据: X Y Z 0 1 2 10 1 3 4 20 2 5 6 30 ``` (显示前5行,列名和数值应与你的 Excel 文件一致) --- ### **补充:如何确认当前工作目录** 在 Jupyter Notebook 中运行以下代码,查看当前路径是否包含 Excel 文件: ```python import os print("当前工作路径:", os.getcwd()) ``` - 如果路径不符,可通过以下方式修正: 1. 将 Excel 文件移动到显示的路径下。 2. 或在代码中使用绝对路径(如 `C:/Users/xxx/data.xlsx`)。 --- ### **操作流程图** ``` 启动 Jupyter Notebook → 新建代码单元格 → 输入代码 → 运行 → 检查输出 → 确认数据正确 ``` 按照以上步骤操作,即可成功读取 Excel 数据!遇到问题可截图报错信息进一步分析。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值