104學習精靈

巨量資料處理與分析

巨量資料處理與分析
關注
邀請朋友
邀請朋友

Line

Facebook

複製連結

取消
關於教室
關注人數 0 人
104人力銀行從職缺中挑選出常見技能所成立的官方教室,提供大家進行共學互動。
學習主持人
持續分享知識,
有機會成為官方教室主持人
關於教室
關注人數 0 人
104人力銀行從職缺中挑選出常見技能所成立的官方教室,提供大家進行共學互動。
學習主持人
持續分享知識,
有機會成為官方教室主持人
Hi~ 歡迎分享學習資源,有學習問題可匿名向Giver發問!
我要分享
我要提問

巨量資料處理與分析 學習推薦

全部
影片
文章
Mike Ku

Learn Code With Mike品牌創辦人

2021/11/24

3個優化Pandas套件讀取大型CSV檔案資料的技巧
本文以Kaggle網站的「Netflix data with IMDB scores added( https://www.kaggle.com/sarahjeeeze/imdbfile )」資料集為例,來和大家分享3個技巧,減少Pandas套件在處理大型資料時的記憶體耗用,以及提升讀取效率。
Q:Pandas如何去除不需要的資料?
在資料分析的過程中,有時並不是所有的CSV檔案欄位都是會使用到的,所以在呼叫Pandas套件的read_csv()方法(Method)時,相對於讀取所有欄位的大量資料,可以設定usecols關鍵字參數,僅讀取會使用到欄位,如下範例:
#所需的欄位
usecols = ['type', 'title', 'director', 'date_added', 'rating']
df = pd.read_csv('mycsvfile.csv', usecols=usecols)
讀取所要的資料欄位後,其中具有遺漏值的資料如果不需要,可以透過Pandas套件的dropna()方法(Method)進行去除,節省後續記憶體處理的資料量,如下範例:
new_df = df.dropna()
當然,dropna()方法(Method)還有以下3個關鍵字參數能夠依據需求來設定去除遺漏值的條件:
1.how:any(只要任一欄位有遺漏值就去除)、all(所有欄位皆有遺漏值就去除)
2.thresh:設定一筆資料有幾個遺漏值就移除
3.subset:設定檢查遺漏值的欄位
Q:Pandas如何精確設定欄位資料型態?
使用Pandas套件的read_csv()方法(Method)讀取CSV檔案資料時,也需要對所讀取的欄位設定精確的資料型態,尤其是數值類型的資料,避免耗用多餘的記憶體資源。
舉例來說,同樣是浮點數的資料,如果能夠視需求設定讀取float32型態,將會比float64型態佔用較少的記憶體資源,這時後就可以搭配Numpy套件來進行設定,安裝指令如下:
$ pip install numpy
而設定Pandas套件的讀取資料型態如下範例:
import pandas as pd
import numpy as np
usecols = ['type', 'title', 'director', 'date_added', 'rating']
df = pd.read_csv('mycsvfile.csv',
usecols=usecols,
dtype={'type':str,
'title':str,
'director':str,
'date_added':str,
'rating':np.float32})
new_df = df.dropna()
Q:Pandas如何切分資料?
相較於一次讀取大量的資料,我們可以將資料依需求或記憶體資源切分為多個區塊(chunk),最後再把處理好的各區塊(chunk)進行合併,如下範例:
#清理區塊中的遺漏值函式
def chunk_cleaning(data_chunk):
cleaned_chunk = data_chunk.dropna()
return cleaned_chunk
#將CSV檔案以1000筆資料切分為一區塊
data_chunks = pd.read_csv('mycsvfile.csv', chunksize=1000)
chunk_list = [] #暫存各區塊的處理結果
for data_chunk in data_chunks:
cleaned_chunk = chunk_cleaning(data_chunk) #清理區塊中的遺漏值
chunk_list.append(cleaned_chunk)
combined_chunk = pd.concat(chunk_list) #將各區塊的結果進行合併
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/06/optimize-pandas-speed-and-memory.html )網站觀看更多精彩內容。
2 0 126 2
Mike Ku

Learn Code With Mike品牌創辦人

2021/11/24

4個必學的Pandas套件處理遺漏值資料方法
本文以Kaggle網站的「Netflix data with IMDB scores added( https://www.kaggle.com/sarahjeeeze/imdbfile )」資料集為例,來和大家分享筆者在處理遺漏值(Missing Value)時,常用的Pandas套件方法(Method)。
Q:Pandas如何探索遺漏值(Missing Value)?
如果想要探索每一個欄位資料是否有遺漏值(Missing Value),通常會使用Pandas套件的isnull()方法(Method)來查看,如下範例:
df = pd.read_csv('mycsvfile.csv')
print(df.isnull())
Pandas套件的isnull()方法(Method)會將所有欄位資料內容顯示為布林值(Boolean),只要是遺漏值(Missing Value)就會顯示為True。
但是這樣並沒有辦法讓我們快速瞭解每個欄位的遺漏值(Missing Value)狀況,這時候就可以搭配使用Pandas套件的sum()方法(Method),將每個欄位進行加總,瞭解每個欄位的遺漏值(Missing Value)個數,如下範例:
df = pd.read_csv('mycsvfile.csv')
print(df.isnull().sum())
由於在Python中,True代表1,False代表0,所以利用Pandas套件的isnull()與sum()方法(Method),就能夠知道資料集的每個欄位遺漏值(Missing Value)個數。
Q:Pandas如何檢視遺漏值(Missing Value)?
探索了每個欄位的遺漏值(Missing Value)個數後,如果想要特別檢視特定欄位的遺漏值(Missing Value)資料內容,就可以利用以下的Pandas套件篩選語法:
df = pd.read_csv('mycsvfile.csv')
print(df[df.date_added.isnull()])
以上範例,就是檢視date_added(新增日期)欄位的11筆遺漏值(Missing Value)資料內容。
Q:Pandas dropna()方法(Method)如何使用?
Pandas套件提供了dropna()方法(Method)來因應不同的需求,包含:
1.dropna(how='any'):任一欄位有遺漏值(Missing Value)的資料就移除,如下範例:
df = pd.read_csv('mycsvfile.csv')
print(df.dropna(how='any'))
2.dropna(how='all'):所有欄位皆有遺漏值(Missing Value)的資料就移除,如下範例:
df = pd.read_csv('mycsvfile.csv')
print(df.dropna(how='all'))
3.dropna(subset=['欄位名稱', ...], how='any'):任一個指定的欄位有遺漏值(Missing Value)的資料就移除,如下範例:
df = pd.read_csv('mycsvfile.csv')
print(df.dropna(subset=['director', 'date_added'], how='any'))
4.dropna(subset=['欄位名稱', ...], how='all'):指定的欄位皆有遺漏值(Missing Value)的資料就移除,如下範例:
df = pd.read_csv('mycsvfile.csv')
print(df.dropna(subset=['director', 'date_added'], how='all'))
Q:Pandas fillna()方法(Method)如何使用?
另一個遺漏值(Missing Value)資料的處理方式,就是填入自訂的值,這時候就能利用Pandas套件的fillna()方法(Method),指定value關鍵字參數(Keyword Argument)為想要填入的值即可,如下範例:
df = pd.read_csv('mycsvfile.csv')
df['director'].fillna(value='Not Found', inplace=True)
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/07/pandas-handle-missing-value.html )網站觀看更多精彩內容。
2 0 118 2

推薦給你

知識貓星球

喵星人

12/12 13:49

Google發表:Gemini 2.0 全新AI模組介紹、四大亮點一次看
在ChatGPT傳出全球大當機災情的同一天,Google 發布了全新 AI 模型 Gemini 2.0。
不僅支援多模態物件,Gemini 2.0採用更精準、強大的代理式AI系統,幫助使用者主動提前思考並完善指令,打造更符合使用者需求的全方位AI人工智慧助理!
▍Gemini 2.0 亮點搶先看
※ 深度學習有效處理複雜問題:採用「深度研究」學習技術功能,大量運用高級推理和長上下文功能充當研究助理,探索複雜的主題並代表使用者編寫報告。
※ 多模態能力生成準確內容: 除了文字生成外,Gemini 2.0 還能直接生成圖片和音訊,並且能有效處理口音問題轉化成更準確的訊息內容。
※ 實現代理式 AI 的多元運用: 不只是AI助理,Gemini 2.0升級的代理式AI系統,能更主動的做出決策,為使用者提前思考,並在使用者的監督下執行任務。Gemini 2.0將以此為基石,使用在Project Astra助理工具與其他開發者工具中。
※ 活化並整合 Google 產品: Gemini 2.0 將逐步整合到 Google 的搜尋、地圖等產品中,為使用者帶來更智能、更個人化的體驗。
Gemini 2.0預計2025年1月正式推出,在此之前,使用者們可以透過Google AI Studio網站搶先體驗Gemini 2.0測試版的與眾不同。
➤ 立即試用:
➤ 歡迎在104學習精靈關注【AI趨勢報-科技愛好者的產地】獲得更多科技新知!
0 0 3938 1
你可能感興趣的教室