蛤~叫我嗎?我可是處理資料的功夫高手!Licensed by Adobe Stock
昨天 Meiko 已經和 Jason 學會了 JSON 檔案的讀取與操作,接下來我們要看一下 Python 能否處理常見的試算表檔案!讓我們看下去...
Meiko:「哈,你真是愛賣關子。對了,可是平常我們在公司比較常用到的是試算表耶,你有辦法也把試算表的檔案讀進來做運算嗎?」
Jason:「嘿黑!這個時候就用到一個厲害的模組套件,叫做 pandas 了!它的功用主要就是來處理試算表這類的檔案,能夠很快得讀取,用起來就讓你處理資料時擁有功夫熊貓般靈活的身手!呼哈~」
Meiko:「你會不會入戲太深拉?秀個例子來看看!」
請到這個連結下載檔案後,再解壓縮,並且上傳到自己的 Colab 檔案上傳區,跟Day-20上傳 json 檔案是一樣的做法。
Jason:「對轟,都沒讓你看到你當然沒辦法感受,我就有點自嗨...」
import pandas as pd
currySalesFile="currySales.xlsx"
pdCurrySalesFile=pd.read_excel(currySalesFile)
print (pdCurrySalesFile.head())
Jason:「像這樣,我們先用import
把pandas
這個套件叫進來,然後用as pd
的方式。」
import pandas as pd
Jason:「接下來使用 pandas 的模組時,我們都用 pd 當作代稱。接下來使用 pandas 的模組時,我們都用 pd 當作代稱。然後設定一個 currySalesFile 當作變數,把剛剛上傳的 currySales.xlsx 檔案指定過去。」
creditCardFile="currySalesFile.xlsx"
Jason:「再來,透過pd.read_excel()
的函式,將currySalesFile
裝入,」
pdCurrySalesFile= pd.read_excel(currySalesFile)
Jason:「就會像這排做的事情一樣,意思叫pd
的read_excel
函式 把currySalesFile
這個檔案讀入,並且放到pdCreditCardFile
裡面囉!」
Meiko:「好像不會太難耶,但是怎麼把資料讀出來的?」
Jason:「這就是我最後用print()
函式做到的事拉!」
Meiko:「但是你有用一個.head()
的方式讀入是什麼意思?」
Jason:「歐,這是一個 pandas 內建的一個快速瀏覽資料欄位的方式,預設是會顯示前 5 筆的資料!」
Meiko:「你這樣講我就懂了,真的就只有顯示前 5 筆資料耶!」
Jason:「接下來,我就簡單跟你介紹一下 pandas 有什麼厲害的地方!首先,你可以用.describe()
的方式,pandas已經內建了基本統計的運算功能,舉凡個數、最大、最小值、中位數都可以看到唷!」
pdCurrySalesFile.describe()
Meiko:「哇,好多資訊呀,如果我只想營業額的平均值、最大、最小值有辦法嗎?」
Jason:「你記得我們先前提過 key 的概念,現在一樣可以在 pandas 的 DataFrame 中看到唷!」
mean=pdCurrySalesFile['price'].mean()
max=pdCurrySalesFile['price'].max()
min=pdCurrySalesFile['price'].min()
print(mean,max,min)
Jason:「像這邊,我們就可以針對'price'
這個 key 去看它的平均值、最大及最小值。」
Meiko:「有辦法讓我更快知道資料內容有什麼特徵的嗎?」
Jason:「Okay,讓我跟你講一個 pandas 很厲害的功能,叫做groupby
它可以幫你計算特定的 column 有什麼特徵!在這邊我們根據"set"
讓 pandas 去做分類,你記得我們有幾種餐點嗎?」
Meiko:「主餐就有分牛肉、豬排、雞肉和可樂餅,然後口味又分『甘口』和『辛口』?」
Jason:「對啊,所以如果你要很快知道,到底資料裡面有哪些類型的話,你可以先 groupby 'content'這個欄位,然後你可以用.size()
的方式,去知道每個餐點賣出了幾份!」
contents = pdCurrySalesFile.groupby("content")
contents.size()
Meiko:「哇,這個功能好強大呀,這樣我就不用一個個算慢慢看了耶!」
Jason:「你還可以用.get_group(特定名稱)
,這樣 pandas 就會把這些名稱的資料,一次顯示出來給你看唷!讓我用『甘口可樂餅咖哩』舉個例子給你看!」
contents.get_group("甘口可樂餅咖哩")
Meiko:「難怪你一開始說,pandas 的功夫強大!感覺才短短幾行程式碼,就找到好多有用的資訊!」
我大寶寶~拉,經過前面 20 天的練習,我們終於進入到資料科學的部分,今天的 pandas 教學,希望能讓大家之後遇到資料的時候。有能力讀取檔案,並且把檔案的內容做一個快速的理解,透過 .describe()、max()、min()、mean()就可以大略知道這筆資料的特性。接著,如果需要知道某些欄位的狀態,可以進一步使用groupby
和get_group
,交叉使用這些技巧,你也能夠開始熟悉資料分析囉!
你可以拿手上既有的資料進行練習,又或在 currySalesFile 中,除了 content 之外,你也可以拿其他的欄位進行簡單的運算唷,剩下的就交給你拉!
歡迎登入留言跟我分享你的想法唷!(登入不麻煩,點一下 FB 登入就可以留言了!)
1.喜歡這樣方式學 Python 的朋友請留言『+1』
2.如果前面的內容忘記了,趕快看一下大寶寶這一系列的看對話學 Python 資料分析,用情境故事帶你入門的列表!就能夠繼續 Happy Coding 囉!
大寶寶用情境故事來講解Python資料分析,寫得很清楚也很有趣,看完之後我也想把大寶寶這系列的文章分享給我的課堂學生(國立員林高中)來參考學習。
另外「Day-22 開檔讀檔,學會讀取檔並進行簡單計算(下)」的範例檔下載currySales.zip連結內容好像有錯,可以幫忙看一下嗎?謝謝您!
Jerjyh 您好,
感謝您的留言!我已經更新了連結的檔案囉,可以正確下載了!再請您試試看!
大寶寶