Windows下Python使用Pandas模块操作Excel文件的教程
安装Python环境 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环境,则代表安装成功。
可以看到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完全安装完毕后还依赖于 ) 导入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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |