Python讀取excel文件中的數(shù)據(jù),繪制折線圖及散點(diǎn)圖
一、導(dǎo)包
import pandas as pd import matplotlib.pyplot as plt
二、繪制簡(jiǎn)單折線
數(shù)據(jù):有一個(gè)Excel文件lemon.xlsx,有兩個(gè)表單,表單名分別為:Python 以及student。
Python的表單數(shù)據(jù)如下所示:
student的表單數(shù)據(jù)如下所示:
1、在利用pandas模塊進(jìn)行操作前,可以先引入這個(gè)模塊,如下:
import pandas as pd
2、讀取Excel文件的兩種方式:
#方法一:默認(rèn)讀取第一個(gè)表單 df=pd.read_excel('lemon.xlsx')#這個(gè)會(huì)直接默認(rèn)讀取到這個(gè)Excel的第一個(gè)表單 data=df.head()#默認(rèn)讀取前5行的數(shù)據(jù) print("獲取到所有的值:\n{0}".format(data))#格式化輸出
得到的結(jié)果是一個(gè)二維矩陣,如下所示:
#方法二:通過(guò)指定表單名的方式來(lái)讀取 df=pd.read_excel('lemon.xlsx',sheet_name='student')#可以通過(guò)sheet_name來(lái)指定讀取的表單 data=df.head()#默認(rèn)讀取前5行的數(shù)據(jù) print("獲取到所有的值:\n{0}".format(data))#格式化輸出
得到的結(jié)果如下所示,也是一個(gè)二維矩陣:
#方法三:通過(guò)表單索引來(lái)指定要訪問(wèn)的表單,0表示第一個(gè)表單 #也可以采用表單名和索引的雙重方式來(lái)定位表單 #也可以同時(shí)定位多個(gè)表單,方式都羅列如下所示 df=pd.read_excel('lemon.xlsx',sheet_name=['python','student'])#可以通過(guò)表單名同時(shí)指定多個(gè) # df=pd.read_excel('lemon.xlsx',sheet_name=0)#可以通過(guò)表單索引來(lái)指定讀取的表單 # df=pd.read_excel('lemon.xlsx',sheet_name=['python',1])#可以混合的方式來(lái)指定 # df=pd.read_excel('lemon.xlsx',sheet_name=[1,2])#可以通過(guò)索引 同時(shí)指定多個(gè) data=df.values#獲取所有的數(shù)據(jù),注意這里不能用head()方法哦~ print("獲取到所有的值:\n{0}".format(data))#格式化輸出
三、pandas操作Excel的行列
1、讀取指定的單行,數(shù)據(jù)會(huì)存在列表里面
#1:讀取指定行 df=pd.read_excel('lemon.xlsx')#這個(gè)會(huì)直接默認(rèn)讀取到這個(gè)Excel的第一個(gè)表單 data=df.ix[0].values#0表示第一行 這里讀取數(shù)據(jù)并不包含表頭,要注意哦! print("讀取指定行的數(shù)據(jù):\n{0}".format(data))
得到的結(jié)果如下所示:
2、讀取指定的多行,數(shù)據(jù)會(huì)存在嵌套的列表里面
df=pd.read_excel('lemon.xlsx') data=df.ix[[1,2]].values#讀取指定多行的話,就要在ix[]里面嵌套列表指定行數(shù) print("讀取指定行的數(shù)據(jù):\n{0}".format(data))
3、讀取指定的行列
df=pd.read_excel('lemon.xlsx') data=df.ix[1,2]#讀取第一行第二列的值,這里不需要嵌套列表 print("讀取指定行的數(shù)據(jù):\n{0}".format(data))
4、讀取指定的多行多列值
df=pd.read_excel('lemon.xlsx') data=df.ix[[1,2],['title','data']].values#讀取第一行第二行的title以及data列的值,這里需要嵌套列表 print("讀取指定行的數(shù)據(jù):\n{0}".format(data))
5、獲取所有行的指定列
df=pd.read_excel('lemon.xlsx') data=df.ix[:,['title','data']].values#讀所有行的title以及data列的值,這里需要嵌套列表 print("讀取指定行的數(shù)據(jù):\n{0}".format(data))
6、獲取行號(hào)并打印輸出
df=pd.read_excel('lemon.xlsx') print("輸出行號(hào)列表",df.index.values) 輸出結(jié)果是: 輸出行號(hào)列表 [0 1 2 3]
7、獲取列名并打印輸出
df=pd.read_excel('lemon.xlsx') print("輸出列標(biāo)題",df.columns.values) 運(yùn)行結(jié)果如下所示: 輸出列標(biāo)題 ['case_id' 'title' 'data']
8、獲取指定行數(shù)的值
df=pd.read_excel('lemon.xlsx') print("輸出值",df.sample(3).values)#這個(gè)方法類(lèi)似于head()方法以及df.values方法 輸出值 [[2 '輸入錯(cuò)誤的密碼' '{"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數(shù)據(jù)成為字典
我們有這樣的數(shù)據(jù)
處理成列表嵌套字典,且字典的key為表頭名。
實(shí)現(xiàn)的代碼如下所示:
df=pd.read_excel('lemon.xlsx') test_data=[] for i in df.index.values:#獲取行號(hào)的索引,并對(duì)其進(jìn)行遍歷: #根據(jù)i來(lái)獲取每一行指定的數(shù)據(jù) 并利用to_dict轉(zhuǎn)成字典 row_data=df.ix[i,['case_id','module','title','http_method','url','data','expected']].to_dict() test_data.append(row_data) print("最終獲取到的數(shù)據(jù)是:{0}".format(test_data))
最后得到的結(jié)果是:
最終獲取到的數(shù)據(jù)是: [{'title': '正常登錄', 'case_id': 1, 'data': '{"mobilephone":"18688773467","pwd":"123456"}'}, {'title': '輸入錯(cuò)誤的密碼', 'case_id': 2, 'data': '{"mobilephone":"18688773467","pwd":"12345678"}'}, {'title': '正常充值', 'case_id': 3, 'data': '{"mobilephone":"18688773467","amount":"1000"}'}, {'title': '充值輸入負(fù)數(shù)', 'case_id': 4, 'data': '{"mobilephone":"18688773467","amount":"-100"}'}]
五、繪制簡(jiǎn)單折線圖
所用數(shù)據(jù):
# -*- coding: utf-8 -*- """ Created on Tue Sep 29 18:24:14 2020 @author: chenj """ # 導(dǎo)入 pandas 和 matplotlib import pandas as pd import matplotlib.pyplot as plt # 讀取文件 # ============================================================================= # 可能遇到的問(wèn)題 路徑分隔符 建議用“/”或“\\” 讀取桌面文件時(shí) 用“\”可能會(huì)失敗 # ============================================================================= data_source = pd.read_excel('F:/南師2020作業(yè)/人工智能/datas.xlsx') # 函數(shù)plot()嘗試根據(jù)數(shù)字繪制出有意義的圖形 print(data_source['datas']) plt.plot(data_source['datas'])
六、繪制簡(jiǎn)單散點(diǎn)圖
使用scatter繪制散點(diǎn)圖并設(shè)置其樣式 1、繪制單個(gè)點(diǎn),使用函數(shù)scatter,并向它傳遞x,y坐標(biāo),并可使用參數(shù)s指定點(diǎn)的大小
plt.scatter(2,4,s=20)
2、繪制一系列點(diǎn),向scatter傳遞兩個(gè)分別包含x值和y值的列表
x_values=[1,2,3,4,5] y_values=[1,4,9,16,25] plt.scatter(x_values,y_values,s=20)
3、設(shè)置坐標(biāo)軸的取值范圍:函數(shù)axis()要求提供四個(gè)值,x,y坐標(biāo)軸的最大值和最小值
plt.axis([0,1100,0,1100000])
4、使用參數(shù)edgecolor在函數(shù)scatter中設(shè)置數(shù)據(jù)點(diǎn)的輪廓
plt.scatter(x_values,y_values,edgecolor='black',s=20)
當(dāng)參數(shù)值為'none'時(shí)不使用輪廓
5、向scatter傳遞參數(shù)c,指定要使用的顏色
可使用顏色名稱(chēng),或者使用RGB顏色模式自定義顏色,元組中包含三個(gè)0~1之間的小數(shù)值,分別表示紅綠藍(lán)顏色分量。
plt.scatter(x_values,y_values,c=(0,0,0.8),edgecolor='none',s=20)為由淺藍(lán)色組成的散點(diǎn)圖
6、使用顏色映射
顏色映射是一系列顏色,它們從起始顏色漸變到結(jié)束顏色,在可視化中顏色映射用于突出數(shù)據(jù)的規(guī)律。
例如,可用較淺的顏色表示較小的數(shù)值,較深的顏色表示較大的數(shù)值。
模塊pyplot內(nèi)置了一組顏色映射,要使用顏色映射,需要告訴pyplot如何設(shè)置數(shù)據(jù)集中每個(gè)點(diǎn)的顏色。
plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,s=40) plt.title("Square numbers",fontsize=24)
我們將參數(shù)c設(shè)置成了一個(gè)y值列表,并使用參數(shù)cmap告訴pyplot使用哪個(gè)顏色映射。這些代
碼將y值較小的點(diǎn)顯示為淺藍(lán)色,并將y值較大的點(diǎn)顯示為深藍(lán)色。
7、自動(dòng)保存圖表:使用函數(shù)plt.savefig()
plt.savefig('D:/www/figure.png',bbox_inches='tight')
第一個(gè)參數(shù)是文件名,第二個(gè)參數(shù)指定將圖表多余的空白區(qū)域減掉,如果要保留圖表周?chē)嘤嗟目瞻讌^(qū)域,可省略這個(gè)實(shí)參。
8、設(shè)置繪圖窗口尺寸
函數(shù)figure用于指定圖表的寬度、高度、分辨率和背景色。
形參figsize指定一個(gè)元組,向matplotlib指出繪圖窗口的尺寸,單位為英寸。
形參dpi向figure傳遞分辨率,默認(rèn)為80
plt.figure(dpi=128,figsize=(10,6))
9、實(shí)例程序
#a.py import matplotlib.pyplot as plt x_values=list(range(1,1001)) y_values=[x**2 for x in x_values] plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,s=40) plt.title("Square numbers",fontsize=24) plt.xlabel("value",fontsize=24) plt.ylabel("Square of Value",fontsize=24) plt.tick_params(axis='both',labelsize=14) plt.axis([0,1100,0,1100000]) plt.savefig('D:/www/figure.png',bbox_inches='tight') plt.show()
# 導(dǎo)入 pandas 和 matplotlib import pandas as pd import matplotlib.pyplot as plt # 導(dǎo)入中文顯示庫(kù)函數(shù) from matplotlib.font_manager import FontProperties font_set = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=15) # 讀取文件 df = pd.read_excel("F:/南師2020作業(yè)/人工智能/datas.xlsx") # 輸出數(shù)據(jù)行數(shù) print("數(shù)據(jù)行數(shù):" , len(df)) ''' 由于只有一列數(shù)據(jù)我們使用 excel 行號(hào)作為 x 值的列表 用range()函數(shù)來(lái)創(chuàng)建一個(gè)列表 [1,24) range()函數(shù) 遍歷數(shù)字序列 ''' x = list(range(1,len(df)+1)) #[1,24) # 讀取指定的單列也就是 datas列,數(shù)據(jù)會(huì)存在列表里面 y = df['datas'] # for 循環(huán)輸出數(shù)據(jù)行數(shù) for a in (list(range(1,len(df)+1))): print('行號(hào):'+str(a)) #將int類(lèi)型的a 轉(zhuǎn)換為字符串 #設(shè)置 x值 和y值的列表 plt.scatter(x,y) # 圖表名稱(chēng) plt.title('散點(diǎn)圖',fontproperties=font_set) # 設(shè)置x軸名稱(chēng) plt.xlabel("X") # 設(shè)置y軸名稱(chēng) plt.ylabel("Y") plt.show()
到此這篇關(guān)于Python讀取excel文件中的數(shù)據(jù),繪制折線圖及散點(diǎn)圖的文章就介紹到這了,更多相關(guān)Python讀取excel文件數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用python的pandas讀取excel文件中的數(shù)據(jù)詳情
- Python讀取xlsx文件報(bào)錯(cuò):xlrd.biffh.XLRDError:?Excel?xlsx?file;not?supported問(wèn)題解決
- python讀取和保存為excel、csv、txt文件及對(duì)DataFrame文件的基本操作指南
- python讀取文件夾中圖片的圖片名并寫(xiě)入excel表格
- 使用Python讀取和修改Excel文件(基于xlrd、xlwt和openpyxl模塊)
- 淺談Python xlwings 讀取Excel文件的正確姿勢(shì)
- python3 循環(huán)讀取excel文件并寫(xiě)入json操作
- python讀取excel文件的方法
相關(guān)文章
Python UnboundLocalError和NameError錯(cuò)誤根源案例解析
這篇文章主要介紹了Python UnboundLocalError和NameError錯(cuò)誤根源解析,本文通過(guò)案例分析實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10Python檢查端口是否打開(kāi)的七種方法總結(jié)
在信息安全領(lǐng)域,端口掃描是一項(xiàng)常見(jiàn)的技術(shù),用于逐個(gè)檢測(cè)目標(biāo)主機(jī)上的端口是否開(kāi)放,這篇文章主要給大家介紹了關(guān)于Python檢查端口是否打開(kāi)的七種方法總結(jié),需要的朋友可以參考下2023-12-12python實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)聊天程序
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)聊天程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07python對(duì)象與json相互轉(zhuǎn)換的方法
這篇文章主要介紹了python對(duì)象與json相互轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05對(duì)python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解
今天小編就為大家分享一篇對(duì)python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12python+requests實(shí)現(xiàn)接口測(cè)試的完整步驟
這篇文章主要給大家介紹了關(guān)于python+requests實(shí)現(xiàn)接口測(cè)試的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10每天遷移MySQL歷史數(shù)據(jù)到歷史庫(kù)Python腳本
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)每天遷移MySQL歷史數(shù)據(jù)到歷史庫(kù)的腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04樹(shù)莓派用python中的OpenCV輸出USB攝像頭畫(huà)面
這篇文章主要為大家詳細(xì)介紹了樹(shù)莓派用python中的OpenCV輸出USB攝像頭畫(huà)面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06