Python数据分析:pandas玩转Excel (二)
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 (二)的更多相关文章
- 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化
继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...
- Python数据分析--Pandas知识点(二)
本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...
- Python数据分析--Pandas知识点(三)
本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...
- 用Python的pandas框架操作Excel文件中的数据教程
用Python的pandas框架操作Excel文件中的数据教程 本文的目的,是向您展示如何使用pandas 来执行一些常见的Excel任务.有些例子比较琐碎,但我觉得展示这些简单的东西与那些你可以在其 ...
- Python数据分析Pandas库之熊猫(10分钟二)
pandas 10分钟教程(二) 重点发法 分组 groupby('列名') groupby(['列名1','列名2',.........]) 分组的步骤 (Splitting) 按照一些规则将数据分 ...
- Python数据分析-Pandas(Series与DataFrame)
Pandas介绍: pandas是一个强大的Python数据分析的工具包,是基于NumPy构建的. Pandas的主要功能: 1)具备对其功能的数据结构DataFrame.Series 2)集成时间序 ...
- Python数据分析:pandas玩转Excel (一)
目录 1 pandas简介 2 导入 3 使用 4 读取.写入 1 pandas简介 1.Pandas是什么? Pandas是一个强大的分析结构化数据的工具集: 它的使用基础是Numpy(提供高性能的 ...
- Python数据分析:pandas玩转Excel(三)
将对象写入Excel工作表. 要将单个对象写入 Excel .xlsx 文件,只需指定目标文件名即可.要写入多个工作表,必须创建具有目标文件名的ExcelWriter对象,并在文件中指定要写入的工作表 ...
- Python数据分析 Pandas模块 基础数据结构与简介(二)
重点方法 分组:groupby('列名') groupby(['列1'],['列2'........]) 分组步骤: (spiltting)拆分 按照一些规则将数据分为不同的组 (Applying)申 ...
随机推荐
- Java大数据秋招面试题
以下为整理的自己秋招遇到的面试题:主要是Java和大数据相关题型:根据印象整理了下,有些记不起来了. 死锁.乐观锁.悲观锁synchronized底层原理及膨胀机制ReetrantLock底层原理,源 ...
- ubuntu 使用 vsftpd 基于系统用户配置相互隔离的 ftp (ftps) 服务
我们在日常使用 UbuntuServer 服务器时,经常会直接使用基于 ssh 的 sftp 连接服务器直接进行文件上传和下载,不过这个方式其实有一定的安全隐患,当一个团队有多个人员,需要连接服务器 ...
- 面试被问为什么使用Spring Boot?答案好像没那么简单
面试官:项目中有使用Spring Boot吗? 小小白:用过. 面试官:说一下为什么要使用Spring Boot? 小小白:在使用Spring框架进行开发的过程中,需要配置很多Spring框架包的依赖 ...
- 绕WAF文章收集
在看了bypassword的<在HTTP协议层面绕过WAF>之后,想起了之前做过的一些研究,所以写个简单的短文来补充一下文章里“分块传输”部分没提到的两个技巧. 技巧1 使用注释扰乱分块数 ...
- GitHub上Asp.Net Core的源代码
记录,备查. https://github.com/aspnet/AspNetCore/tree/master/src
- CF#637 C. Nastya and Strange Generator
C. Nastya and Strange Generator 题意 有一个随机全排列生成器,给出你一个全排列,让判断是否可以通过这个生成器产生. 生成器工作方式: 第i步为数字i寻找位置pos. 首 ...
- CodeForces-650B Image Preview 二分+模拟
CodeForces-650B Image Preview 题意 手机里有n张图片,打开相机出现的是第一张,第一张右滑得到第n张,同理第n张左滑得到第1张,翻页耗费a秒,看照片耗费1s,但是照片有横屏 ...
- Selenium + Python + Chrome 自动化测试 环境搭建
一.下载Python 相关的教程很多,此处不详细记录了,下面是官网下载地址: https://www.python.org/downloads/ 我使用的python版本为 Python 3.6.1 ...
- js canvas压缩图片和jQuery ajax上传图片简单demo
原来用的插件,里面东西太乱了,一会jq,一会原生js,本来原生js就不熟,看起来更难受,而且感觉好多东西都是没用的,而且后端php转存文件一直不是很熟悉,正好一起整理一下.就是很简单的一个demo,如 ...
- SunOS下root账户无法执行crontab问题
SunOS下root账户无法执行crontab问题 直接步入正题,处理方法如下: 1.查看可执行crontab的用户: more /etc/cron.d/cron.deny 2.修改crontab ...