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

學無先后,達者為師

網站首頁 編程語言 正文

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

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

引言

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

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

代碼段:

一、讀取工作表內容(.xlsx轉化為DataFrame)

導入pandas庫,讀取工作表數據

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

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

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

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

獲取整個工作表數據

data=df.values#獲取整個工作表數據
print("讀取整個工作表的數據:\n{0}".format(data))

獲取某一行數據

data=df.iloc[0].values#0表示第一行,不包含表頭
print("讀取指定行的數據:\n{0}".format(data))

獲取多行數據

data=df.head().values#head()默認讀取前5行數據(不包含表頭)
print("獲取工作表前5行數據:\n{0}".format(data))

data=df.iloc[[1,2]].values#讀取指定多行,在iloc[]里面嵌套列表指定行數
print("讀取指定多行的數據:\n{0}".format(data))

data=df.sample(3).values#讀取df中隨機3行數據(3個樣本)
print("獲取隨機多行數據:\n{0}".format(data))

獲取指定單元格數據

data=df.iloc[1,2]#讀取索引為[1, 2]的值,這里不需要嵌套列表
print("讀取指定某行某列(單元格)的數據:\n{0}".format(data))

獲取指定列數據

print("輸出值\n",df['含糖率'].values)

獲取指定多列數據

data=df.loc[:,['敲聲','紋理']].values#讀所有行的敲聲以及紋理列的值,這里需要嵌套列表
print("讀取指定列的數據:\n{0}".format(data))

獲取指定多行多列數據

data=df.loc[[1,2],['密度','含糖率']].values#讀取第一行第二行的密度以及含糖率列的值,這里需要嵌套列表
print("讀取指定多行多列的數據:\n{0}".format(data))

獲取行號和列標題

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

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

(1) 轉化為列表list

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

data=df.values.tolist()

此時的輸出為:

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

(2) 轉化為集合set

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

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

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

data=df.iloc[0].values#獲取某行數據
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數據的應用

總結

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

欄目分類
最近更新