獲取數(shù)據有方法教學課件_第1頁
獲取數(shù)據有方法教學課件_第2頁
獲取數(shù)據有方法教學課件_第3頁
獲取數(shù)據有方法教學課件_第4頁
獲取數(shù)據有方法教學課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

獲取數(shù)據有方法:數(shù)據采集全流程教學課件第一章數(shù)據獲取基礎概念什么是數(shù)據獲?。繑?shù)據科學第一步數(shù)據獲取是數(shù)據科學項目的起始階段,直接決定了后續(xù)數(shù)據分析和建模的質量。沒有高質量的數(shù)據,再先進的算法也無法產生有價值的洞察。數(shù)據來源識別包括識別和評估各種潛在的數(shù)據源,如內部數(shù)據庫、外部API、公開數(shù)據集、網頁內容等,確保數(shù)據來源的可靠性和合法性。采集方式選擇根據數(shù)據特點和業(yè)務需求,選擇最適合的數(shù)據采集方法,平衡采集效率、數(shù)據質量和資源成本等多個因素。數(shù)據質量評估數(shù)據獲取的重要性數(shù)據質量決定模型性能機器學習模型的性能瓶頸往往不在于算法的復雜度,而在于訓練數(shù)據的質量。高質量的數(shù)據可以讓簡單的算法獲得優(yōu)異表現(xiàn),而低質量的數(shù)據即使使用最先進的算法也難以取得理想效果。"垃圾進,垃圾出"-這是數(shù)據科學領域最經典的格言之一良好的數(shù)據獲取實踐包括:數(shù)據來源的多樣化驗證、數(shù)據采集過程的標準化、數(shù)據質量的持續(xù)監(jiān)控,以及數(shù)據更新機制的建立。數(shù)據獲取的四大途徑手動下載文件最直接的數(shù)據獲取方式,適用于靜態(tài)數(shù)據集。常見格式包括CSV、Excel、JSON等。優(yōu)點是簡單易用,缺點是無法實現(xiàn)自動化更新,適合一次性數(shù)據分析項目。訪問數(shù)據庫通過SQL查詢從關系型數(shù)據庫或NoSQL數(shù)據庫中提取數(shù)據。這種方式可以精確控制獲取的數(shù)據范圍和格式,是企業(yè)內部數(shù)據分析的主要方式。使用API接口應用程序編程接口(API)提供了標準化的數(shù)據訪問方式。RESTfulAPI和GraphQL是最常用的類型,可以實現(xiàn)實時數(shù)據獲取和自動化采集。網絡爬蟲抓取使用程序自動瀏覽網頁并提取信息的技術。適用于公開網站數(shù)據采集,但需要注意法律合規(guī)和技術反制措施。數(shù)據獲取流程全覽需求分析明確業(yè)務目標,確定所需數(shù)據類型、格式和更新頻率來源識別調研和評估潛在數(shù)據源,比較成本效益數(shù)據采集實施數(shù)據獲取方案,建立采集流程數(shù)據清洗處理缺失值、異常值和格式不一致問題數(shù)據存儲選擇合適的存儲方案,確保數(shù)據安全和可訪問性數(shù)據獲取中的挑戰(zhàn)數(shù)據孤島與權限限制企業(yè)內部數(shù)據分散在不同系統(tǒng)中,缺乏統(tǒng)一的數(shù)據管理平臺。各部門對數(shù)據訪問權限的嚴格控制,增加了數(shù)據獲取的復雜性。需要建立跨部門協(xié)作機制。數(shù)據格式多樣且不規(guī)范同一類型的數(shù)據可能以多種格式存在,如CSV、Excel、JSON、XML等。字段命名不統(tǒng)一,數(shù)據結構差異較大,增加了數(shù)據整合的難度。數(shù)據質量參差不齊數(shù)據源的質量控制標準不一致,導致數(shù)據存在缺失值、重復記錄、格式錯誤等問題。歷史數(shù)據的維護不當也會影響數(shù)據的可用性。法律合規(guī)與倫理問題數(shù)據獲取必須遵守相關法律法規(guī),如GDPR、個人信息保護法等。網絡爬蟲需要尊重robots.txt規(guī)則,避免對服務器造成過大負載。第二章數(shù)據采集工具與技術掌握多樣化的數(shù)據采集工具,是提高數(shù)據獲取效率的關鍵無代碼數(shù)據采集工具介紹PowerQuery-Excel內置神器MicrosoftPowerQuery是Excel和PowerBI內置的數(shù)據連接和轉換工具。它提供直觀的圖形界面,讓非程序員也能輕松進行數(shù)據獲取和預處理。支持連接多種數(shù)據源:網頁、數(shù)據庫、API、文件等提供數(shù)據預覽和實時轉換功能可以創(chuàng)建可重復使用的數(shù)據獲取流程自動檢測數(shù)據類型和格式WebScraper-瀏覽器插件Chrome和Firefox瀏覽器的擴展插件,通過可視化界面定義抓取規(guī)則,無需編程知識即可采集網頁數(shù)據。實用技巧使用PowerQuery時,建議先對數(shù)據源進行小規(guī)模測試,確認數(shù)據結構和質量后再進行大批量采集。Python爬蟲基礎01使用requests庫發(fā)送HTTP請求requests是Python中最流行的HTTP庫,提供簡潔的API來發(fā)送GET、POST等請求。它自動處理cookies、會話管理和重定向,讓HTTP請求變得簡單。02BeautifulSoup解析HTML頁面BeautifulSoup是HTML和XML解析庫,能夠從復雜的網頁結構中準確提取所需信息。支持CSS選擇器和XPath,使元素定位更加精確。03Selenium處理動態(tài)網頁對于JavaScript渲染的動態(tài)內容,Selenium能夠控制真實瀏覽器,模擬用戶操作,獲取完整的頁面內容。雖然速度較慢,但兼容性最好。#Python爬蟲基礎代碼示例importrequestsfrombs4importBeautifulSoup#發(fā)送HTTP請求response=requests.get('')soup=BeautifulSoup(response.content,'html.parser')#提取標題titles=soup.find_all('h1')fortitleintitles:print(title.text)API數(shù)據獲取實戰(zhàn)API認證方式API密鑰認證OAuth2.0授權基本認證(用戶名/密碼)令牌認證API數(shù)據獲取三步驟1了解API文檔與認證方式仔細閱讀API文檔,了解端點URL、請求參數(shù)、返回格式和限制條件。獲取必要的認證憑據。2使用Python的requests調用API構造正確的請求頭和參數(shù),處理認證信息,發(fā)送API請求并處理響應。3解析JSON格式數(shù)據使用json模塊解析API返回的JSON數(shù)據,提取所需字段并轉換為合適的數(shù)據結構。importrequestsimportjson#API調用示例headers={'Authorization':'BearerYOUR_TOKEN'}response=requests.get('/data',headers=headers)data=response.json()數(shù)據清洗與存儲Pandas數(shù)據處理使用pandas進行數(shù)據清洗、轉換、去重和格式標準化。處理缺失值和異常值,確保數(shù)據質量。關系型數(shù)據庫存儲使用MySQL、PostgreSQL等數(shù)據庫存儲結構化數(shù)據,支持復雜查詢和事務處理。NoSQL數(shù)據庫存儲使用MongoDB等NoSQL數(shù)據庫存儲非結構化數(shù)據,具有更好的擴展性和靈活性。文件存儲方案使用CSV、JSON、Parquet等文件格式存儲數(shù)據,便于版本控制和跨平臺使用。Python爬蟲實戰(zhàn)代碼以下是一個完整的Python爬蟲示例,展示了如何使用requests和BeautifulSoup庫來抓取網頁數(shù)據:importrequestsfrombs4importBeautifulSoupimportpandasaspdimporttimeclassWebScraper:def__init__(self,base_url):self.base_url=base_urlself.session=requests.Session()self.session.headers.update({'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36'})defscrape_data(self,url):try:response=self.session.get(url)response.raise_for_status()soup=BeautifulSoup(response.content,'html.parser')#提取數(shù)據titles=soup.find_all('h2',class_='title')prices=soup.find_all('span',class_='price')data=[]fortitle,priceinzip(titles,prices):data.append({'title':title.text.strip(),'price':price.text.strip()})returndataexceptExceptionase:print(f"抓取失敗:{e}")return[]defsave_to_csv(self,data,filename):df=pd.DataFrame(data)df.to_csv(filename,index=False,encoding='utf-8-sig')print(f"數(shù)據已保存到{filename}")#使用示例scraper=WebScraper('')data=scraper.scrape_data('/products')scraper.save_to_csv(data,'products.csv')案例分享:使用PowerQuery采集電商價格數(shù)據PowerQuery電商數(shù)據采集實戰(zhàn)01連接網頁數(shù)據源在Excel中打開"數(shù)據"選項卡,選擇"從Web"選項,輸入目標電商網站的產品頁面URL。PowerQuery會自動識別頁面中的表格數(shù)據。02過濾與轉換數(shù)據使用PowerQuery編輯器對原始數(shù)據進行清洗:刪除不需要的列、重命名字段、轉換數(shù)據類型、過濾異常值。03自動刷新與更新設置數(shù)據連接的刷新頻率,實現(xiàn)價格數(shù)據的自動更新??梢栽O置為每小時、每天或按需刷新。注意事項電商網站通常有反爬蟲措施,頻繁訪問可能導致IP被封。建議設置合理的刷新間隔。通過這個案例,我們可以看到PowerQuery在處理結構化網頁數(shù)據方面的強大功能。它特別適合需要定期更新的價格監(jiān)控、庫存跟蹤等場景。案例分享:用Python爬取新聞網站頭條這個案例展示如何使用Python爬蟲技術從新聞網站獲取頭條新聞,并保存為Excel文件:importrequestsfrombs4importBeautifulSoupimportpandasaspdfromdatetimeimportdatetimeimporttimedefscrape_news_headlines(url):"""爬取新聞頭條"""headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36'}try:response=requests.get(url,headers=headers)response.encoding='utf-8'soup=BeautifulSoup(response.text,'html.parser')news_list=[]#根據具體網站調整選擇器headlines=soup.select('.news-title')times=soup.select('.news-time')forheadline,time_eleminzip(headlines,times):news_item={'標題':headline.get_text().strip(),'發(fā)布時間':time_elem.get_text().strip(),'采集時間':datetime.now().strftime('%Y-%m-%d%H:%M:%S'),'來源':url}news_list.append(news_item)returnnews_listexceptExceptionase:print(f"爬取失敗:{e}")return[]defsave_to_excel(data,filename):"""保存數(shù)據到Excel"""ifdata:df=pd.DataFrame(data)withpd.ExcelWriter(filename,engine='openpyxl')aswriter:df.to_excel(writer,sheet_name='新聞頭條',index=False)print(f"成功保存{len(data)}條新聞到{filename}")else:print("沒有數(shù)據可保存")#執(zhí)行爬取if__name__=="__main__":news_urls=['','']all_news=[]forurlinnews_urls:print(f"正在爬取:{url}")news_data=scrape_news_headlines(url)all_news.extend(news_data)time.sleep(2)#避免請求過快save_to_excel(all_news,f'新聞頭條_{datetime.now().strftime("%Y%m%d")}.xlsx')第三章實戰(zhàn)應用與最佳實踐理論與實踐相結合,掌握數(shù)據采集的核心技能規(guī)劃數(shù)據采集項目1需求分析階段明確業(yè)務目標,確定所需數(shù)據的類型、范圍、精度和更新頻率。評估數(shù)據獲取的成本效益,制定可行性方案。2方案設計階段選擇合適的數(shù)據源和采集技術,設計數(shù)據采集架構??紤]擴展性、可維護性和容錯性。3實施開發(fā)階段編寫數(shù)據采集程序,建立數(shù)據存儲和處理流程。進行小規(guī)模測試和調試。4部署監(jiān)控階段部署生產環(huán)境,建立監(jiān)控告警機制。制定運維規(guī)程和應急預案。成功的數(shù)據采集項目需要周密的規(guī)劃和系統(tǒng)性的思考。從需求分析到最終部署,每個階段都需要細致的考慮和充分的準備。數(shù)據質量評估1數(shù)據完整性檢查檢查數(shù)據集中的缺失值比例,識別關鍵字段的空值情況。分析數(shù)據采集過程中的丟失環(huán)節(jié)。缺失值統(tǒng)計與分布分析關鍵字段完整性驗證數(shù)據采集覆蓋率評估2異常值與重復數(shù)據處理識別和處理數(shù)據中的異常值,檢測重復記錄。建立數(shù)據清洗規(guī)則和標準。統(tǒng)計學方法檢測異常值重復記錄識別與去重數(shù)據一致性檢查3數(shù)據來源可信度分析評估數(shù)據源的權威性和可靠性,建立數(shù)據質量評分體系。數(shù)據源可信度評級交叉驗證機制數(shù)據質量指標體系合規(guī)與倫理遵守robots.txt規(guī)則robots.txt文件是網站所有者與網絡爬蟲之間的協(xié)議。爬蟲程序應該首先檢查目標網站的robots.txt文件,遵守其中規(guī)定的抓取規(guī)則,避免訪問被禁止的頁面和目錄。尊重數(shù)據隱私與版權嚴格遵守GDPR、個人信息保護法等相關法律法規(guī)。對于涉及個人隱私的數(shù)據,必須獲得明確授權。尊重內容創(chuàng)作者的版權,避免惡意抄襲和商業(yè)濫用。合理使用公開數(shù)據與API雖然數(shù)據是公開的,但仍需合理使用。避免對服務器造成過大負載,設置合理的訪問頻率。遵循API使用條款,不超過調用限制。維護良好的網絡環(huán)境。法律風險提醒數(shù)據采集涉及多項法律風險,包括但不限于侵犯版權、違反服務條款、侵犯隱私權等。建議在項目開始前咨詢專業(yè)法律意見。自動化采集與調度定時任務配置自動化數(shù)據采集是提高效率和保證數(shù)據時效性的關鍵技術。通過合理配置定時任務,可以實現(xiàn)無人值守的數(shù)據采集。Linux系統(tǒng)-Cron定時任務#每天凌晨2點執(zhí)行數(shù)據采集02***/usr/bin/python3/path/to/scraper.py#每小時執(zhí)行一次價格監(jiān)控0****/usr/bin/python3/path/to/price_monitor.pyWindows系統(tǒng)-任務計劃程序使用Windows任務計劃程序創(chuàng)建定時任務,設置觸發(fā)條件、執(zhí)行動作和異常處理規(guī)則。監(jiān)控與告警采集狀態(tài)監(jiān)控實時監(jiān)控采集任務的運行狀態(tài),記錄成功率和失敗原因數(shù)據質量監(jiān)控檢查采集到的數(shù)據量、格式和內容是否符合預期異常告警機制當采集失敗或數(shù)據異常時,及時發(fā)送郵件或短信通知性能指標跟蹤監(jiān)控采集速度、資源使用情況和響應時間進階技巧:使用ChatGPT輔助代碼調試ChatGPT作為AI編程助手,可以顯著提高數(shù)據采集項目的開發(fā)效率。以下是一些實用的使用技巧:生成爬蟲代碼模板向ChatGPT描述目標網站和需要抓取的數(shù)據,它可以生成基礎的爬蟲代碼框架,包括請求頭設置、HTML解析邏輯和數(shù)據存儲功能。代碼錯誤排查當遇到編程錯誤時,將錯誤信息和相關代碼發(fā)送給ChatGPT,它能夠快速識別問題并提供修復建議。特別適合處理常見的語法錯誤和邏輯問題。性能優(yōu)化建議ChatGPT可以分析代碼效率,提供性能優(yōu)化建議,如并發(fā)處理、緩存機制、數(shù)據庫查詢優(yōu)化等,幫助提升爬蟲的運行效率。#示例對話用戶:"我的爬蟲在處理JavaScript渲染的頁面時出現(xiàn)問題,請幫我優(yōu)化"ChatGPT:"建議使用SeleniumWebDriver來處理動態(tài)內容,以下是優(yōu)化后的代碼..."ChatGPT輔助編程實例以下是一個真實的ChatGPT輔助調試爬蟲代碼的對話示例:用戶問題:"我的網頁爬蟲總是返回403錯誤,但是用瀏覽器可以正常訪問頁面。"ChatGPT回答:"這種情況通常是因為網站檢測到了機器人行為。建議嘗試以下解決方案:"importrequestsimporttimeimportrandomfromfake_useragentimportUserAgent#ChatGPT建議的解決方案defcreate_session():session=requests.Session()ua=UserAgent()session.headers.update({'User-Agent':ua.random,'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Accept-Encoding':'gzip,deflate','Connection':'keep-alive',})returnsessiondefsmart_crawl(url,session):#隨機延時,模擬人類行為time.sleep(random.uniform(1,3))try:response=session.get(url,timeout=10)ifresponse.status_code==200:returnresponse.textelse:print(f"狀態(tài)碼:{response.status_code}")exceptExceptionase:print(f"請求失敗:{e}")returnNone#使用改進后的代碼session=create_session()html_content=smart_crawl('',session)通過ChatGPT的建議,成功解決了反爬蟲檢測問題,提高了數(shù)據采集的成功率。練習一:采集公開數(shù)據集實踐目標通過這個練習,學員將掌握從公開數(shù)據平臺獲取數(shù)據的基本技能,包括數(shù)據發(fā)現(xiàn)、下載和初步質量評估。訪問data.world等平臺注冊并熟悉主要的公開數(shù)據平臺,如data.world、Kaggle、GoogleDatasetSearch等,學習如何搜索和篩選合適的數(shù)據集。下載并導入數(shù)據掌握不同格式數(shù)據的下載方法,使用Pythonpandas或Excel導入數(shù)據,處理編碼和格式問題。簡單分析數(shù)據質量對數(shù)據進行基礎的探索性分析,檢查數(shù)據完整性、異常值和數(shù)據分布特征。推薦練習數(shù)據集世界銀行經濟數(shù)據COVID-19疫情統(tǒng)計數(shù)據股票價格歷史數(shù)據氣象數(shù)據記錄#數(shù)據質量檢查代碼示例importpandasaspd#讀取數(shù)據df=pd.read_csv('dataset.csv')#基礎信息print("數(shù)據形狀:",df.shape)print("字段信息:")print(())#缺失值檢查print("\n缺失值統(tǒng)計:")print(df.isnull().sum())#重復值檢查print(f"\n重復行數(shù):{df.duplicated().sum()}")#數(shù)值字段統(tǒng)計print("\n數(shù)值統(tǒng)計:")print(df.describe())練習二:調用TwitterAPI獲取推文數(shù)據社交媒體數(shù)據采集是數(shù)據科學中的重要應用場景。本練習將引導您完成TwitterAPI的完整調用流程:注冊開發(fā)者賬號訪問TwitterDeveloperPortal,提交開發(fā)者申請。需要詳細說明API使用目的、數(shù)據用途和項目背景。審核通過后即可獲得開發(fā)者權限。獲取API密鑰在開發(fā)者控制臺創(chuàng)建新的App,獲得APIKey、APISecretKey、AccessToken和AccessTokenSecret。這些憑據用于API認證。編寫Python腳本抓取數(shù)據使用tweepy庫簡化API調用,編寫腳本獲取推文數(shù)據。包括關鍵詞搜索、用戶時間線獲取、推文詳情提取等功能。importtweepyimportpandasaspd#API認證auth=tweepy.OAuth1UserHandler(consumer_key="YOUR_API_KEY",consumer_secret="YOUR_API_SECRET",access_token="YOUR_ACCESS_TOKEN",access_token_secret="YOUR_ACCESS_SECRET")api=tweepy.API(auth,wait_on_rate_limit=True)#搜索推文tweets=[]fortweetintweepy.Cursor(api.search_tweets,q="數(shù)據科學",lang="zh",result_type="recent").items(100):tweets.append({'text':tweet.text,'created_at':tweet.created_at,'user':tweet.user.screen_name,'retweet_count':tweet.retweet_count,'favorite_count':tweet.favorite_count})#保存數(shù)據df=pd.DataFrame(tweets)df.to_csv('twitter_data.csv',index=False)練習三:網頁爬蟲實戰(zhàn)實戰(zhàn)流程規(guī)劃01選擇目標網站選擇適合練習的網站,如新聞網站、電商平臺、論壇等。建議從結構簡單、反爬蟲措施較少的網站開始。02分析網頁結構使用瀏覽器開發(fā)者工具分析HTML結構,識別目標數(shù)據的CSS選擇器或XPath路徑。03編寫爬蟲代碼使用requests和BeautifulSoup或Scrapy框架編寫爬蟲程序,實現(xiàn)數(shù)據提取和存儲功能。04處理反爬機制應對常見的反爬蟲措施,如User-Agent檢查、訪問頻率限制、驗證碼驗證等。反爬蟲對策請求偽裝設置真實的User-Agent和請求頭,模擬正常瀏覽器行為訪問控制控制請求頻率,添加隨機延時,避免被識別為機器人IP輪換使用代理服務器輪換IP地址,分散請求來源#完整的網頁爬蟲示例importrequestsfrombs4importBeautifulSoupimporttimeimportrandomclassAdvancedScraper:def__init__(self):self.session=requests.Session()self.session.headers.update({'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36'})defscrape_with_retry(self,url,max_retries=3):forattemptinrange(max_retries):try:time.sleep(random.uniform(1,3))#隨機延時response=self.session.get(url,timeout=10)ifresponse.status_code==200:returnresponseelifresponse.status_code==429:#請求過快time.sleep(60)#等待1分鐘continueexceptExceptionase:print(f"第{attempt+1}次嘗試失敗:{e}")returnNone常見問題與解決方案問題:IP被封怎么辦?原因:請求頻率過高,被目標網站識別為機器人行為。解決方案:降低訪問頻率,增加請求間隔時間使用代理服務器輪換IP地址模擬真實用戶行為,添加隨機延時使用分布式爬蟲,分散請求來源問題:數(shù)據格式不統(tǒng)一如何處理?原因:不同數(shù)據源的格式標準不一致,字段命名和數(shù)據類型存在差異。解決方案:建立數(shù)據標準化流程和規(guī)范使用pandas進行數(shù)據格式轉換和統(tǒng)一開發(fā)數(shù)據清洗腳本自動處理常見格式問題建立字段映射表,統(tǒng)一不同源的字段名稱問題:如何保證數(shù)據更新及時?原因:數(shù)據源更新頻率不確定,手動采集效率低下。解決方案:建立自動化定時任務,定期執(zhí)行數(shù)據采集實現(xiàn)增量采集,只獲取新增或變更的數(shù)據設置數(shù)據變化監(jiān)控,及時發(fā)現(xiàn)數(shù)據更新使用消息隊列處理實時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論