Windows下Python使用Pandas模塊操作Excel文件的教程
安裝Python環(huán)境
ANACONDA是一個(gè)Python的發(fā)行版本,包含了400多個(gè)Python最常用的庫,其中就包括了數(shù)據(jù)分析中需要經(jīng)常使用到的Numpy和Pandas等。更重要的是,不論在哪個(gè)平臺(tái)上,都可以一鍵安裝,自動(dòng)配置好環(huán)境,不需要用戶任何的額外操作,非常方便。因此,安裝Python環(huán)境就只需要到ANACONDA網(wǎng)站上下載安裝文件,雙擊安裝即可。
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.
如上所示,如果成功進(jìn)入了Python環(huán)境,則代表安裝成功。
使用pandas處理excel
在本文我以log.xls文件為例,來說明如何使用pandas處理excel文件。log.xls文件的內(nèi)容如下所示:
可以看到log.xls中包含了多個(gè)的表(sheet),每個(gè)表主要包括了member和activity兩個(gè)屬性,相同的member ID的數(shù)據(jù)相鄰的排列在一起,并且最后一行是前面所有的匯總。這里,我們假設(shè)需要提取出每個(gè)member匯總的信息,即提取每個(gè)member連續(xù)出現(xiàn)的最后一行的數(shù)據(jù)。如何實(shí)現(xiàn)呢?
這里我們就來隆重介紹Pandas,,從https://pypi.python.org/pypi/pandas/0.16.2官方下載,cmd命令行進(jìn)入下載解壓目錄,
python setup.py install
安裝。
(PS:python的大數(shù)據(jù)模塊pandas完全安裝完畢后還依賴于
• NumPy: 1.6.1 or higher
• python-dateutil 1.5
• pytz
這三個(gè)模塊也許要安裝。
可選擇依賴有(可以根據(jù)需要安裝)
• 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.
)
導(dǎo)入pandas模塊:
import pandas as pd
使用import讀入pandas模塊,并且為了方便使用其縮寫pd指代。
讀入待處理的excel文件:
df = pd.read_excel('log.xls')
通過使用read_excel函數(shù)讀入excel文件,后面需要替換成excel文件所在的路徑。讀入之后變?yōu)閜andas的DataFrame對(duì)象。DataFrame是一個(gè)面向列(column-oriented)的二維表結(jié)構(gòu),且含有列表和行標(biāo),對(duì)excel文件的操作就轉(zhuǎn)換為對(duì)DataFrame操作。另外,如果一個(gè)excel含有多個(gè)表,如果你只想讀入其中一個(gè)可以:
df = pd.read_excel('log.xls', sheetname=1)
增加了一個(gè)參數(shù)sheetname,表示的是第幾個(gè)表,從0開始計(jì)數(shù)。我上面設(shè)置的是1,也就是第二個(gè)表。
讀入之后,可以先查看表頭信息和每一列的數(shù)據(jù)類型:
df.dtypes
Member object Unnamed: 1 float64 Unnamed: 2 float64 Unnamed: 3 float64 Unnamed: 4 float64 Unnamed: 5 float64 家內(nèi)外活動(dòng)類型 object Unnamed: 7 object activity object dtype: object
提取每個(gè)member連續(xù)出現(xiàn)的最后一行數(shù)據(jù):
new_df = df.drop_duplicates(subset='Member', keep='last')
以上語句的意思是根據(jù)Member字段去除掉多余的行,并且保留相同行的最后一行數(shù)據(jù)。這些就得到了每一個(gè)member最后一行的數(shù)據(jù)了,返回了經(jīng)過篩選后的DataFrame。
接下來需要將處理后的結(jié)果,保存為excel文件:
out = pd.ExcelWriter('output.xls') new_df.to_excel(out) out.save()
output.xls是你要保存的文件名,可以任取;然后將DataFrame的內(nèi)容保存到該文件,最后保存該文件到系統(tǒng)的磁盤上。
接下來,你就可以在當(dāng)前目錄看到一個(gè)新的文件,可以直接使用excel打開查看。
Pandas還提供了很多的API,可以根據(jù)具體的任務(wù),查找API文檔,找到合適的函數(shù)來完成任務(wù)。
附:一個(gè)完整的示例
#coding=utf-8 import pandas as pd # 讀入excel文件中的第2個(gè)表 df = pd.read_excel('log.xls', sheetname=1) # 查看表的數(shù)據(jù)類型 print df.dtypes # 查看Member列的數(shù)據(jù) print df['Member'] ''' # 新建一列,每一行的值是Member列和activity列相同行值的和 for i in df.index: df['activity_2'][i] = df['Member'][i] + df['activity'][i] ''' # 根據(jù)Member字段去除掉多余的行,并且保留相同行的最后一行數(shù)據(jù) new_df = df.drop_duplicates(subset='Member', keep='last') # 導(dǎo)出結(jié)果 out = pd.ExcelWriter('output.xls') new_df.to_excel(out) out.save()
相關(guān)文章
Python面向?qū)ο缶幊讨械念惡蛯?duì)象學(xué)習(xí)教程
這篇文章主要介紹了Python面向?qū)ο缶幊讨械念惡蛯?duì)象學(xué)習(xí)教程,面向?qū)ο笫荘ython的基礎(chǔ)特性,其中的類與對(duì)象的特性和使用方法是Python學(xué)習(xí)當(dāng)中的基本功,需要的朋友可以參考下2015-03-03matplotlib對(duì)象拾取事件處理的實(shí)現(xiàn)
這篇文章主要介紹了matplotlib對(duì)象拾取事件處理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Python Pandas學(xué)習(xí)之?dāng)?shù)據(jù)離散化與合并詳解
Pandas是python的一個(gè)數(shù)據(jù)分析包,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。本文將通過示例詳細(xì)為大家介紹一下Pandas的數(shù)據(jù)離散化與合并,需要的可以參考一下2022-02-02Python實(shí)現(xiàn)視頻字幕時(shí)間軸格式轉(zhuǎn)換的示例
本文主要介紹了Python實(shí)現(xiàn)視頻字幕時(shí)間軸格式轉(zhuǎn)換的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11使用scrapy ImagesPipeline爬取圖片資源的示例代碼
這篇文章主要介紹了使用scrapy ImagesPipeline爬取圖片資源的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09