日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

如何使用Python讀取.xlsx指定行列_python

作者:L_Jane_H ? 更新時間: 2022-11-13 編程語言

引言

本文以Python3.9.1讀取data.xlsx中包含的西瓜數(shù)據(jù)集3.0數(shù)據(jù)為例,數(shù)據(jù)集如下:

編號 色澤 根蒂 敲聲 紋理 臍部 觸感 密度 含糖率 好瓜
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轉化為DataFrame)

導入pandas庫,讀取工作表數(shù)據(jù)

import pandas as pd
df = pd.read_excel(r'E:\Aownplan\data.xlsx')#默認讀取工作簿中第一個工作表,默認第一行為表頭

備注:r是為了讀取文件路徑中\字符,防止轉義

此處利用pandas庫的 read_excel 函數(shù)讀取文件,獲取到的函數(shù)返回值類型為DataFrame,后續(xù)所有的操作均是基于DataFrame的數(shù)據(jù)操作方法進行。

二、獲取指定行指定列數(shù)據(jù)(DataFrame轉化為numpy.ndarray)

獲取整個工作表數(shù)據(jù)

data=df.values#獲取整個工作表數(shù)據(jù)
print("讀取整個工作表的數(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()默認讀取前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中隨機3行數(shù)據(jù)(3個樣本)
print("獲取隨機多行數(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))

獲取行號和列標題

print("輸出行號列表",df.index.values)
print("輸出列標題",df.columns.values)

三、數(shù)據(jù)處理(numpy.ndarray轉化為list/set/dict)

(1) 轉化為列表list

以上通過.values方法獲取到的data值,均為二維值數(shù)組(numpy.ndarray)類型,在使用時如果需要轉換為列表類型,可使用.tolist()方法,如:

data=df.values.tolist()

此時的輸出為:

此時的data為list類型,其中每一行數(shù)據(jù)均為一個列表,多個列表合并為一個二維列表,此時要獲取指定行(m)的數(shù)據(jù),使用 data[m],獲取指定單元格數(shù)據(jù),使用data[m][n]。

(2) 轉化為集合set

在分析時,若想獲取某一列的數(shù)據(jù)集合,則可以先提取該列數(shù)據(jù),然后使用set()函數(shù)將其轉化為集合即可,如當前為獲取敲聲的類型,進行如下操作:

data=df['敲聲'].values
print(set(data))

此時的輸出:

{'清脆', '濁響', '沉悶'}

獲取除編號,密度,含糖率外所有列的集合:

titles = df.columns.values
for title in titles:
    if title != '編號' and title != '密度' and title != '含糖率':
        key = df[title].values
        values = set(key)
        print(title,':',values)

輸出:

色澤 : {'烏黑', '青綠', '淺白'}
根蒂 : {'蜷縮', '稍蜷', '硬挺'}
敲聲 : {'清脆', '濁響', '沉悶'}
紋理 : {'清晰', '稍糊', '模糊'}
臍部 : {'平坦', '稍凹', '凹陷'}
觸感 : {'硬滑', '軟粘'}
好瓜 : {'是', '否'}

(3) 轉化為字典dict

如果需要讀取某一行的數(shù)據(jù)為字典,可進行如下操作:

data=df.iloc[0].values#獲取某行數(shù)據(jù)
title=df.columns.values#獲取列標題
a=zip(title,data)#將其壓縮為一個元組
print(dict(a))#轉化為字典

輸出:

{'編號': 1, '色澤': '青綠', '根蒂': '蜷縮', '敲聲': '濁響', '紋理': '清晰', '臍部': '凹陷', '觸感': '硬滑', '密度': 0.697,'含糖率': 0.46, '好瓜': '是'}

獲取除編號,密度,含糖率外所有列的字典:

titles = df.columns.values
adict=dict()
for title in titles:
    if title != '編號' and title != '密度' and title != '含糖率':
        key = df[title].values
        adict[title]=set(key)
print(adict)

輸出:

{'色澤': {'烏黑', '青綠', '淺白'}, '根蒂': {'蜷縮', '稍蜷', '硬挺'}, '敲聲': {'清脆', '濁響', '沉悶'}, '紋理': {'清晰', '稍糊', '模糊'}, ?'臍部': {'平坦', '稍凹', '凹陷'}, '觸感': {'硬滑', '軟粘'}, ?'好瓜': {'是', '否'}}

參考文章:

[1]. Python利用pandas處理Excel數(shù)據(jù)的應用

總結

原文鏈接:https://blog.csdn.net/L_Jane_H/article/details/125586000

欄目分類
最近更新