pandas:read_excel()和to_excel函数解析

read_excel()

加载函数为read_excel(),其具体参数如下。

read_excel(io, 
			sheetname=0, 
			header=0, 
			skiprows=None, 
			skip_footer=0, 
			index_col=None,
			names=None, 
			parse_cols=None, 
			parse_dates=False,
			date_parser=None,
			na_values=None,
			thousands=None, 
			convert_float=True, 
			has_index_names=None, 
			converters=None,
			dtype=None, 
			true_values=None, 
			false_values=None, 
			engine=None, 
			squeeze=False, 
			**kwds
	)

常用参数解析:

  • io : string, path object ; excel 路径。
  • sheetname : string, int, mixed list of strings/ints, or None, default 0 返回多表使用sheetname=[0,1],若sheetname=None是返回全表 注意:int/string 返回的是dataframe,而none和list返回的是dict of dataframe
  • header : int, list of ints, default 0 指定列名行,默认0,即取第一行,数据为列名行以下的数据 若数据不含列名,则设定 header = None
  • skiprows : list-like,Rows to skip at the beginning,省略指定行数的数据
  • skip_footer : int,default 0, 省略从尾部数的int行数据
  • index_col : int, list of ints, default None指定列为索引列,也可以使用u”strings”,读取的时候指定 索引
  • names : array-like, default None, 指定列的名字。
  • na_values:指定原数据集中哪些特征的值作为缺失值。
  • na_filter : boolean, default True;是否检查丢失值(空字符串或者是空值)。对于大文件来说数据集中没有空值,设定na_filter=False可以提升读取速度。
  • thousands:指定原始数据中的千位符
  • comment:指定注释符,在读取数据时,如果碰到首行指定的注释符,则跳过该行。
  • parse_datas:指明日期列,为字符串构成的 list;
    数据源:
sheet1:
ID  NUM-1   NUM-2   NUM-3
36901   142 168 661
36902   78  521 602
36903   144 600 521
36904   95  457 468
36905   69  596 695

sheet2:
ID  NUM-1   NUM-2   NUM-3
36906   190 527 691
36907   101 403 470

(1)函数原型

basestation ="F://pythonBook_PyPDAM/data/test.xls"
data = pd.read_excel(basestation)
print data

输出:是一个dataframe

      ID  NUM-1  NUM-2  NUM-3
0  36901    142    168    661
1  36902     78    521    602
2  36903    144    600    521
3  36904     95    457    468
4  36905     69    596    695

(2)sheet_name参数:返回多表使用sheetname=[0,1],若sheetname=None是返回全表 注意:int/string 返回的是dataframe,而none和list返回的是dict of dataframe

data_1 = pd.read_excel(basestation,sheet_name=[0,1])
print(data_1)
print(type(data_1))
'''
OrderedDict([(0,       ID  NUN-1  NUM-2  NUM-3
0  36901     45     78     95
1  36902     47     45     63
2  39603     85     47     21
3  39604     96     36     45
4  39605     25     89     15), 
(1,       ID  NUN-1  NUM-2  NUM-3
0  36906     58     52     47
1  36907     66     26     14)])
<class 'collections.OrderedDict'>

(3)header参数:指定列名行,默认0,即取第一行,数据为列名行以下的数据 若数据不含列名,则设定 header = None ,注意这里还有列名的一行。

data = pd.read_excel(basestation,header=None)
print(data)
'''
       0      1      2      3
0     ID  NUN-1  NUM-2  NUM-3
1  36901     45     78     95
2  36902     47     45     63
3  39603     85     47     21
4  39604     96     36     45
5  39605     25     89     15
'''
data = pd.read_excel(basestation,header=[3])
print(data)
'''
   39603  85     47     21   
0  39604     96     36     45
1  39605     25     89     15
'''

(4) skiprows参数:省略指定行数的数据

data = pd.read_excel(basestation,skiprows = [1])
print(data)
'''
      ID  NUN-1  NUM-2  NUM-3
0  36902     47     45     63
1  39603     85     47     21
2  39604     96     36     45
3  39605     25     89     15
'''

(5)skip_footer参数:省略从尾部数的int行的数据

data = pd.read_excel(basestation, skip_footer=3)
print(data)
'''
      ID  NUN-1  NUM-2  NUM-3
0  36901     45     78     95
1  36902     47     45     63
'''

(6)index_col参数:指定列为索引列,也可以使用u”strings”

data = pd.read_excel(basestation, index_col="NUM-3")
print(data)
'''
          ID  NUN-1  NUM-2
NUM-3                     
95     36901     45     78
63     36902     47     45
21     39603     85     47
45     39604     96     36
15     39605     25     89
'''

(7)names参数: 指定列的名字。

data = pd.read_excel(basestation,names=["a","b","c","e"])
print(data)
'''
       a   b   c   e
0  36901  45  78  95
1  36902  47  45  63
2  39603  85  47  21
3  39604  96  36  45
4  39605  25  89  15
'''

8)nrows读取指定的几行数据

data = pd.read_excel(basestation, nrows=3)
print(data)
'''
      ID  NUN-1  NUM-2  NUM-3
0  36901     45     78     95
1  36902     47     45     63
2  39603     85     47     21
'''

9)usecols:读取指定的列, 也可以通过名字或索引值(指定需要读取原数据集中的哪些变量名,以列表传入。)

data = pd.read_excel(basestation, usecols=2)
print(data)
'''
      ID  NUN-1  NUM-2
0  36901     45     78
1  36902     47     45
2  39603     85     47
3  39604     96     36
4  39605     25     89
'''

to_excel()

存储函数为pd.DataFrame.to_excel(),注意,必须是DataFrame写入excel, 即Write DataFrame to an excel sheet。其具体参数如下:

to_excel(self, excel_writer, sheet_name='Sheet1', na_rep='', float_format=None,columns=None, header=True, index=True, index_label=None,startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None,
inf_rep='inf', verbose=True, freeze_panes=None)

数据源:

    ID  NUM-1   NUM-2   NUM-3
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 

加载数据:
basestation ="./ex.xls"
basestation_end ="./test_end.xls"
data = pd.read_excel(basestation)

(1)参数excel_writer,输出路径。

data.to_excel(basestation_end)

(2)sheet_name,将数据存储在excel的那个sheet页面。

data.to_excel(basestation_end,sheet_name="sheet2")

(3)na_rep,缺失值填充

data.to_excel(basestation_end,na_rep="NULL")

在这里插入图片描述
(4) colums参数: sequence, optional,Columns to write 选择输出的的列。

data.to_excel(basestation_end,columns=["ID"])

在这里插入图片描述
(5)header 参数: boolean or list of string,默认为True,可以用list命名列的名字。header = False 则不输出题头。

data.to_excel(basestation_end,header=["a","b","c","d"])

在这里插入图片描述
header = False 则不输出题头

data.to_excel(basestation_end,header=False,columns=["ID"])

在这里插入图片描述
(6)index : boolean, default True Write row names (index)
默认为True,显示index,当index=False 则不显示行索引(名字)。
index_label : string or sequence, default None
设置索引列的列名。

data.to_excel(basestation_end,index=False)

在这里插入图片描述
index_label设置索引列的列名

data.to_excel(basestation_end,index_label=["f"])

在这里插入图片描述

  1. 写入excel,自定义索引

    data={'ID':[1,2,3,4],
          'year':[2000,2001,2002,2003],
          'pop':[3.7,3.6,2.4,0.9]}
    df=pd.DataFrame(data)
    print(df)
    '''
       ID  year  pop
    0   1  2000  3.7
    1   2  2001  3.6
    2   3  2002  2.4
    3   4  2003  0.9
    '''
    df.to_excel('text.xls')
    

    在这里插入图片描述

    data={'ID':[1,2,3,4],
          'year':[2000,2001,2002,2003],
          'pop':[3.7,3.6,2.4,0.9]}
    df=pd.DataFrame(data)
    df=df.set_index('ID')
    df.to_excel('text.xls')
    

    在这里插入图片描述

  2. 查看行数,列数,列名,查看部分数据

    people=pd.read_excel('People.xlsx')
    #查看形状
    print(people.shape)
    print('***********')
    #查看列名
    print(people.columns)
    print('***********')
    # 查看部分数
    print(people.head(3))         #head()默认前5行
    print('***********')
    print(people.tail())          #默认后5行
    '''
    (19972, 6)
    ***********
    Index(['ID', 'Type', 'Title', 'FirstName', 'MiddleName', 'LastName'], dtype='object')
    ***********
       ID      Type Title FirstName MiddleName    LastName
    0   1  Employee   NaN       Ken          J     Sánchez
    1   2  Employee   NaN     Terri        Lee       Duffy
    2   3  Employee   NaN   Roberto        NaN  Tamburello
    ***********
              ID                 Type Title FirstName MiddleName    LastName
    19967  20773  Individual Customer   NaN   Crystal        NaN         Guo
    19968  20774  Individual Customer   NaN  Isabella          F  Richardson
    19969  20775  Individual Customer   NaN   Crystal          S          He
    19970  20776  Individual Customer   NaN   Crystal        NaN       Zheng
    19971  20777  Individual Customer   NaN   Crystal        NaN          Hu
    '''
    
  3. 读取的数据无表头,为其添加新的表头并保存
    在这里插入图片描述

    people=pd.read_excel('People.xlsx',header=None)
    people.columns=['id', 'type', 'title', 'First', 'Middle', 'Last']
    print(people.columns)
    #Index(['id', 'type', 'title', 'First', 'Middle', 'Last'], dtype='object')
    #默认添加行索引  ,可以重新指定
    people=people.set_index('id')
    people.to_excel('people2.xls')
    

    在这里插入图片描述

  4. 指定列为索引,避免自动pands再生成新的索引

    #指定某列为索引  ,pands就不会再自动生成索引
    people=pd.read_excel('people2.xls',index_col='id')
    

Pandas将多个Sheet写入到本地同一Excel文件中

import pandas as pd
 
#读取两个表格
data1=pd.read_excel('文件路径')
data2=pd.read_excel('文件路径')
 
#将两个表格输出到一个excel文件里面
writer=pd.ExcelWriter('D:新表.xlsx')

data1.to_excel(writer,sheet_name='sheet1')
data2.to_excel(writer,sheet_name='sheet2')
 
#必须运行writer.save(),不然不能输出到本地
writer.save()

在这里插入图片描述

with pd.ExcelWriter(r'C:\Users\数据\Desktop\data\test2.xls') as writer:
    df1.to_excel(writer, sheet_name='df1')
    df2.to_excel(writer, sheet_name='df2')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值