python怎么从excel中读取数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎么从excel中读取数据?相关的知识,希望对你有一定的参考价值。

VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为:
VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找)
下面以一个实例来介绍一下这四个参数的使用
例1:如下图所示,要求根据表二中的姓名,查找姓名所对应的年龄。
公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)
参数说明:
1 查找目标:就是你指定的查找的内容或单元格引用。本例中表二A列的姓名就是查找目标。我们要根据表二的“姓名”在表一中A列进行查找。
公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)
2 查找范围(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目标,如果没有说从哪里查找,EXCEL肯定会很为难。所以下一步我们就要指定从哪个范围中进行查找。VLOOKUP的这第二个参数可以从一个单元格区域中查找,也可以从一个常量数组或内存数组中查找。本例中要从表一中进行查找,那么范围我们要怎么指定呢?这里也是极易出错的地方。大家一定要注意,给定的第二个参数查找范围要符合以下条件才不会出错:
A 查找目标一定要在该区域的第一列。本例中查找表二的姓名,那么姓名所对应的表一的姓名列,那么表一的姓名列(列)一定要是查找区域的第一列。象本例中,给定的区域要从第二列开始,即$B$2:$D$8,而不能是$A$2:$D$8。因为查找的“姓名”不在$A$2:$D$8区域的第一列。
B 该区域中一定要包含要返回值所在的列,本例中要返回的值是年龄。年龄列(表一的D列)一定要包括在这个范围内,即:$B$2:$D$8,如果写成$B$2:$C$8就是错的。
3 返回值的列数(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。这是VLOOKUP第3个参数。它是一个整数值。它怎么得来的呢。它是“返回值”在第二个参数给定的区域中的列数。本例中我们要返回的是“年龄”,它是第二个参数查找范围$B$2:$D$8的第3列。这里一定要注意,列数不是在工作表中的列数(不是第4列),而是在查找范围区域的第几列。如果本例中要是查找姓名所对应的性别,第3个参数的值应该设置为多少呢。答案是2。因为性别在$B$2:$D$8的第2列中。
4 精确OR模糊查找(VLOOKUP(A13,$B$2:$D$8,3,0) ),最后一个参数是决定函数精确和模糊查找的关键。精确即完全一样,模糊即包含的意思。第4个参数如果指定值是0或FALSE就表示精确查找,而值为1 或TRUE时则表示模糊。这里兰色提醒大家切记切记,在使用VLOOKUP时千万不要把这个参数给漏掉了,如果缺少这个参数默为值为模糊查找,我们就无法精确查找到结果了。
1、接下来,我们的任务是通过利用VLOOKUP函数来实现查找同学C的成绩。为此在单元格中输入“=VLOOKUP”,此时就会发现VLOOKUP包括三个参数和一个可选参数。
其中“lookup_value”是指要查找的值。
参数“table_array”是指搜索的区域,在此在除标题之后的整个数据区域。
第三个参数“col_index_num”是指整个函数返回单元格所在的列号。
2、最后以右括号结尾,并按回车键,就出现想要的结果啦。
参考技术A

    #导入包

    import xlrd

    #设置路径

    path='C:\\\\Users\\\\jyjh\\\\Desktop\\\\datap.xlsx'

    #打开文件

    data=xlrd.open_workbook(path)

    #查询工作表

    sheets=data.sheets()

    sheets

    可以通过函数、索引、名称获得工作表。

    sheet_1_by_function=data.sheets()[0]

    sheet_1_by_index=data.sheet_by_index(0)

    sheet_1_by_name=data.sheet_by_name(u'Sheet1')


    可以通过方法获得某一列或者某一行的数值。

    sheet_1_by_name.row_values(1)

    sheet_1_by_name.col_values(1)

    通过工作表的属性获得行数和列数。

    n_of_rows=sheet_1_by_name.nrows

    n_of_cols=sheet_1_by_name.ncols

    也可以用一个循环来遍历一次文件。

    for i in range(n_of_rows):

    print sheet_1_by_name.row_values(i)

    可以通过以下的任意一种方式访问单元格的数值。

    cell_A1=sheet_1_by_name.cell(0,0).value

    cell_A1=sheet_1_by_name.row(0)[0].value

    cell_A1=sheet_1_by_name.col(0)[0].value

    最后通过以下的方法对单元格的数值进行修改。

    row=0

    col=0

    #ctype 0:empty,1:string,2:number,3:date,4:boolean,5:error

    cell_type=1

    value='Hello,Excel'

    cell_A1=sheet_1_by_name.cell(0,0).value

    format=0

    sheet_1_by_name.put_cell(row,col,cell_type,value,format)

    cell_A1=sheet_1_by_name.cell(0,0).value

Python[1]  (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

7月20日,IEEE发布2017年编程语言排行榜:Python高居首位。

参考技术B ⒈ #import πακέτο
import xlrd
#Ρύθμιση διαδρομής
path='C:\\Users\\jyjh\\Desktop\\datap.xlsx'
#Άνοιγμα αρχείου
data=xlrd.open_workbook(path)

如何使用 Pandas 从 Excel 中读取某些列 - Python

【中文标题】如何使用 Pandas 从 Excel 中读取某些列 - Python【英文标题】:how to read certain columns from Excel using Pandas - Python 【发布时间】:2016-02-12 19:32:36 【问题描述】:

我正在从 Excel 工作表中读取数据,并且我想读取某些列:第 0 列,因为它是行索引,第 22:37 列。现在这就是我要做的:

import pandas as pd
import numpy as np
file_loc = "path.xlsx"
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = 37)
df= pd.concat([df[df.columns[0]], df[df.columns[22:]]], axis=1)

但我希望有更好的方法来做到这一点!我知道如果我这样做 parse_cols=[0, 22,..,37] 我可以做到,但是对于大型数据集这没有意义。

我也这样做了:

s = pd.Series(0)
s[1]=22
for i in range(2,14):
    s[i]=s[i-1]+1
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = s)

但它读取的前 15 列是 s 的长度。

【问题讨论】:

您必须生成一个列列表并将其传递给parse_cols,例如parse_cols=[0, 22,23,24.....,37] 而不是你现在在做什么 不知道为什么这不起作用,这可能是一个错误,当你传递一个硬编码列表时会发生什么:df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = [0,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37)? @EdChum,如果通过硬编码列表,它可以工作。 在这种情况下生成一个列表而不是一个系列 【参考方案1】:

您可以像这样使用列索引(字母):

import pandas as pd
import numpy as np
file_loc = "path.xlsx"
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], usecols="A,C:AA")
print(df)

Corresponding documentation:

usecols : int、str、list-like 或 callable default None

如果没有,则解析所有列。

如果 str,则表示 Excel 列字母和列范围的逗号分隔列表(例如“A:E”或“A,C,E:F”)。范围包括两边。

如果是int列表,则表示要解析的列号列表。

如果是字符串列表,则表示要解析的列名列表。

0.24.0 版中的新功能。

如果可调用,则根据它评估每个列名,如果可调用返回 True,则解析该列。

根据上述行为返回列的子集。

0.24.0 版中的新功能。

【讨论】:

需要注意的是,“名称”应该读作“excel中的名称”,而不是您可以选择或用作标题的那些。文档对此并不清楚,但值得一提的是,这让我有些头疼。【参考方案2】:

“usecols”应该有所帮助,使用列范围(根据excel工作表,A,B ...等) 下面是例子

1.选定的列

df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A,C,F")

2。列范围和选定列

df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A:F,H")

3.多个范围

df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A:F,H,J:N")

4.列范围

df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A:N")

【讨论】:

按数字限制列的任何想法? @rluts,将usecols="A,C,F"替换为usecols=[0,2,5],列号范围内,usecols=range(2,9),根据需要请替换数字。【参考方案3】:

parse_cols 已弃用,请改用usecols

即:

df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], usecols = "A,C:AA")

【讨论】:

还要注意我今天遇到的这个错误/意外行为。 github.com/pandas-dev/pandas/issues/18273 看起来使用列 names 不适用于 Excel...

以上是关于python怎么从excel中读取数据?的主要内容,如果未能解决你的问题,请参考以下文章

xlrd实现从excel文件读取数据

C#从Excel中读取数据为空了,该怎么解决啊?

vb.net怎么从DataSet中读取一行的数据

oracle中只读取一条数据,怎么写

Excel用Python读取清洗后怎么写入数据

MFC VC++读取EXCEL文件