iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
0
AI & Data

看對話學 Python 資料分析,用情境故事帶你入門系列 第 22

Day-22 開檔讀檔,學會讀取檔並進行簡單計算(下)

  • 分享至 

  • xImage
  •  


蛤~叫我嗎?我可是處理資料的功夫高手!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:「像這樣,我們先用importpandas這個套件叫進來,然後用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:「就會像這排做的事情一樣,意思叫pdread_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()就可以大略知道這筆資料的特性。接著,如果需要知道某些欄位的狀態,可以進一步使用groupbyget_group,交叉使用這些技巧,你也能夠開始熟悉資料分析囉!

你可以拿手上既有的資料進行練習,又或在 currySalesFile 中,除了 content 之外,你也可以拿其他的欄位進行簡單的運算唷,剩下的就交給你拉!

給大寶寶留言、分享、鼓勵

歡迎登入留言跟我分享你的想法唷!(登入不麻煩,點一下 FB 登入就可以留言了!)

1.喜歡這樣方式學 Python 的朋友請留言『+1』
2.如果前面的內容忘記了,趕快看一下大寶寶這一系列的看對話學 Python 資料分析,用情境故事帶你入門的列表!就能夠繼續 Happy Coding 囉!


上一篇
Day-21 開檔讀檔,學會讀取檔並進行簡單計算(中)
下一篇
Day-23 學會進階資料處理(上),pandas concat 及條件篩選
系列文
看對話學 Python 資料分析,用情境故事帶你入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
jerjyh
iT邦新手 5 級 ‧ 2021-08-03 11:33:57

大寶寶用情境故事來講解Python資料分析,寫得很清楚也很有趣,看完之後我也想把大寶寶這系列的文章分享給我的課堂學生(國立員林高中)來參考學習。
另外「Day-22 開檔讀檔,學會讀取檔並進行簡單計算(下)」的範例檔下載currySales.zip連結內容好像有錯,可以幫忙看一下嗎?謝謝您!

大寶寶 iT邦新手 5 級 ‧ 2021-10-31 20:36:45 檢舉

Jerjyh 您好,

感謝您的留言!我已經更新了連結的檔案囉,可以正確下載了!再請您試試看!

大寶寶

我要留言

立即登入留言