python 第三方模塊之 pandas 操作 excel

python 解析 excel 對比

版本xls讀xlsx讀xls寫xlsx寫備注
xlrd1.1.0(2017年8月22日)2.0 之后不支持xlsx
xlwt1.3.0(2017年8月22日)
openpyxl2.6.2(2019年3月29日)
XlsxWriter1.2.1(2019年9月14日)
xlutils2.0.0(2019年6月9日)需xlrd/xlwt配合
pandas0.25.1(2019年8月22日)需xlrd/xlwt/openpyxl/xlsxwriter配合

簡介

Pandas是python的一個數據分析包,納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。

Pandas提供了大量能使我們快速便捷地處理數據的函數和方法。

Pandas官方文檔:https://pandas.pydata.org/pandas-docs/stable/

Pandas中文文檔:https://www.pypandas.cn

安裝

  1. pandas依賴處理Excel的xlrd模塊,所以我們需要提前安裝 xlrd,命令:pip install xlrd

  2. 安裝pandas模塊還需要一定的編碼環境,所以我們自己在安裝的時候,確保你的電腦有這些環境:Net.4 、VC-Compiler以及winsdk_web。

  3. 步驟1和2 準備好了之后,就可以開始安裝pandas了,命令:pip install pandas

pandas操作Excel表單

在這里插入圖片描述

簡單示例

import  pandas  as pd
from pandas import DataFrame# 讀
data = pd.read_excel('1.xlsx')# 查看所有的值
print(data.values)# 查看第一行的值
print(data.values[0])# 查看某一列所有的值
print(data['標題列1'].values)# 新增列
data['標題列3'] = None# 新增行
data.loc[3] = ['王五', 100, '男']# 刪除行:axis=0
data = data.drop([0,1], axis=0)# 刪除列:axis=1
data.drop('標題列3', axis=1)# 保存
DataFrame(data).to_excel('1.xlsx', sheet_name='Sheet1', index=False, header=True)

讀取excel

read_excel方法說明

pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False,dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, **kwds)io:excel文件
sheet_name:返回指定sheet,默認索引0返回第一個,也可用名稱,如果返回多個則可用列表,為None則返回全表
header:指定表頭,也可用列表指定多行
names:自定義列名,長度和Excel列長度必須一致
index_col:用作索引的列
usecols:讀取指定的列,參數為列表,如[0,1]表示第1和第2列

讀取Excel文件,得到的結果是一個二維矩陣

# 默認讀取第一個表單
df=pd.read_excel('1.xlsx')# 可以通過sheet_name來指定讀取的表單
df=pd.read_excel('1.xlsx',sheet_name='student')# 表格首行為無效數據 或 表格首行為空 ,header=1
rdexcle = pd.read_excel('1.xlsx',header=1)data=df.head() # 默認讀取前5行的數據
print("獲取到所有的值:\n{0}".format(data)) # 格式化輸出# 通過表單索引來指定要訪問的表單,0表示第一個表單
# 也可以采用表單名和索引的雙重方式來定位表單
# 也可以同時定位多個表單,方式都羅列如下所示
df=pd.read_excel('1.xlsx',sheet_name=['python','student']) # 可以通過表單名同時指定多個
# df=pd.read_excel('1.xlsx',sheet_name=0) # 可以通過表單索引來指定讀取的表單
# df=pd.read_excel('1.xlsx',sheet_name=['python',1]) # 可以混合的方式來指定
# df=pd.read_excel('1.xlsx',sheet_name=[1,2])  # 可以通過索引 同時指定多個
data=df.values # 獲取所有的數據,注意這里不能用head()方法哦~
print("獲取到所有的值:\n{0}".format(data))

查看屬性、列名、顯示前幾行、后幾行

data = pd.read_excel('1.xlsx') 
print('顯示表格的屬性:',data.shape)   # 打印顯示表格的屬性,幾行幾列
print('顯示表格的列名:',data.columns) # 打印顯示表格有哪些列名
# head() 默認顯示前5行,可在括號內填寫要顯示的條數
print('顯示表格前三行:',data.head(1)) 
# tail() 默認顯示后5行,可在括號內填寫要顯示的條數
print('顯示表格后五行:',data.tail())
data = pd.read_excel('lemon.xlsx') 
data.columns=['ID','NAME']         # 設置表頭
data.set_index('ID',inplace=True)  # inplace=True表示 在當前表上修改。不用再新建表

三、pandas操作Excel的行列

1:讀取指定的單行,數據會存在列表里面

# 讀取指定行
df=pd.read_excel('lemon.xlsx')  # 這個會直接默認讀取到這個Excel的第一個表單
data=df.ix[0].values#0表示第一行 這里讀取數據并不包含表頭,要注意哦!
print("讀取指定行的數據:\n{0}".format(data))

2:讀取指定的多行,數據會存在嵌套的列表里面:

df=pd.read_excel('lemon.xlsx')
data=df.ix[[1,2]].values  # 讀取指定多行的話,就要在ix[]里面嵌套列表指定行數
print("讀取指定行的數據:\n{0}".format(data))

3:讀取指定的行列:

df=pd.read_excel('lemon.xlsx')
data=df.ix[1,2]#讀取第一行第二列的值,這里不需要嵌套列表
print("讀取指定行的數據:\n{0}".format(data))

4:讀取指定的多行多列值:

df=pd.read_excel('lemon.xlsx')
data=df.ix[[1,2],['title','data']].values#讀取第一行第二行的title以及data列的值,這里需要嵌套列表
print("讀取指定行的數據:\n{0}".format(data))

5:獲取所有行的指定列

df=pd.read_excel('lemon.xlsx')
data=df.ix[:,['title','data']].values#讀所有行的title以及data列的值,這里需要嵌套列表
print("讀取指定行的數據:\n{0}".format(data))

6:獲取行號并打印輸出

df=pd.read_excel('lemon.xlsx')
print("輸出行號列表",df.index.values)輸出結果是:
輸出行號列表 [0 1 2 3]

7:獲取列名并打印輸出

df=pd.read_excel('lemon.xlsx')
print("輸出列標題",df.columns.values)運行結果如下所示:
輸出列標題 ['case_id' 'title' 'data']

8:獲取指定行數的值:

df=pd.read_excel('lemon.xlsx')
print("輸出值",df.sample(3).values)#這個方法類似于head()方法以及df.values方法輸出值[[2 '輸入錯誤的密碼' '{"mobilephone":"18688773467","pwd":"12345678"}'][3 '正常充值' '{"mobilephone":"18688773467","amount":"1000"}'][1 '正常登錄' '{"mobilephone":"18688773467","pwd":"123456"}']]

9:獲取指定列的值:

df=pd.read_excel('lemon.xlsx')
print("輸出值\n",df['data'].values)

四:pandas處理Excel數據成為字典

df=pd.read_excel('lemon.xlsx')
test_data=[]
for i in df.index.values:#獲取行號的索引,并對其進行遍歷:#根據i來獲取每一行指定的數據 并利用to_dict轉成字典row_data=df.ix[i,['case_id','module','title','http_method','url','data','expected']].to_dict()test_data.append(row_data)
print("最終獲取到的數據是:{0}".format(test_data))

最后得到的結果是:

最終獲取到的數據是:
[{'title': '正常登錄', 'case_id': 1, 'data': '{"mobilephone":"18688773467","pwd":"123456"}'}, 
{'title': '輸入錯誤的密碼', 'case_id': 2, 'data': '{"mobilephone":"18688773467","pwd":"12345678"}'}, 
{'title': '正常充值', 'case_id': 3, 'data': '{"mobilephone":"18688773467","amount":"1000"}'}, 
{'title': '充值輸入負數', 'case_id': 4, 'data': '{"mobilephone":"18688773467","amount":"-100"}'}]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453798.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453798.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453798.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JMeter響應斷言詳解

響應斷言 :對服務器的響應進行斷言校驗 (1)應用范圍: main sample and sub sample, main sample only , sub-sample only , jmeter variable    關于應用范圍,我們大多數勾選“main sample on…

YUV / RGB 格式及快速轉換

YUV是指亮度參量和色度參量分開表示的像素格式,而這樣分開的好處就是不但可以避免相互干擾,還可以降低色度的采樣率而不會對圖像質量影響太大。 YUV是一個比較籠統地說法,針對它的具體排列方式,可以分為很多種具體的格式。轉載一篇…

交換機分布緩存_交換機網絡嗅探方法 如何欺騙交換機緩存

嗅探(sniff),就是竊聽網絡上流經的數據包,而數據包里面一般會包含很多重要的私隱信息,如:你正在訪問什么網站,你的郵箱密碼是多少,你在和哪個MM聊QQ等等......而很多攻擊方式(如著名的會話劫持)都是建立在嗅…

深度學習之 SSD(Single Shot MultiBox Detector)

目標檢測近年來已經取得了很重要的進展,主流的算法主要分為兩個類型: (1)two-stage方法,如R-CNN系算法,其主要思路是先通過啟發式方法(selective search)或者CNN網絡(RP…

短時程突觸可塑性(short-term synaptic plasticity)

介紹神經元的突觸可塑性一般被認為是大腦學習與記憶的分子生物學機制,它是指突觸傳遞效率增強或減弱的變化現象。若這種變化只持續數十毫秒到幾分,便稱之為短時程突觸可塑性,其中效率增強與減弱分別叫做短時程增強(short-term enh…

windows平臺下vlc編譯

轉自:http://jeremiah.blog.51cto.com/539865/114190Jeremiah剛剛工作幾個月,參與的第一個項目是與視頻監控有關,分配給我的任務就是用開源的vlc做一個自己的播放器。對于開源項目來說,搭建起編譯環境是第一步也是最重要的一步。Jeremiah在歷…

python xgboost安裝_win7 64 python2 xgboost安裝

綜述:安裝Python3 環境下的xgboost 可以通過pip install , 在網址中下載對應版本: http://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost 來進行安裝。但Python2在該網址下并沒有相應的包,所以要下載xgboost源代碼 然后編譯。很麻…

深度學習之卷積神經網絡 AlexNet

AlexNet 是 2012年ILSVRC 比賽冠軍,遠超第二名的CNN,比LeNet更深,用多層小卷積疊加來替換單個的大卷積,結構如下圖所示。 ?? 結構 預處理 原始圖片:256?256?3256*256*3256?256?3 圖像處理: 1.隨機…

jstl處理欄目與子欄目_芬頓氧化法廢水處理工程技術規范(征求意見稿)

日前,生態環境部印發《芬頓氧化法廢水處理工程技術規范(征求意見稿)》,詳情如下:各有關單位:為貫徹《中華人民共和國環境保護法》和《中華人民共和國水污染防治法》等法律法規,防治環境污染,改善環境質量&a…

深度學習之卷積神經網絡 ZF Net

ZFNet出自論文《 Visualizing and Understanding Convolutional Networks》,作者Matthew D. Zeiler和Rob Fergus——顯然ZFNet是以兩位作者名字的首字母命名的。ZFNet通常被認為是ILSVRC 2013的冠軍方法,但實際上ZFNet排在第3名,前兩名分別是…

SIP與RTP綜合應用5-RTP解包過程

RTP接收部分比較簡單(不用考慮jitterbuffer等),先從這里入手。 其實主要就3步: 1 創建一個udp,監聽一個端口,比如5200。 2 收到RTP包,送到解包程序,繼續收第 二個。 3 收齊一幀后,或保存文件&am…

JavaScript eval() 函數,計算某個字符串,并執行其中的的 JavaScript 代碼。

JavaScript eval() 函數,計算某個字符串,并執行其中的的 JavaScript 代碼。 適合用于計算器的計算,等。 例子: eval("x10;y20;document.write(x*y)") document.write(eval("22")) var x10 document.write(eva…

vb整合多個excel表格到一張_[Excel]同一工作簿中多個工作表保存成獨立的表格

一個工作簿中有多個表格,如何將其表格單獨保存成一個獨立的文檔呢?如果表格少,操作如下:選中要導出表格的標簽名--鼠標郵件--移動或復制表格--新建工作簿。當如果表格太多呢,以上方法就太羅嗦了。簡單方法用VBA,步驟如…

sqlserver字符串多行合并為一行

1 --創建測試表2 CREATE TABLE [dbo].[TestRows2Columns](3 [Id] [int] IDENTITY(1,1) NOT NULL,4 [UserName] [nvarchar](50) NULL,5 [Subject] [nvarchar](50) NULL,6 [Source] [numeric](18,0) NULL7 )8 GO9 10 --插入測試數據 11 INSERT INTO [TestRows2C…

OpenCore 的代碼結構

OpenCore的代碼結構 以開源Android 的代碼為例,Open Core 的代碼在Android 代碼的External/Opencore 目錄 中。這個目錄是OpenCore 的根目錄,其中包含的子目錄如下所示: android:這里面是一個上層的庫,它基于PVPlaye…

深度學習之卷積神經網絡 GoogleNet

GoogLeNet Incepetion V1 這是GoogLeNet的最早版本,出現在2014年的《Going deeper with convolutions》。之所以名為“GoogLeNet”而非“GoogleNet”,文章說是為了向早期的LeNet致敬。 深度學習以及神經網絡快速發展,人們不再只關注更給力的硬件、更大…

名詞解釋 算法的有限性_數據結構與算法期中考試卷(含答案)

玉林師范學院期中課程考試試卷(2010——2011學年度第一學期)命題教師:劉恒 命題教師所在系:數計系 課程名稱:數據結構與算法 考試專業:信計 考試年級:09級一、單項選擇題(每題2分,共30分,把正確…

Jzoj4348 打擊目標

又是被水題坑了。。。 一直想不出來看題解說要什么主席樹,于是開始打離線算法 結果打到一半發現要強制在線。。No!!! 發現直接AC自動機似乎可做?樹剖之后在AC自動機上跑的時候判斷一下不就好了嗎!連線段樹都不要 讓后快樂切掉,速度還可以&…

深度學習之卷積神經網絡 VGGNet

2014年,牛津大學計算機視覺組(Visual Geometry Group)和Google DeepMind公司的研究員一起研發出了新的深度卷積神經網絡:VGGNet,并取得了ILSVRC2014比賽分類項目的第二名(第一名是GoogLeNet,也是…

SpringMVC 返回json的兩種方式

前后臺數據交互使用json是一種很重要的方式.本文主要探討SpringMVC框架使用json傳輸的技術. 請注意,本文所提到的項目使用Spring 版本是4.1.7,其他版本在具體使用上可能有不一樣的情況. 一、最常見——使用RequestBody的注解返回一個實體對象; 使用方式如下: 1:引入jar包&#…