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