




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章
數據的管理與探索金融大數據學習
1.1
學習目標
熟悉不同數據存儲設備的功能及使用場景
理解常用數據存儲的文件格式及優缺點
掌握運用Pandas,seaborn以及matplotlib程序庫的能力,并可以使用這些程序對數據進行初步探索以及整理1.2金融數據管理的挑戰與機遇金融市場產生大量的數據給從業人員以及監管機構提供了寶貴的材料。例如,股市中的許多指標可以幫助我們預測公司未來的基本面;銀行接觸到大量的轉賬信息可以為金融機構的決策作出非常重要的參考。本書的第一個課題是如何存儲以及管理這些數據。我們可以先通過簡單的分析理解數據的特性,了解數據中的基本信息。這些信息既能幫助我們掌握數據的特點,也能為我們向數據提出的問題提供一些初步的參考。在本章中,我們將介紹一些基本的數據存儲與讀寫的概念,并且介紹之后會經常使用的程序庫。具體來說,本章將介紹三個課題:1、數據的存儲與使用2、用于數據的管理以及初步分析的Pandas程序包3、用于數據可視化的matplotlib以及seaborn程序包1.3數據的存儲與使用1.3.1內存與硬盤我們的討論,主要圍繞內存與硬盤兩個設備,二者區別如下:1、內存往往速度更快,但是其容量較?。ǔR姷膬却嬖?到64GB之間)。硬盤的容量較大(其容量經常在250GB到幾TB之間),但是往往存儲與讀寫的速度偏慢。2、二者更重要的區別在于:內存屬于易失性存儲設備,而硬盤屬于非易失性存儲設備(當關機或重啟電腦之后,內存中的數據會被清空,而硬盤中的數據則一般不會受到影響)。因此,我們在存儲以及使用數據的過程中,需要這兩種設備的協同運作:通常,我們會將我們得到的數據存儲到硬盤之中,便于我們長期保存。但是,當我們需要進行數據分析的時候,我們則需要將數據讀入內存之中(內存存儲與讀寫速度較快,將程序執行中即將要使用的數據暫時存入內存,可以極大加速程序運行的速度)。1.3.2
數據存儲的格式在實際操作中,可以將數據存入各種格式的數據之中,如EXCEL中的CSV和XLSX格式,數據提供商需要程序接觸的JOSN文件,大數據存儲的Parquet格式。表1.1將以上幾種格式進行了比較:1、較小的數據常用CSV和XLSX格式保存,閱讀這些文件非常簡單直接,但最大的問題是讀寫速度較慢以及其占用的存儲空間較大。2、當數據量巨大時,我們應將數據以Parquet格式保存,其優勢在于易于存儲與讀寫。3、JSON在網絡應用中有著非常廣泛的應用,由于其格式清晰,我們非常容易能使用程序來抓去這些數據中的關鍵信息。但是因為該文件以文本形式存儲,因此讀寫速度往往也不是最優。文件類型CSVParquetXLSXJSON數據結構平面,表格列式存儲單元格的電子表格層次化,鍵值對文件大小一般較大壓縮后較小由于格式化而較大變化較大,通常較大讀/寫速度讀取快,大文件寫入慢讀取操作非常快,特別是在大數據集上由于格式復雜而較慢小文件快,大型或復雜結構慢人類可讀性高(基于文本)低(二進制格式)中等(需要軟件讀?。└撸ɑ谖谋荆┑湫陀美唵蔚谋砀駭祿?,快速數據交換大數據分析,高效存儲和快速查詢商務報告,財務分析,
帶有豐富格式的數據網絡API,配置,
具有嵌套結構的數據表1.1:不同數據格式的比較1.4Pandas與Matplotlib簡介1.4.1Pandas簡介Pandas是一個開源的Python數據分析庫,廣泛用于快速分析數據,以及數據清洗和準備等任務。它提供了高效的DataFrame對象,這是一種表格型的數據結構,具有對數據操作的各種功能,包括數據過濾、轉換、聚合等。Pandas非常適合處理結構化數據,如時間序列、表格數據和任何以行和列組織的數據集。此庫的目的是為了提供一個高效、易用的數據結構和數據分析工具。Pandas利用NumPy來提高其數據處理的速度和效率。其還支持讀取和寫入多種文件格式,如CSV、Excel、JSON、Parquet。Pandas是數據科學和數據分析領域中不可或缺的工具之一,它的設計使得Python成為強大且直觀的數據分析環境,極大地提高了數據處理的效率和質量。1.4.1.1Pandas的弱點1、Pandas一般來說需要將一個文件中的所有數據都讀入內存才能對其進行高效操作。因此,如果有的數據集過大,那么Pandas將無法高效處理這些數據。2、另外,在數據處理過程中常用的SQL語言在Pandas沒有相應的支持。如果需要在Pandas中使用SQL,我們必須安裝額外的程序包。1.4.2數據可視化程序庫簡介介紹兩個常用的Python數據可視化程序包:1.4.2.1Matplotlib簡介Matplotlib是一個用于Python編程語言和其數值數學擴展庫NumPy的繪圖庫。Matplotlib廣泛應用于數據可視化領域,無論是繪制簡單的折線圖、條形圖、散點圖,還是更復雜的圖表類型,如誤差線圖、直方圖、3D圖形等,Matplotlib都能勝任。它的靈活性和易用性使得它成為Python數據可視化的基石之一,廣泛用于學術研究、工業應用以及許多數據分析和數據科學項目。1.4.2.2Seaborn簡介Seaborn是基于matplotlib的Python數據可視化庫,提供了一個高級接口來繪制吸引人且信息豐富的統計圖形。Seaborn的目標是使可視化成為探索和理解數據的核心部分。它具有內置主題、支持多種統計圖表類型、與Pandas數據框架良好集成、自動統計估計和錯誤條顯示、分面功能以及可高度自定義,非常適合進行統計分析和數據呈現。1.5程序:數據的管理以及初步探索1.5.1使用Pandas讀取,整理數據1.5.1.1數據讀入與整理我們用虛擬的投資者收入,性別,以及股票投資組合金額的數據來解釋如何使用Pandas模塊。導入程序庫:importpandasaspd使用pandas程序庫讀入csv文件中的數據:df=pd.read_csv("incomestock.csv")讀入數據后,我們需要快速檢查數據讀入的結果。例如,數據中有哪些信息,以及這些數據的格式。我們可以用head()這個方法來查看前幾行數據。print(df.head())結果如下圖:我們用df.head(5)來現實df這個數據幀中的前五行。其中,第一列數字是這個數據幀的索引。這個索引便于我們找到數據的位置。該索引是從0開始計數的。這個數據中的每一個行對應的是一個用戶。每一列對應的是我們存儲的關于該用戶的信息。1.5.1.1.1數據幀的基本信息接下來,我們來檢驗一下數據量具體多少。并且,數據幀中的變量分別是以什么格式存儲的。print(df.shape)print(df.dtypes)結果如右圖:用df.shape來查看數據幀的大小。(10,4)說明這個數據幀中有10行,4列,即有10個樣本,每個樣本有四個變量。df.dtypes說明了數據分別是什么格式。其中income是用int64(整數)存儲。stock是用float64(實數)格式存儲。其他數據是object格式。這種格式一般是用來存儲字串。1.5.1.1.2獲取變量信息如果我們只要使用一個變量,那么我們可以用方括號來查看一個變量。stock=df['stock']print(stock)結果如下圖:1.5.1.1.3獲取行信息如果我們需要查看一個用戶,那么我們可以續用.iloc[索引]來查看一行。user_0=df.iloc[0]print(user_0)結果如下圖:1.5.1.1.4獲取子數據集我們也可以篩選數據。例如,下面我們將性別為男性的用戶篩選出來,存入一個新的數據幀。df_male=df[df['gender']=='M']print(df_male.head())結果如下圖:我們也可以疊加選擇條件。例如,我們需要選取用戶性別為男,并且收入超過100000的用戶。注意,因為我們需要使用兩個篩選條件,此時我們需要使用邏輯操作&(也就是and),以表示我們需要兩個條件同時達到才會選入。df_male_highinc=df[(df['gender']=='M')&(df['income']>100000)]print(df_male_highinc)結果如下圖:1.5.1.1.5生成新變量我們也可以通過數據幀中的兩個或多個變量來生成新的變量。比如,我們可以生成投資組合與收入的一個比例(income/stock)。df['income_stock_ratio']=df['income']/df['stock']print(df.head(5))結果如下圖:1.5.1.1.6
數據的初步探索我們將用pandas的內置功能,對數據進行初步探索。首先,我們先對變量的平均值,標準方差,最小值最大值等一系列信息進行總結。df['income'].describe()結果如下圖:我們可以分別對男性用戶以及女性用戶的信息進行總結。在此,我們需要用到groupby這個方法。groupby可以幫助我們將數據放到不同的子集中。同時,agg方法幫我們計算匯總統計信息。grouped_stats=df.groupby('gender')[['income','stock']].agg(['mean','median','std'])print(grouped_stats)結果如下圖:1.5.1.1.7數據合并
有時我們需要從不同的數據集中取得用戶信息,即我們可能需要合并多個數據。使用pandas有許多合并數據的方法,在這里我們只介紹一種方法。接下來,將用戶的學習成績(GPA)與他們的收入,股市信息合并。df_gpa=pd.read_csv('gpa.csv')df_gpa.head(5)結果如下圖:合并兩個數據集。我們要求兩個數據集中的用戶id對齊。df_merged=pd.merge(df,df_gpa,on='id')print(df_merged)結果如下圖:1.5.1.1.8數據存儲最后,我們將數據存入csv文件。df_merged.to_csv('merged.csv')1.5.2數據可視化以及數據的探索1.5.2.1如何進行數據可視化數據可視化是對數據進行初步了解的重要方法,業界中將數據進行可視化有助于更清晰的傳遞數據中所蘊含的信息。首先,我們不僅需要使用matplotlib來控制圖形大小以及輸出,還會使用seaborn來進行數據可視化。因此,我們需要導入這兩個庫。importseabornassnsimportmatplotlib.pyplotasplt1.5.2.1.1
導入數據我們將用seaborn程序包自帶的tips數據來對其功能進行說明。本數據中有小費的總量(tip),用餐的價格(totalbill),還有用餐人數(size)等信息。tips=sns.load_dataset('tips')tips.head()結果如下圖:1.5.2.1.2直方圖直方圖(Histogram)是一種統計報告圖,用于展示一系列數據分布的情況。它通過將數據分組(通常是等寬的連續區間),然后計算每個組中的數據點數量(頻率或頻數),用柱狀圖的形式來表示。從直方圖中,我們可以獲得以下信息:1、分布的形狀:直方圖可以展示數據是對稱分布的,還是偏斜(向左或向右偏斜)。2、中心的位置:直方圖幫助我們估計數據的平均值或中位數所在的大致位置。3、變異程度:通過觀察柱狀圖的寬度和分布,我們可以了解數據的波動程度或離散程度。4、異常值:直方圖還可以幫助我們發現數據中的異常值或離群點。我們使用直方圖來查看數據分布,并著重分析每單小費中小費(tip)的金額。plt.figure(figsize=(8,6))sns.histplot(tips['tip'],kde=True,color='blue')plt.title('HistogramofTotalTipAmounts')plt.xlabel('Tip')plt.ylabel('Frequency')plt.show()結果如右圖所示:1.5.2.1.3箱形圖箱形圖(BoxPlot),也稱為盒須圖,是另一種用于顯示數據分布統計特征的圖表。箱形圖通過五數概括(最小值、第一四分位數(Q1)、中位數、第三四分位數(Q3)、最大值)來描述數據的分布情況,同時也能展示出數據的異常值。箱形圖的構成如下:1、箱子:箱子的底部和頂部分別表示第一四分位數(Q1)和第三四分位數(Q3),箱子的長度代表了數據的四分位距(IQR),可以用來衡量數據的集中趨勢和離散程度。2、中位線:箱子內部的線表示數據的中位數,反映了數據的中心位置。3、須:箱子外的兩條線(須)延伸至箱子外的最小值和最大值,但不包括異常值。這些線表示數據分布的范圍。4、異常值:用點表示的離群點,通常是那些小于Q1-1.5IQR或大于Q3+1.5IQR的值。相較于直方圖,箱形圖更為簡潔。因此可以展示一個變量在不同子集中的分布。plt.figure(figsize=(10,7))sns.boxplot(data=tips,x='day',y='tip',palette='rainbow')plt.title('BoxPlotofTipbyDayoftheWeek')plt.xlabel('DayoftheWeek')plt.ylabel('Tip')plt.show()結果如右圖,我們發現周四(Thur)與周六(Sat)都有一些異常高的小費。1.5.2.1.4
條形圖條形圖(BarPlot)是一種在研究中常用的數據可視化類型,它通過條形的長度來表示各類別的數據量或數值的大小,非常適用于展示和比較不同類別或組之間的數量關系。條形圖可以是垂直的也可以是水平的,這取決于數據展示的需求。通過條形圖,我們可以獲得以下信息:1、類別比較:直觀比較不同類別或組的數值大小。2、數據的分布:觀察不同類別中數據的分布情況。3、趨勢識別:識別數據隨時間或順序變化的趨勢。有的條形圖上有誤差棒(ErrorBars)。誤差棒用來表示數據的變異度、不確定性或置信區間,在下圖中,誤差棒的長度代表的是95%置信區間,有助于幫助我們理解數據的穩定性和變異范圍。#Barplotofaveragetotalbillbydayplt.figure(figsize=(8,6))sns.barplot(data=tips,x='time',y='tip',palette='coolwarm')plt.title('AverageTipbyMeal')plt.xlabel('Meal')plt.ylabel('AverageTip')plt.show()結果如下圖:我們分別描述的是午餐(Lunch)以及晚餐(Dinner)的平均小費量。1.5.2.1.5散點圖散點圖(ScatterPlot)是數據可視化中一種基本且常用的圖表類型,它通過在二維平面上的點來表示兩個數值變量之間的關系。每個點的位置由其所對應的變量值決定,分別在X軸和Y軸上表示。散點圖主要用于探索和展示兩個連續變量之間是否存在某種相關關系,以及這種關系的強度和方向。通過散點圖,我們可以獲得以下信息:1、相關性:觀察兩個變量之間是否存在線性關系或非線性關系。如果數據點近似分布在一條直線附近,說明變量之間存在線性相關性;如果分布呈現某種曲線模式,說明存在非線性關系。2、關系的方向:數據點的分布趨勢可以顯示變量之間的關系是正向的(即一個變量增加時,另一個變量也增加)還是負向的(即一個變量增加時,另一個變量減少)。3、異常值:在散點圖中,遠離其他數據點的點可能表明異常值或離群點,這些點可能需要進一步分析。4、數據的聚集程度:數據點的密集程度可以反映變量之間關系的強度。點越密集,說明兩個變量之間的關系越緊密。散點圖是探索性數據分析(EDA)中非常重要的工具,可以幫助研究人員發現數據中的模式、趨勢和異常值,為后續的深入分析和建模提供線索。plt.figure(figsize=(8,6))sns.scatterplot(data=tips,x='total_bill',y='tip')plt.title('ScatterPlotofTotalBillvs.Tip')plt.xlabel('TotalBill')plt.ylabel('Tip')plt.show()結果如下圖所示:我們使用散點圖來可視化用餐費用(totalbill)和小費(tip)之間的關系。顯而易見,這兩個變量成正相關關系。1.5.2.1.6
熱圖熱圖(Heatmap)是一種數據可視化技術,用于顯示兩個類別變量之間的矩陣數據以及這些數據的量值。它通過不同的顏色來表示數據點的大小或數值,顏色的深淺通常
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 營養干預效果評估補充協議
- 網絡直播平臺在線客服兼職服務協議
- 營養師定制化營養配送服務協議
- 工作時保密協議書
- 牛羊往外賣協議書
- 裝修意向金協議書
- 過橋貸擔保協議書
- 疆老鄉互助協議書
- 小學校保安協議書
- 對公賬培訓協議書
- 江蘇省南京市秦淮區2023-2024學年七年級下學期期末考試語文試題
- DL-T5190.1-2022電力建設施工技術規范第1部分:土建結構工程
- 教師語言與溝通藝術智慧樹知到期末考試答案章節答案2024年溫州大學
- 新人教版七年級數學上冊期末測試卷及答案【全面】
- 施工現場火災應急處置方案
- 2024中國醫藥行業人才發展報告-智聯招聘-202404
- 企業采購管理手冊(大全)
- 課題研究成效公告模板
- 馬克思主義與社會科學方法論(研究生政治課程)復習重點
- 《行政監督》課件
- 2023年東南大學健美操理論考試答案
評論
0/150
提交評論