怎么用numpy读取excel的数据画三维图_python初学者,如何快速匹配excel任务
第一次在知乎寫長文的python辦公類文章,有點小緊張~~
自己是在給女朋友做東西的時候想到,可以分享一些python編程的簡單知識,幫助大家提高工作的效率。然后就有了寫文章出來的沖動~還開了一個公眾號~~
如果大家有什么想法,歡迎大家交流分享。如果有建議的話,也歡迎大家提出來,我一定會吸取意見,嘿嘿~
問題:
玩具制造廠總廠有一張excel表,記錄了每種零件的進(jìn)廠時間及代號,你所在的分廠的excel表只記錄了每種玩具對應(yīng)的零件的代號。
現(xiàn)在你的上司想要你根據(jù)總廠的excel表,補充分廠零件的進(jìn)廠時間。
總廠和分廠的數(shù)據(jù)如下所示:
問題分析:
可以發(fā)現(xiàn),分廠的零件代號在總廠中并不是唯一的,對一種零件來說,它的進(jìn)廠時間可能存在多個。
這個例子并不難,大家都知道怎么做,但是沒有人會喜歡做,畢竟這種繁瑣的工作最讓人煩躁。
問題解決:
在寫程序之前,先導(dǎo)入pandas和numpy庫。pandas庫用來讀取和保存excel文件,numpy庫用來處理數(shù)據(jù)。
import pandas as pd import numpy as npimport是用來進(jìn)行庫的導(dǎo)入,pd和np分別是這兩個庫的簡稱。
1、 將excel表格中的數(shù)據(jù)讀取到python中
data1 = pd.read_excel('E:/untitled/excel/test.xlsx', sheet_name=0) data2 = pd.read_excel('E:/untitled/excel/test.xlsx', sheet_name=1)注:data1中讀取的是總廠的數(shù)據(jù),data2是分廠。
這兩行代碼的作用是從excel中讀取數(shù)據(jù),括號中有兩個參數(shù)。
第一個參數(shù)就是excel的文件名(全路徑名)。按住shift+鼠標(biāo)右擊文件,在彈出的菜單中選擇“復(fù)制為路徑”,要記得把反斜杠改為斜杠。
第二個參數(shù)sheet_name指在excel文件中需要讀取的sheet區(qū)域名字。
sheet_name后面既可以接excel中sheet的名字,也可以接sheet的序號,例如:sheet_name="your_sheet_name",或者sheet_name=0。
劃重點,在python中,計數(shù)是從0開始的,也就是說,0代表excel中第一個sheet表,1代表第二個sheet表,依次類推。
運行結(jié)果如下所示:
圖中展示的數(shù)據(jù)正是使用pandas庫得到的數(shù)據(jù),它的類型是DataFrame,類似于excel表格。NaN是python對空字符的表示方法,表示這里沒有數(shù)據(jù)。
2、 寫程序來制定處理規(guī)則,讓數(shù)據(jù)按照程序流動,得到想要的結(jié)果。
data1 = np.array(data1, dtype=str) data2 = np.array(data2, dtype=str)注:這兩行代碼是將數(shù)據(jù)格式由DataFrame轉(zhuǎn)化為numpy庫中的array數(shù)組,方便對它做進(jìn)一步的操作。Pandas庫適合對數(shù)據(jù)進(jìn)行查詢、篩選,numpy庫則適合對數(shù)據(jù)進(jìn)行處理。
運行結(jié)果如下所示:
觀察轉(zhuǎn)化后的數(shù)據(jù)發(fā)現(xiàn),數(shù)據(jù)都被單引號引起來,形式變成了字符串,這是因為字符串方便進(jìn)行查詢。Data2的數(shù)據(jù)在被轉(zhuǎn)化為字符串?dāng)?shù)組后,多了“.0”,需要在后面的操作中去掉。
length1 = data1.shape[0] length2 = len(data2)注:這兩行代碼用來得到兩個數(shù)組的行數(shù)。兩行代碼采用了兩種不同的方式,都可以得到數(shù)組的行數(shù),大家可以自由選擇其中一種。
第一種是數(shù)據(jù)的shape方法,shape[0]會返回數(shù)組的行數(shù),shape[1]會返回數(shù)組的列數(shù)。
第二種的len()方法是python的一個通用的自帶方法,可以求出數(shù)組的長度。運行結(jié)果如下所示:
for i in range(length2):for j in range(length1):if data2[i, 0].strip(".0") in data1[j,1]:data2[i, 1] = data2[i, 1] + " " + data1[j, 0]注:構(gòu)建兩個for循環(huán)對兩個數(shù)組進(jìn)行遍歷,若檢索到分廠的零件代號在總廠的零件代號中,那么將相應(yīng)的進(jìn)廠時間放在分廠對應(yīng)的進(jìn)廠時間中。
strip函數(shù)是用來在字符串的首尾去掉一些不需要的字符,像空格。
將分廠的數(shù)據(jù)轉(zhuǎn)成字符串后,分廠數(shù)據(jù)比原始數(shù)據(jù)多了“.0”,字符串中的“1001”和“1001.0”是不一樣的,這會影響與總廠數(shù)據(jù)的匹配,因此使用strip函數(shù)去掉分廠數(shù)據(jù)中的“.0”。
in是判斷分廠的零件代號是否在總廠零件代號中的方法。“rn”表示回到行首并換行,用于定義數(shù)據(jù)的顯示格式。
運行完后得到的分廠數(shù)據(jù)如下:
3、 把得到的處理結(jié)果,保存到result.xlsx中
data2注:這里的兩行代碼用來保存數(shù)據(jù),括號中填寫自己想要保存數(shù)據(jù)的位置(全路徑)。
到此,我們使用jupyter notebook,實現(xiàn)了我們的目標(biāo)。
最后,把我們寫好的程序貼圖附在這里。
-----------------------------------------
到這里,我們的第一個excel文件操作任務(wù)就告一段落了。我的公眾號是 數(shù)算天下的紅.
如果你想了解更多關(guān)于python自動化辦公的知識,歡迎關(guān)注我的公眾號啦~,小數(shù)和小紅等你一起邁步哦。
總結(jié)
以上是生活随笔為你收集整理的怎么用numpy读取excel的数据画三维图_python初学者,如何快速匹配excel任务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rancher k8s docker 关
- 下一篇: websocket python爬虫_p