Python读取外部数据之Excel文件读写

1. Excel文件简介

Excel是微软Office套件中最重要的工具之一,也是数据科学中常用的图形化工具。很多人仍然习惯于使用Excel进行数据分析。本节将学习如何使用Python读写Excel文件,以方便程序员与数据分析师之间的交流,只要你需要跟别人合作,这种交流几乎是不可避免的。 下面将使用Pandas提供的方法来处理Excel文件,实际上Pandas是通过集成xlrd和xlwt来分别完成读和写Excel的工作的。读者可以通过下面的方式来安装Pandas的这个模块:
      $pip install pandas
      $pip install xlrd
      $pip install xlwt

2. 读Excel文件

Excel文件最基本的组成部分就是Sheet,一个正常的Excel会拥有一个至多个Sheet,如果没有改过名字的话,应该是Sheet1、Sheet2、Sheet3等。所以读取Excel文件的第一种最基础的方法就是使用Pandas中的read_excel()方法,并且还须制定要读取的文件名及Sheet,示例代码如下:
      # !  /usr/bin/python
      # -*- coding: utf-8-*-

      from __future__ import print_function
      import pandas as pd
      from pandas import read_excel

      pd.set_option('display.max_columns',  4)
      pd.set_option('display.max_rows',  6)

      df = read_excel('/Users/jilu/Downloads/A0202.xls',  'Sheet1')
      print(df)

其运行结果如下:

    2-2  全国各民族分性别、受教育程度的6岁及以上人口Unnamed: 1 ... Unnamed: 23 Unnamed: 24
    0                        NaN        NaN     ...             NaN         NaN
    1                        NaN       单位:人     ...             NaN         NaN
    2                       民  族    6岁及以上人口     ...           NaN         NaN
    ..                       ...        ...     ...             ...         ...
    60                       基诺族      21014     ...             11           9
    61                  其他未识别的民族     574451     ...           132          52
    62               外国人加入中国国籍的
     1360     ...             5           5

    [63 rows x 25 columns]

可以看到,原始的Excel文件中有一些多余的空行,而且我们也不想在读取的数据中显示第一列的序号,那么将读取Excel的代码改为如下的形式:

      df  =  read_excel('/Users/jilu/Downloads/A0202.xls',   'Sheet1',   index_col=0,
      skiprows=3)

再次运行之后得到的结果是:

                   6岁及以上人口 Unnamed: 2     ...     Unnamed: 23 Unnamed: 24
      民  族                                ...
      NaN               合计          男     ...               男           女
      总  计      1242546122  633278387     ...         2351251     1787334
      汉  族      1140804980  581418089     ...         2258424     1697235
      ...              ...        ...     ...             ...         ...
      基诺族            21014      10648     ...              11           9
      其他未识别的民族      574451     297632     ...             132          52
      外国人加入中国国籍的        1360        514     ...               5           5

这一次就正常多了,在read_excel()函数中使用了index_col及skiprows这两个参数,前者是告诉程序哪一行是序号行,可以隐藏。第二个参数表示跳过Excel开头的几行,不去读取这些行的信息。
与打开普通文件的方式类似,也可以使用上下文管理器with打开Excel文件,如果一个Excel有多个Sheet,则可以使用下面的方法来打开:

      with pd.ExcelFile('/Users/jilu/Downloads/A0202.xls') as xls:
          for x in range(1,  2):
              df = read_excel(xls,  'Sheet{}'.format(x) ,  index_col=0,  skiprows=3)
              print(df)

其执行的结果就不再赘述了。

3. 写Excel文件

写Excel文件相对来说就更加简单一些,首先要创建一个Pandas的DataFrame的数据结构,然后调用DataFrame的to_excel()方法,参考下面的程序:

      df = pd.DataFrame([[1,  2,  3,  4],  [5,  6,  7,  8],  [9,  10,  11,  12]],
                        index=[0,  1,  2],  columns=list("ABCD"))
      df.to_excel('/Users/jilu/Downloads/test.xls')

我们可以使用由Python列表组成的列表代表一个表格,每一个外层列表中的元素都对应了Excel中的一行,除了需要被保存的数据之外,还需要指明每一行的索引及每一列的列名。这里遵循Excel的规则——行索引使用数字,列名使用大写字母。最终保存的文件test. xls的内容如图所示。
[插图]
图1 Python写入Excel例子

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值