系統軟體開發工程師|捷螺系統股份有限公司

新竹縣竹北市 經歷不拘 大學 消費性電子產品製造業
我要應徵
學歷: 科系不拘,大學、碩士、博士
需加強技能-企業要求 點擊標籤,查看學習內容
LinuxC++Python
需加強技能-相關
交通管理程式設計開發Material handling演算法JavaMySQL
符合度
?

履歷符合度:登入計算

適合度
?

性格適合度:登入計算

履歷符合度:您的履歷表有多少%符合此工作。
1~59不太符合 / 60~79符合 / >79非常符合

Python
Python是一種物件導向、直譯式電腦程式語言,也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。這種語言具有非常簡捷而清晰的語法特點,適合完成各種高層任務,幾乎可以在所有的作業系統中執行。 雖然 Python 可能被粗略地分類為「指令碼語言」(script language),但實際上一些大規模軟體開發計劃例如 Zope、Mnet 及 BitTorrent,Google 也廣泛地使用它。 Python 的支援者較喜歡稱它為一種高階動態編程語言,原因是「指令碼語言」泛指僅作簡單編程任務的語言,如 shell script、JavaScript 等只能處理簡單任務的編程語言,並不能與 Python 相提並論。 此外,由於 Python 對於 C 和其他語言的良好支援,很多人還把 Python 作為一種「膠水語言」(glue language)使用。 使用 Python 將其他語言編寫的程式進行整合和封裝。 在 Google 內部的很多專案使用 C++ 編寫性能要求極高的部分,然後用Python呼叫相應的模組。
Hi~ 分享你的學習心得來幫助後輩或向前輩提問吧!
我要分享
我要提問

學習推薦

全部
影片
文章

不知如何開始嗎? 先進行技能挑戰吧~

技能挑戰:初級
目前等級:未達初級
2970 人已通過「初級」測驗,通過率82%,和學習精靈一起探索知識、增強能力!
我要挑戰

Learn Code With Mike品牌創辦人

01/25 22:24

解析Python模組和套件的概念(3)
本文接續「解析Python模組和套件的概念(2)」文章分享模組和套件的概念。
Q: 什麼是套件(Package)
就是一個容器(資料夾),包含了一個或多個的模組(Module),並且擁有__init__.py檔案,其中可以撰寫套件(Package)初始化的程式碼。
我們將程式碼模組化後,專案中的模組(Module)就會越來越多,這時候就可以再將相似的模組(Module)組織為套件(Package)。那要如何建立套件(Package)呢?
舉例來說,現在我們要將專案中的 post.py 及 about.py 模組(Module)打包為部落格套件(Package),首先,建立blog資料夾,接著在資料夾中新增__init__.py檔案,最後將 post.py 及 about.py 模組(Module)移至blog資料夾中。
而在主程式 app.py 中引用套件(Package)的方式和模組(Module)大同小異,我們先來看 from-import語法,如下範例:
# 從套件中引用模組
from blog import post
from blog import about
p = post.Post()
p.add_post("Python Programming")
author = about.get_author()
email = about.get_email()
另一個引用套件(Package)的 import 語法如下範例:
# 從套件中引用模組
import blog.post
import blog.about
p = blog.post.Post()
p.add_post("Python Programming")
author = blog.about.get_author()
email = blog.about.get_email()
Q: dir()函式(dir function)
Python提供了一個內建函式dir(),用來顯示物件(Object)的屬性(Attribute)及方法(Method),我們利用此函式(Function)來看一下模組(Module)所擁有的屬性(Attribute)及方法(Method),如下範例:
#從blog套件引用about模組
from blog import about
print(dir(about))
從執行結果可以看到模組(Module)中有自建的get_author及get_email方法(Method),其餘的則是Python自動幫我們產生的,我們來看幾個常用的屬性(Attribute),如下範例:
# 從blog套件引用about模組
from blog import about
print(about.__name__) # 模組名稱
print(about.__package__) # 套件名稱
print(about.__file__) # 模組的檔名及路徑
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2020/01/python-module-and-package.html
)網站觀看更多精彩內容。
拍手 1 留言 0 觀看 48 收藏 0

Learn Code With Mike品牌創辦人

01/25 22:12

解析Python模組和套件的概念(2)
本文接續「解析Python模組和套件的概念(1)」文章分享模組和套件的概念。
Q: 模組引用方式(Import)
我們將程式碼進行模組化後,主程式 app.py 要如何使用呢?首先,可以使用 from-import 語法,如下範例:
# 引用模組中的特定物件
from post import Post
from about import get_author, get_email
p = Post()
p.add_post("Python Programming")
author = get_author()
email = get_email()
print(p.titles) #執行結果:['Python Programming']
print(author) #執行結果:Mike
print(email) #執行結果:example@gmail.com
from 之後加上模組(Module)的檔名,注意沒有 .py 副檔名,接著 import 引用所需的物件。
當然,在 import 之後可以使用 * 來引用模組中的所有物件,但是這樣的寫法,可能會在引用的過程中,發生同名方法覆寫(Method Overriding)的風險,所以建議引用所需要的物件即可。另一種語法則是透過 import 語法,如下範例:
# 引用整個模組
import post
import about
p = post.Post()
p.add_post("Python Programming")
author = about.get_author()
email = about.get_email()
print(p.titles) #執行結果:['Python Programming']
print(author) #執行結果:Mike
print(email) #執行結果:example@gmail.com
import 之後加上模組(Module)的檔名,和上一個語法不一樣的地方是,此語法雖然引用整個模組(Module),但是在主程式中必須透過模組(Module)的名稱來存取其中的成員。
在主程式 app.py 中引用模組(Module),並且執行後,會發現多了一個 pycache 資料夾。
這個資料夾中,可以看到包含了引用模組的已編譯檔案,當下一次執行主程式 app.py 時,Python編譯器看到已編譯的模組檔案,會直接載入該模組(Module),而省略編譯的動作,藉此來加速載入模組(Module)的速度。
當然Python編譯器在每一次執行時,會檢查來源模組及已編譯檔案的時間,當來源模組的時間較新,則代表該模組(Module)有經過修改,則Python編譯器會再編譯一次,更新已編譯檔案。
各位有沒有覺得奇怪,那為什麼沒有 app.py 的已編譯檔案,因為在此範例中,我們將 app.py 當作程式的進入點,所以每一次執行python app.py 指令時,Python編譯器都要進行編譯,所以沒有將 app.py 進行快取的動作。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2020/01/python-module-and-package.html
)網站觀看更多精彩內容。
拍手 1 留言 0 觀看 24 收藏 0

Learn Code With Mike品牌創辦人

01/25 22:04

解析Python模組和套件的概念(1)
當我們在開發大型應用程式時,如果沒有適當的組織程式碼,除了會降低開發的效率外,也不易於維護,所以模組(Module)化就顯得相當的重要,讓程式碼能夠透過引用的方式來重複使用,提升重用性(Reusable)。
但是隨著專案模組(Module)的增加,將難以管理及問題的追蹤,這時候就能將模組(Module)打包成套件(Package),利用其階層式的結構來彈性規劃模組(Module)。
本篇文章就帶大家瞭解Python模組(Module)及套件(Package)的重要觀念。
Q: 什麼是模組(Module)
模組(Module)就是一個檔案,包含了相關性較高的程式碼。隨著應用程式的開發規模越來越大,我們不可能把所有的程式碼都寫在同一份Python檔案中,一定會將關聯性較高的程式碼抽出來放在不同的檔案中來形成模組(Module),主程式再透過引用的方式來使用。所以模組(Module)可以提高程式碼的重用性(Reusable)且易於維護。
假設我們現在要開發一個部落格,主程式為 app.py ,在還沒有模組化時,程式碼可能長得像這樣:
#取得作者
def get_author():
return "Mike"
#取得電子郵件
def get_email():
return "example@gmail.com"
#新增文章
def add_post(title):
pass
#刪除文章
def delete_post(title):
pass
add_post()
author = get_author()
email = get_email()
各位應該可以想像,隨著部落格功能的增加,將所有程式碼都寫在 app.py 主程式中會變得怎麼樣。所以這時候就可以將相關性較高的功能進行模組化的動作。
以此範例來說,取得作者及電子郵件可以獨立出來建立一個關於模組(about.py),而新增及刪除文章則可以獨立出來為文章模組(post.py),專門處理文章相關的動作,如下範例:
about.py
#取得作者
def get_author():
return "Mike"
#取得電子郵件
def get_email():
return "example@gmail.com"
post.py
#新增文章
def add_post(title):
pass
#刪除文章
def delete_post(title):
pass
當然,模組(Module)除了可以包含函式(Function)外,也可以為類別(Class),我們以 post.py 為例:
class Post:
# 建構式
def __init__(self):
self.titles = []
# 新增文章
def add_post(self, title):
self.titles.append(title)
# 刪除文章
def delete_post(self, title):
self.titles.remove(title)
所以現在我們專案中有一個主程式 app.py 及兩個模組(Module),分別為 about.py 和 post.py。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2020/01/python-module-and-package.html
)網站觀看更多精彩內容。
拍手 1 留言 0 觀看 16 收藏 0

Learn Code With Mike品牌創辦人

01/21 22:53

不可不知的Scrapy框架爬取下一層網頁資料實作
本文以INSIDE硬塞的網路趨勢觀察網站( https://www.inside.com.tw/ )首頁的熱門文章為例,來和大家分享如何在Scrapy框架中爬取下一層的網頁內容。
Q: Scrapy網頁爬蟲爬取下一層網頁內容
建立Scrapy網頁爬蟲檔案(hot_news.py),在parse()方法(Method)的地方,透過Scrapy框架的xpath()方法(Method),來爬取INSIDE硬塞的網路趨勢觀察網站的所有熱門文章下一層網頁網址,如下範例:
import scrapy
class HotNewsSpider(scrapy.Spider):
name = 'hot_news'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
post_urls = response.xpath(
"//a[@class='hero_menu_link']/@href").getall()
詳細的Scrapy xpath定位元素方法教學可以參考[Scrapy教學5]掌握Scrapy框架重要的XPath定位元素方法文章( https://www.learncodewithmike.com/2021/01/scrapy-xpath-selectors.html )。取得了所有熱門文章的下一層網頁網址後,就可以透過迴圈來進行請求,如下範例:
import scrapy
class HotNewsSpider(scrapy.Spider):
name = 'hot_news'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
post_urls = response.xpath(
"//a[@class='hero_menu_link']/@href").getall()
for post_url in post_urls:
yield scrapy.Request(post_url, self.parse_content)
其中Request方法(Method)的第一個參數,就是「請求網址」,也就是熱門文章的下一層網頁網址,而第二個參數就是請求該網址後,所要執行的方法(Method),而parse_content()方法(Method)中,就是來爬取熱門文章的下一層網頁內容,以本文為例就是包含「文章標題」及「文章摘要」。
接著,就可以在parse_content()方法(Method)中,同樣使用Scrapy框架的xpath()方法(Method),來爬取「文章標題」及「文章摘要」,如下範例:
import scrapy
class HotNewsSpider(scrapy.Spider):
...
def parse_content(self, response):
# 熱門文章標題
hot_news_title = response.xpath(
"//h1[@class='post_header_title js-auto_break_title']/text()").get()
# 熱門文章摘要
hot_news_intro = response.xpath(
"//div[@class='post_introduction']/text()").get()
print(f"熱門文章標題:{hot_news_title},\n熱門文章摘要:{hot_news_intro}")
利用以下的指令執行Scrapy網頁爬蟲:
$ scrapy crawl hot_news
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2021/02/scrapy-follow-links-and-collect-data.html
)網站觀看更多精彩內容。
拍手 2 留言 0 觀看 225 收藏 0

Learn Code With Mike品牌創辦人

01/21 21:53

3個實用的Pandas套件清理重複資料教學
本文以Kaggle網站的Amazon 2009-2019年Top50暢銷書資料集( https://www.kaggle.com/sootersaalu/amazon-top-50-bestselling-books-2009-2019 )為例,教大家如何查找及清理資料集的重複資料,提升資料的品質。
Q: Pandas duplicated()查找重複資料
想要使用Pandas套件查找資料集的重複資料,利用duplicated()方法(Method)可以得到每筆資料的重複狀態,True代表重複,False為沒重複,如下範例:
import pandas as pd
df = pd.read_csv('bestsellers with categories.csv')
print(df.duplicated())
接著,透過Pandas套件的括號[]語法即可檢視重複資料的各欄位資料,如下範例:
df = pd.read_csv('bestsellers with categories.csv')
print(df[df.duplicated()])
Pandas套件的duplicated()方法(Method)除了能夠查找所有欄位資料完全一樣的重複資料外,也提供了以下兩個關鍵字參數,來客製化查找的方式:
1. subset-查找特定欄位的重複資料
2. keep-保留第一筆(first)、最後一筆(last)或全部(False)的重複資料
如下範例:
df = pd.read_csv('bestsellers with categories.csv')
column_names = ['Name', 'Author', 'Year', 'Genre']
df = df[df.duplicated(subset=column_names, keep=False)]
print(df)
以上範例即是查找Name(書名)、Author(作者)、Year(出版年)及Genre(類型)四個欄位都一樣的重複資料,並且全部保留。
Q: Pandas drop_duplicates()刪除重複資料
從資料集裡找到重複的資料後,接下來,最常見的就是進行刪除或群組處理。
而要刪除完全一樣的重複資料,可以利用Pandas套件的drop_duplicates()方法(Method),如下範例:
df = pd.read_csv('bestsellers with categories.csv')
df.drop_duplicates(inplace=True)
其中,inplace關鍵字參數代表直接從現有資料集中刪除重複資料。
另外,要刪除特定欄位重複的資料,同樣可以透過subset及keep關鍵字參數來達成,如下範例:
df = pd.read_csv('bestsellers with categories.csv')
column_names = ['Name', 'Author', 'Year', 'Genre']
df.drop_duplicates(subset=column_names, keep='first', inplace=True)
Q: Pandas groupby()、agg()群組重複資料
除了可以利用Pandas套件的drop_duplicates()方法(Method)刪除重複資料外,有時基於商業邏輯,可以透過群組的方式解決重複資料。
這時候,就可以利用Pandas套件的groupby()方法(Method)群組相同資料的欄位,以及agg()方法(Method),統計運算剩餘的不同資料欄位,達到合併重複資料成一筆的效果,如下範例:
df = pd.read_csv('bestsellers with categories.csv')
column_names = ['Name', 'Author', 'Year', 'Genre']
summeries = {'User Rating': 'mean', 'Reviews': 'sum', 'Price': 'mean'}
df = df.groupby(by=column_names).agg(summeries).reset_index()
print(df)
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2022/01/pandas-drop-duplicate-data.html
)網站觀看更多精彩內容。
拍手 3 留言 0 觀看 80 收藏 0

Learn Code With Mike品牌創辦人

01/21 21:25

善用Pandas套件幫你清理資料範圍異常的資料
本文將以Kaggle網站的Kindle Store電子書店評論資料集( https://www.kaggle.com/bharadwaj6/kindle-reviews )為例,來和大家分享如何利用Pandas套件來處理數字範圍錯誤。
Q: Pandas數字範圍處理
首先,利用Pandas套件讀取資料集,如下範例:
import pandas as pd
df = pd.read_csv('kindle_reviews.csv')
print(df)
假設我們只想要分析「overall評價欄位」1~4分的書籍,這時候,評價為5的書籍資料就超出了分析需求範圍,如果沒有進行處理,就會讓分析結果失去準確性。
而想要利用Pandas套件處理數字範圍的資料,有以下兩種常見的方式:
1.刪除資料
通常會建議超過範圍資料的占比較小時,才考慮透過刪除的方式,否則,超過範圍資料的占比過大,刪除可能造成重要資料訊息的遺失。
而Pandas套件刪除資料的方式分為兩種,可以是選擇所需的範圍資料,如下範例:
df = pd.read_csv('kindle_reviews.csv')
df = df[df['overall'] <= 4]
或將超過範圍的資料刪除,如下範例:
df = pd.read_csv('kindle_reviews.csv')
df.drop(df[df['overall'] > 4].index, inplace=True)
可以透過assert陳述式來進行欄位資料範圍的驗證,如下範例:
assert df['overall'].max() <= 4
PS.沒有顯示訊息代表驗證通過
Q: Pandas日期範圍處理
另一個常見的資料範圍錯誤,就是日期資料,像是含有未來日期的資料等。要利用Pandas套件處理日期範圍錯誤的資料,可以先將欄位資料型態轉型為日期,方便之後的日期資料操作,如下範例:
df = pd.read_csv('kindle_reviews.csv')
df['reviewTime'] = pd.to_datetime(df['reviewTime'])
print(df)
接著,同樣可以使用下兩種解決方法:
1.刪除資料
引用datetime模組(Module),來取得目前的日期,如下範例:
import pandas as pd
import datetime
df = pd.read_csv('kindle_reviews.csv')
df['reviewTime'] = pd.to_datetime(df['reviewTime'])
today = datetime.date.today()
這時候,就可以使用Pandas套件,利用目前的日期來選擇有效的「ReviewTime評論日期欄位」資料,如下範例:
df = pd.read_csv('kindle_reviews.csv')
df['reviewTime'] = pd.to_datetime(df['reviewTime'])
today = datetime.date.today()
df = df[df['reviewTime'].dt.date <= today]
或是刪除「ReviewTime評論日期欄位」中含有未來日期的資料,如下範例:
df = pd.read_csv('kindle_reviews.csv')
df['reviewTime'] = pd.to_datetime(df['reviewTime'])
today = datetime.date.today()
df.drop(df[df['reviewTime'].dt.date > today].index, inplace=True)
刪除後,利用assert陳述式來驗證「ReviewTime評論日期欄位」不含未來日期的資料,如下範例:
assert df.reviewTime.max().date() <= today
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2022/01/processing-data-range-with-pandas.html
)網站觀看更多精彩內容。
拍手 3 留言 0 觀看 46 收藏 0

104學習精靈x聯成

聯成

10/07 00:00

觀看 2337 收藏 0

104學習精靈x電腦技能基金會

電腦技能基金會 精選線上課程

02/01 00:00

觀看 668 收藏 2

104學習精靈x商業發展研究院

商業發展研究院 精選線上課程

08/13 00:00

觀看 167 收藏 7

104學習精靈xHahow好學校

Hahow好學校 精選線上課程

09/29 11:56

觀看 781 收藏 23

104學習精靈xCupoy

01/29 15:40

觀看 718 收藏 13

Learn Code With Mike品牌創辦人

01/20 21:26

教你用Pandas套件清理資料中的常見資料型態問題(下)
想要實作資料分析,讀取資料是第一步所要執行的動作,而如果沒有正確的進行資料前處理(Data Preprocessing),就會影響最後分析結果的準確性及可靠性。
本文就先針對「資料型態」,來和大家分享如何有效找出髒資料(Dirty Data),並且利用Pandas套件來進行資料處理或清理,避免髒資料(Dirty Data)導致分析的副作用。
Q: Pandas類別資料型態(category)處理
在實作機器學習或分類資料的時候,有時會以數字來分別表示不同類別的資料。
同樣以Kaggle網站的ASUS筆電資料集( https://www.kaggle.com/bhageshcodebeast/asus-laptops-2020-jun )為例,為了進行示範,Mike將「Category筆電類別欄位」利用以下三個數字表示:
0-其他
1-Premium
2-Platinum
Pandas讀取資料集後,如下範例:
import pandas as pd
df = pd.read_csv('AsusLaptops.csv')
print(df)
而各欄位的資料型態,如下範例:
import pandas as pd
df = pd.read_csv('AsusLaptops.csv')
print(df.info())
可以看到Pandas套件判定「Category筆電類別欄位」為int64(整數)型態,當利用Pandas套件的describe()方法(Method)進行摘要性統計的時候,就會看到數字型態的統計結果,如下範例:
import pandas as pd
df = pd.read_csv('AsusLaptops.csv')
print(df['Category'].describe())
但事實上,「Category筆電類別欄位」為類別資料型態(category),如果沒有將欄位進行轉型,就有可能誤導後續的操作或統計。
解決方法,可以使用Pandas套件的astype()方法(Method),將「Category筆電類別欄位」轉型為類別型態(category),這時候,再透過describe()方法(Method)來查看摘要性統計的時候,就會是類別型態(category)的統計結果,如下範例:
import pandas as pd
df = pd.read_csv('AsusLaptops.csv')
df['Category'] = df['Category'].astype('category') #轉型
print(df['Category'].describe())
以上就是在進行資料分析的過程中,常見的資料型態問題,本文和大家分享了利用Pandas套件的info()方法(Method),來查看各欄位的資料型態是否與需求相符,如果其中含有髒資料(Dirty Data),可以使用strip()方法(Method)進行資料清理,以及透過astype()方法(Method)轉型為正確的資料型態。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2021/12/processing-data-type-with-pandas.html
)網站觀看更多精彩內容。
拍手 2 留言 0 觀看 161 收藏 0
工作機會

python工程師

英特拉金融科技股份有限公司

台北市大安區 3年以上 大學

待遇面議

Python Engineer

財報雲數位科技股份有限公司

台北市中山區 2年以上 大學

待遇面議
我要應徵