Windows下Python使用Pandas模块操作Excel文件的教程


Posted in Python onMay 31, 2016

安装Python环境
ANACONDA是一个Python的发行版本,包含了400多个Python最常用的库,其中就包括了数据分析中需要经常使用到的Numpy和Pandas等。更重要的是,不论在哪个平台上,都可以一键安装,自动配置好环境,不需要用户任何的额外操作,非常方便。因此,安装Python环境就只需要到ANACONDA网站上下载安装文件,双击安装即可。
ANACONDA官方下载地址:https://www.continuum.io/downloads
安装完成之后,使用windows + r键打开Windows命令行,输入ipython,然后回车:

Python 2.7.11 |Anaconda 2.5.0 (64-bit)| (default, Jan 29 2016, 14:26:21) [MSC v.1500 64 bit (AMD64)]

Type "copyright", "credits" or "license" for more information.

IPython 4.0.3 -- An enhanced Interactive Python.

?     -> Introduction and overview of IPython's features.

%quickref -> Quick reference.

help   -> Python's own help system.

object?  -> Details about 'object', use 'object??' for extra details.

如上所示,如果成功进入了Python环境,则代表安装成功。

使用pandas处理excel
在本文我以log.xls文件为例,来说明如何使用pandas处理excel文件。log.xls文件的内容如下所示:

Windows下Python使用Pandas模块操作Excel文件的教程

可以看到log.xls中包含了多个的表(sheet),每个表主要包括了member和activity两个属性,相同的member ID的数据相邻的排列在一起,并且最后一行是前面所有的汇总。这里,我们假设需要提取出每个member汇总的信息,即提取每个member连续出现的最后一行的数据。如何实现呢?

这里我们就来隆重介绍Pandas,,从https://pypi.python.org/pypi/pandas/0.16.2官方下载,cmd命令行进入下载解压目录,

python setup.py install

安装。

(PS:python的大数据模块pandas完全安装完毕后还依赖于
• NumPy: 1.6.1 or higher
• python-dateutil 1.5
• pytz
这三个模块也许要安装。
可选择依赖有(可以根据需要安装)
• SciPy: miscellaneous statistical functions
• PyTables: necessary for HDF5-based storage
• SQLAlchemy: for SQL database support. Version 0.8.1 or higher recommended.
• matplotlib: for plotting
• statsmodels
? Needed for parts of pandas.stats
• openpyxl, xlrd/xlwt
? openpyxl version 1.6.1 or higher, but lower than 2.0.0
? Needed for Excel I/O
• XlsxWriter
? Alternative Excel writer.
• boto: necessary for Amazon S3 access.

导入pandas模块:

import pandas as pd

使用import读入pandas模块,并且为了方便使用其缩写pd指代。

读入待处理的excel文件:

df = pd.read_excel('log.xls')

通过使用read_excel函数读入excel文件,后面需要替换成excel文件所在的路径。读入之后变为pandas的DataFrame对象。DataFrame是一个面向列(column-oriented)的二维表结构,且含有列表和行标,对excel文件的操作就转换为对DataFrame操作。另外,如果一个excel含有多个表,如果你只想读入其中一个可以:

df = pd.read_excel('log.xls', sheetname=1)

增加了一个参数sheetname,表示的是第几个表,从0开始计数。我上面设置的是1,也就是第二个表。

读入之后,可以先查看表头信息和每一列的数据类型:

df.dtypes
输出如下:
Member     object
Unnamed: 1  float64
Unnamed: 2  float64
Unnamed: 3  float64
Unnamed: 4  float64
Unnamed: 5  float64
家内外活动类型    object
Unnamed: 7   object
activity    object
dtype: object

提取每个member连续出现的最后一行数据:

new_df = df.drop_duplicates(subset='Member', keep='last')

以上语句的意思是根据Member字段去除掉多余的行,并且保留相同行的最后一行数据。这些就得到了每一个member最后一行的数据了,返回了经过筛选后的DataFrame。

接下来需要将处理后的结果,保存为excel文件:

out = pd.ExcelWriter('output.xls')
new_df.to_excel(out)
out.save()

output.xls是你要保存的文件名,可以任取;然后将DataFrame的内容保存到该文件,最后保存该文件到系统的磁盘上。

接下来,你就可以在当前目录看到一个新的文件,可以直接使用excel打开查看。

Pandas还提供了很多的API,可以根据具体的任务,查找API文档,找到合适的函数来完成任务。

附:一个完整的示例

#coding=utf-8
import pandas as pd

# 读入excel文件中的第2个表
df = pd.read_excel('log.xls', sheetname=1)
# 查看表的数据类型
print df.dtypes
# 查看Member列的数据
print df['Member']

'''
# 新建一列,每一行的值是Member列和activity列相同行值的和
for i in df.index:
  df['activity_2'][i] = df['Member'][i] + df['activity'][i]
'''

# 根据Member字段去除掉多余的行,并且保留相同行的最后一行数据
new_df = df.drop_duplicates(subset='Member', keep='last')
# 导出结果
out = pd.ExcelWriter('output.xls')
new_df.to_excel(out)
out.save()
Python 相关文章推荐
探究数组排序提升Python程序的循环的运行效率的原因
Apr 01 Python
Python实现统计单词出现的个数
May 28 Python
Python函数式编程指南(二):从函数开始
Jun 24 Python
python: line=f.readlines()消除line中\n的方法
Mar 19 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
解决pycharm 安装numpy失败的问题
Dec 05 Python
Python类的动态绑定实现原理
Mar 21 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
May 14 Python
学会Python数据可视化必须尝试这7个库
Jun 16 Python
深入理解python中的浅拷贝和深拷贝
May 30 #Python
浅谈Python的文件类型
May 30 #Python
python中string模块各属性以及函数的用法介绍
May 30 #Python
Python 常用string函数详解
May 30 #Python
整理Python 常用string函数(收藏)
May 30 #Python
深入浅析python继承问题
May 29 #Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
May 28 #Python
You might like
PHP实现从远程下载文件的方法
2015/03/12 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
在Python中使用dict和set方法的教程
2015/04/27 Python
Python操作MongoDB详解及实例
2017/05/18 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python样条插值的实现代码
2018/12/17 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
草船借箭教学反思
2014/02/03 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书