Python数据分析:pandas玩转Excel(二)

简介: 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)


20200415172049427.png


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)


2020041517193848.png


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
目录
相关文章
|
6月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
4026 1
|
6月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
473 0
|
6月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
653 0
|
6月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
8月前
|
机器学习/深度学习 新能源 调度
电力系统短期负荷预测(Python代码+数据+详细文章讲解)
电力系统短期负荷预测(Python代码+数据+详细文章讲解)
710 1
|
8月前
|
缓存 API 网络架构
淘宝item_search_similar - 搜索相似的商品API接口,用python返回数据
淘宝联盟开放平台中,可通过“物料优选接口”(taobao.tbk.dg.optimus.material)实现“搜索相似商品”功能。该接口支持根据商品 ID 获取相似推荐商品,并返回商品信息、价格、优惠等数据,适用于商品推荐、比价等场景。本文提供基于 Python 的实现示例,包含接口调用、数据解析及结果展示。使用时需配置淘宝联盟的 appkey、appsecret 和 adzone_id,并注意接口调用频率限制和使用规范。
|
6月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
7月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
7月前
|
存储 JSON 算法
Python集合:高效处理无序唯一数据的利器
Python集合是一种高效的数据结构,具备自动去重、快速成员检测和无序性等特点,适用于数据去重、集合运算和性能优化等场景。本文通过实例详解其用法与技巧。
215 0
|
6月前
|
人工智能 Java Linux
Python高效实现Excel转PDF:无Office依赖的轻量化方案
本文介绍无Office依赖的Python方案,利用Spire.XLS、python-office、Aspose.Cells等库实现Excel与PDF高效互转。支持跨平台部署、批量处理、格式精准控制,适用于服务器环境及自动化办公场景,提升转换效率与系统稳定性。
716 7

推荐镜像

更多