如何使用Python讀取.xlsx指定行列
引言
本文以Python3.9.1讀取data.xlsx中包含的西瓜數(shù)據(jù)集3.0數(shù)據(jù)為例,數(shù)據(jù)集如下:
| 編號(hào) | 色澤 | 根蒂 | 敲聲 | 紋理 | 臍部 | 觸感 | 密度 | 含糖率 | 好瓜 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 青綠 | 蜷縮 | 濁響 | 清晰 | 凹陷 | 硬滑 | 0.697 | 0.46 | 是 |
| 2 | 烏黑 | 蜷縮 | 沉悶 | 清晰 | 凹陷 | 硬滑 | 0.774 | 0.376 | 是 |
| 3 | 烏黑 | 蜷縮 | 濁響 | 清晰 | 凹陷 | 硬滑 | 0.634 | 0.264 | 是 |
| 4 | 青綠 | 蜷縮 | 沉悶 | 清晰 | 凹陷 | 硬滑 | 0.608 | 0.318 | 是 |
| 5 | 淺白 | 蜷縮 | 濁響 | 清晰 | 凹陷 | 硬滑 | 0.556 | 0.215 | 是 |
| 6 | 青綠 | 稍蜷 | 濁響 | 清晰 | 稍凹 | 軟粘 | 0.403 | 0.237 | 是 |
| 7 | 烏黑 | 稍蜷 | 濁響 | 稍糊 | 稍凹 | 軟粘 | 0.481 | 0.149 | 是 |
| 8 | 烏黑 | 稍蜷 | 濁響 | 清晰 | 稍凹 | 硬滑 | 0.437 | 0.211 | 是 |
| 9 | 烏黑 | 稍蜷 | 沉悶 | 稍糊 | 稍凹 | 硬滑 | 0.666 | 0.091 | 否 |
| 10 | 青綠 | 硬挺 | 清脆 | 清晰 | 平坦 | 軟粘 | 0.243 | 0.267 | 否 |
| 11 | 淺白 | 硬挺 | 清脆 | 模糊 | 平坦 | 硬滑 | 0.245 | 0.057 | 否 |
| 12 | 淺白 | 蜷縮 | 濁響 | 模糊 | 平坦 | 軟粘 | 0.343 | 0.099 | 否 |
| 13 | 青綠 | 稍蜷 | 濁響 | 稍糊 | 凹陷 | 硬滑 | 0.639 | 0.161 | 否 |
| 14 | 淺白 | 稍蜷 | 沉悶 | 稍糊 | 凹陷 | 硬滑 | 0.657 | 0.198 | 否 |
| 15 | 烏黑 | 稍蜷 | 濁響 | 清晰 | 稍凹 | 軟粘 | 0.36 | 0.37 | 否 |
| 16 | 淺白 | 蜷縮 | 濁響 | 模糊 | 平坦 | 硬滑 | 0.593 | 0.042 | 否 |
| 17 | 青綠 | 蜷縮 | 沉悶 | 稍糊 | 稍凹 | 硬滑 | 0.719 | 0.103 | 否 |
代碼段:
一、讀取工作表內(nèi)容(.xlsx轉(zhuǎn)化為DataFrame)
導(dǎo)入pandas庫,讀取工作表數(shù)據(jù)
import pandas as pd df = pd.read_excel(r'E:\Aownplan\data.xlsx')#默認(rèn)讀取工作簿中第一個(gè)工作表,默認(rèn)第一行為表頭
備注:r是為了讀取文件路徑中\字符,防止轉(zhuǎn)義。
此處利用pandas庫的 read_excel 函數(shù)讀取文件,獲取到的函數(shù)返回值類型為DataFrame,后續(xù)所有的操作均是基于DataFrame的數(shù)據(jù)操作方法進(jìn)行。
二、獲取指定行指定列數(shù)據(jù)(DataFrame轉(zhuǎn)化為numpy.ndarray)
獲取整個(gè)工作表數(shù)據(jù)
data=df.values#獲取整個(gè)工作表數(shù)據(jù)
print("讀取整個(gè)工作表的數(shù)據(jù):\n{0}".format(data))
獲取某一行數(shù)據(jù)
data=df.iloc[0].values#0表示第一行,不包含表頭
print("讀取指定行的數(shù)據(jù):\n{0}".format(data))
獲取多行數(shù)據(jù)
data=df.head().values#head()默認(rèn)讀取前5行數(shù)據(jù)(不包含表頭)
print("獲取工作表前5行數(shù)據(jù):\n{0}".format(data))
data=df.iloc[[1,2]].values#讀取指定多行,在iloc[]里面嵌套列表指定行數(shù)
print("讀取指定多行的數(shù)據(jù):\n{0}".format(data))
data=df.sample(3).values#讀取df中隨機(jī)3行數(shù)據(jù)(3個(gè)樣本)
print("獲取隨機(jī)多行數(shù)據(jù):\n{0}".format(data))
獲取指定單元格數(shù)據(jù)
data=df.iloc[1,2]#讀取索引為[1, 2]的值,這里不需要嵌套列表
print("讀取指定某行某列(單元格)的數(shù)據(jù):\n{0}".format(data))
獲取指定列數(shù)據(jù)
print("輸出值\n",df['含糖率'].values)
獲取指定多列數(shù)據(jù)
data=df.loc[:,['敲聲','紋理']].values#讀所有行的敲聲以及紋理列的值,這里需要嵌套列表
print("讀取指定列的數(shù)據(jù):\n{0}".format(data))
獲取指定多行多列數(shù)據(jù)
data=df.loc[[1,2],['密度','含糖率']].values#讀取第一行第二行的密度以及含糖率列的值,這里需要嵌套列表
print("讀取指定多行多列的數(shù)據(jù):\n{0}".format(data))
獲取行號(hào)和列標(biāo)題
print("輸出行號(hào)列表",df.index.values)
print("輸出列標(biāo)題",df.columns.values)
三、數(shù)據(jù)處理(numpy.ndarray轉(zhuǎn)化為list/set/dict)
(1) 轉(zhuǎn)化為列表list
以上通過.values方法獲取到的data值,均為二維值數(shù)組(numpy.ndarray)類型,在使用時(shí)如果需要轉(zhuǎn)換為列表類型,可使用.tolist()方法,如:
data=df.values.tolist()
此時(shí)的輸出為:

此時(shí)的data為list類型,其中每一行數(shù)據(jù)均為一個(gè)列表,多個(gè)列表合并為一個(gè)二維列表,此時(shí)要獲取指定行(m)的數(shù)據(jù),使用 data[m],獲取指定單元格數(shù)據(jù),使用data[m][n]。
(2) 轉(zhuǎn)化為集合set
在分析時(shí),若想獲取某一列的數(shù)據(jù)集合,則可以先提取該列數(shù)據(jù),然后使用set()函數(shù)將其轉(zhuǎn)化為集合即可,如當(dāng)前為獲取敲聲的類型,進(jìn)行如下操作:
data=df['敲聲'].values print(set(data))
此時(shí)的輸出:
{'清脆', '濁響', '沉悶'}
獲取除編號(hào),密度,含糖率外所有列的集合:
titles = df.columns.values
for title in titles:
if title != '編號(hào)' and title != '密度' and title != '含糖率':
key = df[title].values
values = set(key)
print(title,':',values)
輸出:
色澤 : {'烏黑', '青綠', '淺白'}
根蒂 : {'蜷縮', '稍蜷', '硬挺'}
敲聲 : {'清脆', '濁響', '沉悶'}
紋理 : {'清晰', '稍糊', '模糊'}
臍部 : {'平坦', '稍凹', '凹陷'}
觸感 : {'硬滑', '軟粘'}
好瓜 : {'是', '否'}
(3) 轉(zhuǎn)化為字典dict
如果需要讀取某一行的數(shù)據(jù)為字典,可進(jìn)行如下操作:
data=df.iloc[0].values#獲取某行數(shù)據(jù) title=df.columns.values#獲取列標(biāo)題 a=zip(title,data)#將其壓縮為一個(gè)元組 print(dict(a))#轉(zhuǎn)化為字典
輸出:
{'編號(hào)': 1, '色澤': '青綠', '根蒂': '蜷縮', '敲聲': '濁響', '紋理': '清晰', '臍部': '凹陷', '觸感': '硬滑', '密度': 0.697,'含糖率': 0.46, '好瓜': '是'}
獲取除編號(hào),密度,含糖率外所有列的字典:
titles = df.columns.values
adict=dict()
for title in titles:
if title != '編號(hào)' and title != '密度' and title != '含糖率':
key = df[title].values
adict[title]=set(key)
print(adict)
輸出:
{'色澤': {'烏黑', '青綠', '淺白'}, '根蒂': {'蜷縮', '稍蜷', '硬挺'}, '敲聲': {'清脆', '濁響', '沉悶'}, '紋理': {'清晰', '稍糊', '模糊'}, '臍部': {'平坦', '稍凹', '凹陷'}, '觸感': {'硬滑', '軟粘'}, '好瓜': {'是', '否'}}
參考文章:
[1]. Python利用pandas處理Excel數(shù)據(jù)的應(yīng)用
總結(jié)
到此這篇關(guān)于如何使用Python讀取.xlsx指定行列的文章就介紹到這了,更多相關(guān)Python讀取.xlsx指定行列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 動(dòng)態(tài)獲取當(dāng)前運(yùn)行的類名和函數(shù)名的方法
這篇文章主要介紹了python 動(dòng)態(tài)獲取當(dāng)前運(yùn)行的類名和函數(shù)名的方法,分別介紹使用內(nèi)置方法、sys模塊、修飾器、inspect模塊等方法,需要的朋友可以參考下2014-04-04
Python中實(shí)現(xiàn)遠(yuǎn)程調(diào)用(RPC、RMI)簡(jiǎn)單例子
說白了,遠(yuǎn)程調(diào)用就是將對(duì)象名、函數(shù)名、參數(shù)等傳遞給遠(yuǎn)程服務(wù)器,服務(wù)器將處理結(jié)果返回給客戶端2014-04-04
Python實(shí)現(xiàn)讀取HTML表格 pd.read_html()
這篇文章主要介紹了Python實(shí)現(xiàn)讀取HTML表格 pd.read_html(),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
使用python實(shí)現(xiàn)ftp的文件讀寫方法
今天小編就為大家分享一篇使用python實(shí)現(xiàn)ftp的文件讀寫方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07

