目錄
1、打開Excel,獲取不同sheet的名稱
2、獲取不同sheet的內容
3、 獲取行數以及表頭
4、對某一列的信息進行篩選
5、根據列號和索引號提取一行或者一列的數據
6、其他panda對Excel的操作
?摘自:python對excel操作獲取某一列,某一行的值,對某一列信息篩選_春風若是你的博客-CSDN博客_python遍歷excel某行某列所有數據https://blog.csdn.net/weixin_43245453/article/details/90747259
1、打開Excel,獲取不同sheet的名稱
import pandas as pd
path = '1.xls'
data = pd.read_excel(path,None)#讀取數據,設置None可以生成一個字典,字典中的key值即為sheet名字,此時不用使用DataFram,會報錯
print(data.keys())#查看sheet的名字
for sh_name in data.keys():print('sheet_name的名字是:',sh_name)
data = {sheet1:sheet1的內容,sheet2:sheet2的內容,sheet3:sheet3的內容}
2、獲取不同sheet的內容
sh_data = pd.DataFrame(pd.read_excel(path,表格頁面名稱sheet))
3、 獲取行數以及表頭
import pandas as pd
path = 'G:\動力系\新建文件夾\什么.xls'
data = pd.DataFrame(pd.read_excel(path))#讀取數據,設置None可以生成一個字典,字典中的key值即為sheet名字,此時不用使用DataFram,會報錯
print(data.index)#獲取行的索引名稱
print(data.columns)#獲取列的索引名稱
print(data['姓名'])#獲取列名為姓名這一列的內容
print(data.loc[0])#獲取行名為0這一行的內容
4、對某一列的信息進行篩選
篩選使用的是data.loc[列名稱 = 提取的信息]
假如我要提取院系下面的動力,代碼如下:
import pandas as pd
path = 'G:\動力系\新建文件夾\什么.xls'
data = pd.DataFrame(pd.read_excel(path))#讀取數據,設置None可以生成一個字典,字典中的key值即為sheet名字,此時不用使用DataFram,會報錯
result = data.loc[data['院系'] == '動力']#獲取列明為院系,內容為動力的內容
print(result)
5、根據列號和索引號提取一行或者一列的數據
第4條是根據列名稱和行名稱來提取一行或者一列的數據,若需要根據行號和列號(索引)來提取一行或者一列的數據則需要先將panda讀取得到的數據先轉換為數組,然后進行切片讀取即可
def getData(xlsPath):data = read_excel(xlsPath, None) # 讀取數據,設置None可以生成一個字典,字典中的key值即為sheet名字,此時不用使用DataFram,會報錯sheetNames = data.keys()# 獲取所有sheet的名稱# bodys, names, name_money = [],[],{}for sheetName in sheetNames:sh_data = DataFrame(read_excel(xlsPath, sheetName)) # 獲得每一個sheet中的內容# print(np.array(sh_data))# 獲取指定字段的一列內容,類型為<class 'pandas.core.series.Series'># bodys_ = sh_data["部位"]# names_ = sh_data["報告醫生"]bodys_ = np.array(sh_data)[:,7] # 先將pandas類型轉化為數組,再根據索引取值names_ = np.array(sh_data)[:,16]# 轉化為列表bodys = list(bodys_)names = list(names_)return bodys,names
# 獲得一個sheet表格的所有內容
?sh_data = DataFrame(read_excel(xlsPath, sheetName))? # 獲得每一個sheet中的內容
# 轉換為數組
sh_data = np.array(sh_data)
# 切片操作,分別讀取第i列和第j行
i_column = sh_data[:,i]
j_row = sh_data[j,:]
6、其他panda對Excel的操作
摘自:python中的dataframe的行、列切片等操作_春風若是你的博客-CSDN博客_dataframe按列切片https://blog.csdn.net/weixin_43245453/article/details/90056884
import numpy as np
import pandas as pddata = pd.DataFrame(np.arange(16).reshape(4,4),index = list("ABCD"),columns=list('wxyz'))
print(data)
print(data[0:2]) #取前兩行數據
print('+++++++++++++1111')print(len(data)) #求出一共多少行
print(data.columns.size) #求出一共多少列
print('+++++++++++++2222')print(data.columns) #列索引名稱
print(data.index) #行索引名稱
print('+++++++++++++3333')print(data.iloc[1]) #取第2行數據
print('+++++++++++++444')print(data['x']) #取列索引為x的一列數據
print(data.loc['A']) #取第行索引為”A“的一行數據,
print('+++++++++++++555')print(data.loc[:,['x','z']]) #表示選取所有的行以及columns為a,b的列;
print(data.loc[['A','B'],['x','z']]) #表示選取'A'和'B'這兩行以及columns為x,z的列的并集;
print('+++++++++++++6666')print(data.iloc[1:3,1:3]) #數據切片操作,切連續的數據塊
print(data.iloc[[0,2],[1,2]]) #即可以自由選取行位置,和列位置對應的數據,切零散的數據塊
print('+++++++++++++7777')print(data[data>2]) #表示選取數據集中大于0的數據
print(data[data.x>5]) #表示選取數據集中x這一列大于5的所有的行
print('+++++++++++++8888')a1 = data.copy()
print(a1[a1['y'].isin(['6','10'])]) #表顯示滿足條件:列y中的值包含'6','8'的所有行。
print('+++++++++++++9999')print(data.mean()) #默認對每一列的數據求平均值;若加上參數a.mean(1)則對每一行求平均值;
print(data['x'].value_counts()) #統計某一列x中各個值出現的次數:
print('+++++++++++++101010')print(data.describe()) #對每一列數據進行統計,包括計數,均值,std,各個分位數等。
C:\Users\innduce\Desktop\jianmo\Scripts\python.exe G:/untitled1/narry.py
??? w?? x?? y?? z
A?? 0?? 1?? 2?? 3
B?? 4?? 5?? 6?? 7
C?? 8?? 9? 10? 11
D? 12? 13? 14? 15
?? w? x? y? z
A? 0? 1? 2? 3
B? 4? 5? 6? 7
+++++++++++++1111
4
4
+++++++++++++2222
Index(['w', 'x', 'y', 'z'], dtype='object')
Index(['A', 'B', 'C', 'D'], dtype='object')
+++++++++++++3333
w??? 4
x??? 5
y??? 6
z??? 7
Name: B, dtype: int32
+++++++++++++444
A???? 1
B???? 5
C???? 9
D??? 13
Name: x, dtype: int32
w??? 0
x??? 1
y??? 2
z??? 3
Name: A, dtype: int32
+++++++++++++555
??? x?? z
A?? 1?? 3
B?? 5?? 7
C?? 9? 11
D? 13? 15
?? x? z
A? 1? 3
B? 5? 7
+++++++++++++6666
?? x?? y
B? 5?? 6
C? 9? 10
?? x?? y
A? 1?? 2
C? 9? 10
+++++++++++++7777
????? w???? x???? y?? z
A?? NaN?? NaN?? NaN?? 3
B?? 4.0?? 5.0?? 6.0?? 7
C?? 8.0?? 9.0? 10.0? 11
D? 12.0? 13.0? 14.0? 15
??? w?? x?? y?? z
C?? 8?? 9? 10? 11
D? 12? 13? 14? 15
+++++++++++++8888
?? w? x?? y?? z
B? 4? 5?? 6?? 7
C? 8? 9? 10? 11
+++++++++++++9999
w??? 6.0
x??? 7.0
y??? 8.0
z??? 9.0
dtype: float64
13??? 1
5???? 1
9???? 1
1???? 1
Name: x, dtype: int64
+++++++++++++101010
?????????????? w????????? x????????? y????????? z
count?? 4.000000?? 4.000000?? 4.000000?? 4.000000
mean??? 6.000000?? 7.000000?? 8.000000?? 9.000000
std???? 5.163978?? 5.163978?? 5.163978?? 5.163978
min???? 0.000000?? 1.000000?? 2.000000?? 3.000000
25%???? 3.000000?? 4.000000?? 5.000000?? 6.000000
50%???? 6.000000?? 7.000000?? 8.000000?? 9.000000
75%???? 9.000000? 10.000000? 11.000000? 12.000000
max??? 12.000000? 13.000000? 14.000000? 15.000000Process finished with exit code 0