1 对Excel文件的操作

方法一:

使用xlrd库或者xlwt库进行对excel表格的操作读与写;

方法二:

pandas库同样支持excel的读写操作;且更加简便。

2 pd.read_excel( )的参数

读Excel文件

df=pd.read_excel(io,
sheet_name=0, # 工作表名称
header=0, # 指定作为列名的行
names=None, # 指定列的名字,传入一个list数据
index_col=None, # 指定列为索引列
usecols=None, # 读取指定列
squeeze=False, # squeeze为True时,返回Series,反之返回DataFrame
dtype=None, # 设置数据类型
engine=None,
converters=None, # 强制规定列数据类型
true_values=None,
false_values=None,
skiprows=None, # 省略指定行数的数据,从第一行开始
nrows=None, # 需要读取的行数
na_values=None,
parse_dates=False, # 解析指定参数为日期
date_parser=None,
thousands=None,
comment=None,
skipfooter=0, # 跳过末尾n行,从尾部数的行开始
convert_float=True,
**kwds)

2.1 参数(全)

1.**io **:str, bytes, ExcelFile, xlrd.Book, path object, or file-like object;说白了,读取文件存储路径的文件

Excel文件的存储路径

import pandas as pd
io = "D:/项目/资料/Books.xlsx"

2.sheet_name :str, int, list, or None, default 0 ;说白了,要读取的工作表名

字符串用于工作表名称。整数用于零索引工作表位置。字符串/整数列表用于请求多张纸。指定无以获取所有工作表。

可用案例:

  • Defaults to 0:第一个工作表作为DataFrame
  • 1:第二个工作表作为DataFrame
  • "Sheet1":加载名称为"Sheet1"的工作表
  • [0, 1, "Sheet5"]:加载第一,第二和名为“ Sheet5”的工作表作为DataFrame的字典
  • None:所有工作表。
import pandas as pd
io = "D:/项目/资料/Books.xlsx" df = pd.read_excel(io,sheet_name="Sheet1")
print(df)

结果:

   ID      Name   喜欢   折扣  价格
0 1 Book_001 10 0.5 11
1 2 Book_002 20 0.5 12
2 3 Book_003 30 0.5 12
3 4 Book_004 40 0.5 12
4 5 Book_005 50 0.5 12

3.header:int, list of int, default 0; 说白了,指定哪一行作为列名,一般可以不写,省略

  • 指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;
  • header = [0,1] :前两行作为多重索引列名
  • 若数据不含列名,则设定 header = None;

4.names:array-like, default None; 说白了,指定列的名字 (array-like:类似数组,类数组)

  • 一般适用于Excel工作表缺少列名,或者需要重新定义列名的情况;
  • 注意:names的长度必须和Excel工作表列长度一致,否则会报错 ;
  • names=['a','b','c'] 把 a , b , c作为3个列的列名

5.index_col:int, list of int, default None;说白了,把哪一列作为索引

  • 可以是工作表列名称,如index_col = 'ID';
  • 可以是整型,如index_col = 0 ,把第一列作为索引
  • 可以是整型列表,index_col = [0,1,2],把第一、二、三列作为索引,并返回多重索引。

6.usecols:int, str, list-like, or callable default None; 说白了,读取哪些列

  • 如果为None,则解析所有列。

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

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

  • 如果列表是str,则表示要解析的列名称列表。

    0.24.0版中的新功能。

  • 如果可调用,则针对它评估每个列名称,如果可调用返回,则解析该列True

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

0.24.0版中的新功能。

7.squeeze:bool, default False;说白了,数据仅包含一列,就是返回一个一维数组,有返回值

  • squeeze = True ,说明数据仅包含一列,那么返回 一个 Series.
  • 反之返回DataFrame。

8.dtype:Type name or dict of column -> type, default None;说白了,就是设置数据类型

  • 数据或列的数据类型。
  • 例如 {‘a’: np.float64, ‘b’: np.int32} 使用对象保留存储在 Excel 中的数据,而不是解释 dtype。
  • 如果指定转换器,它们将应用 dtype型转换。
  • dtype = float意味着,把data数据中能转化为float的全部转化成float,不能转换的保持原来状态
pd.read_excel('tmp.xlsx', index_col=0,
... dtype={'Name': str, 'Value': float})
Name Value
0 string1 1.0
1 string2 2.0
2 #Comment 3.0

9.engine:str, default None;

如果 io 不是缓冲区或路径,则必须将此设置为标识 io。可接受的值为"None"、"xlrd"、"openpyxl"或"odf"。

10.converters:dict, default None;说白了,强制规定列数据类型

用于转换某些列中的值的函数的字典。键可以是整数或列标签,值是具有一个输入参数,Excel单元格内容并返回转换后的内容的函数。

  • converters = {'分数': str, '场次': int}, 将“分数”列数据类型强制规定为字符串(pandas默认将文本类的数据读取为整型),“场次”列强制规定为整型;
  • 主要用途:保留以文本形式存储的数字。

11.true_values:list, default None

值被认为 True

12.false_values:list, default None

值被认为 False.

13.skiprows:list-like;说白了,跳过指定的行

  • 在开头,要跳过的行(0索引)。

  • skiprows= 1 略去1行的数据,自上而下的开始略去数据的行

  • skiprows = [a, b, c],跳过第a+1,b+1,c+1行(索引从0开始);

  • skiprows= n, 跳过前n行;

14.nrows:int, default None;说白了,需要读取的行数

要读取的行数

New in version 0.23.0.

15.na_values:scalar, str, list-like, or dict, default None

识别为NA / NaN的其他字符串。如果dict通过,则按列显示特定的NA值。默认情况下,以下值解释为NaN:'',‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’.

16.keep_default_na:bool, default True

读取数据时是否包括默认的NaN值。根据是否传入na_values,其行为如下:

  • 如果keep_default_na为 True,并且指定了na_values,则na_values将被追加到用于分析的默认 NaN 值中。
  • 如果keep_default_na为 True,并且未指定na_values,则仅使用默认 的NaN 值进行分析。
  • 如果keep_default_na为 false,并且指定了na_values,则仅使用na_values指定的 NaN 值进行分析。
  • 如果keep_default_na为 False,并且未指定na_values,则不会将任何字符串解析为 NaN。

请注意,如果na_filter以 False 格式传入,则keep_default_na和na_values参数将被忽略。

17.na_filterbool, default True

检测缺失值标记(空字符串和na_values的值)。在没有任何NAs的数据中,传递na_filter = False可以提高读取大文件的性能。

18.verbose:bool, default False

指示放置在非数字列中的NA值的数量。

19.parse_dates:bool, list-like, or dict, default False

行为如下:

  • Bool。如果为 True -> 请尝试分析索引。
  • list of int or names。例如,如果 [1, 2, 3] -> 尝试将列 1、2、3 列分别解析为单独的日期列。
  • list of lists列表清单。例如,如果 [[1, 3]] -> 合并列 1 和 3 并解析为单个日期列。
  • dict,例如 {‘foo’ : [1, 3]} -> 将第1、3列解析为日期,并调用结果'foo'

如果列或索引包含不可解析的日期,则整个列或索引将保留原样作为对象数据类型返回。如果您不想将某些单元格解析为日期,只需在Excel中将其类型更改为“文本”即可。对于非标准的日期时间解析,请pd.to_datetime在之后使用pd.read_excel

注意:对于 iso8601 格式的日期,存在一条快速路径。

20.date_parser:function, optional

用于将字符串列序列转换为日期时间实例数组的函数。默认使用dateutil.parser.parser进行转换。Pandas 将尝试以三种不同的方式调用date_parser,如果发生异常,则前进到下一个:1)将一个或多个数组(由parse_dates定义)作为参数传递;2)将parse_dates定义的列中的字符串值连接(逐行)到单个数组中并将其传递;和3)使用一个或多个字符串(对应于parse_dates定义的列)作为参数,为每一行调用date_parser。

21.thousands:str, default None

千位分隔符,用于将字符串列解析为数字。请注意,此参数仅对于在Excel中存储为TEXT的列是必需的,无论显示格式如何,任何数字列都将自动解析。

22comment:str, default None

注释掉其余部分。将一个或多个字符传递给此参数以指示输入文件中的注释。注释字符串和当前行末尾之间的所有数据都将被忽略。

23.skipfooter:int, default 0 ;说白了,跳过末尾n行

末尾要跳过的行(0索引)。

24.convert_float:bool, default True

将整数浮点数转换为int(即1.0 –> 1)。如果为False,则所有数值数据都将以浮点数形式读取:Excel将所有数字存储为浮点数。

25.mangle_dupe_cols:bool, default True

重复的列将指定为“ X”,“ X.1”,...“ X.N”,而不是“ X” ...“ X”。如果列中的名称重复,则传递False将导致数据被覆盖。

26.kwds:optional

可选的关键字参数传递给TextFileReader

2.2 Returns 返回值

  • DataFrame or dict of DataFrames

    来自传入的Excel文件的DataFrame。有关何时返回DataFrames字典的更多信息,请参见sheet_name参数中的注释。

2.3 例子

  • 可以使用文件名作为字符串或打开的文件对象来读取文件
>>> pd.read_excel('tmp.xlsx', index_col=0)
Name Value
0 string1 1
1 string2 2
2 #Comment 3
>>> pd.read_excel(open('tmp.xlsx', 'rb'),
... sheet_name='Sheet3')
Unnamed: 0 Name Value
0 0 string1 1
1 1 string2 2
2 2 #Comment 3
  • 可以通过index_col和header参数指定索引和标头
>>> pd.read_excel('tmp.xlsx', index_col=None, header=None)
0 1 2
0 NaN Name Value
1 0.0 string1 1
2 1.0 string2 2
3 2.0 #Comment 3
  • 推断列类型,但可以显式指定
>>> pd.read_excel('tmp.xlsx', index_col=0,
... dtype={'Name': str, 'Value': float})
Name Value
0 string1 1.0
1 string2 2.0
2 #Comment 3.0
  • True、False 和 NA 值以及数千个分隔符具有默认值,但也可以显式指定。提供您希望的值作为字符串或字符串列表!
>>> pd.read_excel('tmp.xlsx', index_col=0,
... na_values=['string1', 'string2'])
Name Value
0 NaN 1
1 NaN 2
2 #Comment 3
  • 可以使用注释kwarg 跳过 Excel 输入文件中的注释行
>>> pd.read_excel('tmp.xlsx', index_col=0, comment='#')
Name Value
0 string1 1.0
1 string2 2.0
2 None NaN

欢迎关注公众号【喵哥解说】,有1000G关于Python资料等你领取,感谢阅读。

Python数据分析:pandas玩转Excel (二)的更多相关文章

  1. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...

  2. Python数据分析--Pandas知识点(二)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...

  3. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  4. 用Python的pandas框架操作Excel文件中的数据教程

    用Python的pandas框架操作Excel文件中的数据教程 本文的目的,是向您展示如何使用pandas 来执行一些常见的Excel任务.有些例子比较琐碎,但我觉得展示这些简单的东西与那些你可以在其 ...

  5. Python数据分析Pandas库之熊猫(10分钟二)

    pandas 10分钟教程(二) 重点发法 分组 groupby('列名') groupby(['列名1','列名2',.........]) 分组的步骤 (Splitting) 按照一些规则将数据分 ...

  6. Python数据分析-Pandas(Series与DataFrame)

    Pandas介绍: pandas是一个强大的Python数据分析的工具包,是基于NumPy构建的. Pandas的主要功能: 1)具备对其功能的数据结构DataFrame.Series 2)集成时间序 ...

  7. Python数据分析:pandas玩转Excel (一)

    目录 1 pandas简介 2 导入 3 使用 4 读取.写入 1 pandas简介 1.Pandas是什么? Pandas是一个强大的分析结构化数据的工具集: 它的使用基础是Numpy(提供高性能的 ...

  8. Python数据分析:pandas玩转Excel(三)

    将对象写入Excel工作表. 要将单个对象写入 Excel .xlsx 文件,只需指定目标文件名即可.要写入多个工作表,必须创建具有目标文件名的ExcelWriter对象,并在文件中指定要写入的工作表 ...

  9. Python数据分析 Pandas模块 基础数据结构与简介(二)

    重点方法 分组:groupby('列名') groupby(['列1'],['列2'........]) 分组步骤: (spiltting)拆分 按照一些规则将数据分为不同的组 (Applying)申 ...

随机推荐

  1. codeforce 272B Dima and Sequence

    B. Dima and Sequence Dima got into number sequences. Now he's got sequence a1, a2, ..., an, consisti ...

  2. linux下编译boost的多线程程序

    linux下面用boost库进行多线程编程,一开始总是编译不成功,花了好多的时间. 下面是一段小示例代码: //start from the very beginning,and to create ...

  3. 小白,你要的Java抽象类,操碎了心!

    自从给小白写了两篇科普性质的文章后,我就有点一发不可收拾,觉得很有必要继续写下去.因为有读者留言"鼓励"我说,"二哥,你真的是为小白操碎了心啊!"我容易吗?我. ...

  4. OSG程序设计之更新回调

    更新回调(Update Callback)涉及到一个类:osg::NodeCallback.这个类重载了函数调用操作符.当回调动作发生时,将会执行这一操作符的内容. 如果节点绑定了更新回调函数,那么在 ...

  5. 初识Matlab及界面认识

    通过本章节的学习,需要掌握: MATLAB语言是什么 MATLAB在互联网语言中地位与应用 目标:利用MATLAB进行问题求解的基本规律.够使用MATLAB作为专业应用的工具. 1.什么叫计算? (1 ...

  6. ssh框架整合时的延迟加载问题(no session问题)的分析以及解决方案

    当我们整合完三大框架,并采用hibernate的延迟加载方案时,会出现如下的异常: 现在对这个异常进行分析,如下图所示(模拟通过id查询用户信息的过程): 上图分析了为什么会出现no session的 ...

  7. LeetCode--Array--Remove Element && Search Insert Position(Easy)

    27. Remove Element (Easy)# 2019.7.7 Given an array nums and a value val, remove all instances of tha ...

  8. ssh chroot 设置

    目的 让特定的用户登录linux服务器后,对其操作权限进行限制: 不能使用任何方式杀掉服务器现有的进程 最好只能查看相关的目录和文件 最好只能运行特定的命令,比如cat.ls.tail等 场景模拟 一 ...

  9. 黑马程序员_毕向东_Java基础视频教程——位运算练习(随笔)

    位运算(练习) 最有效率的方式算出 2乘以 8等于几 2 << 3 = 2 * 2^3 = 2 * 8 = 16 对于两个整数变量的值进行互换(不需要第三方变量) class Test { ...

  10. java 获取请求ip,服务本地ip

    /** * 获取请求IP * * @param request * @return */ public static String getRequestIpAddress(HttpServletReq ...