Python資料科學(四) 資料收集系列

一隻寫程式的猿發表於2017-12-14

Python資料科學(四)  資料收集系列
傳送門:

收集正確的資料是我們完成資料分析的前提.

1.資料型態

Python資料科學(四)  資料收集系列

  • 定性資料(Qualitative or Categorical Data):是一組表示事物性質、規定事物類別的文字表述型資料,不能將其量化,只能將其定性。

    • 敘述特性或種類
  • 定量資料(Quantitative or Numerical Data):可以被計數或測量。

  • 定性分析與定量分析應該是統一的,相互補充的;定性分析是定量分析的基本前提,沒有定性的定量是一種盲目的、毫無價值的定量;定量分析使定性分析更加科學、準確,它可以促使定性分析得出廣泛而深入的結論。

  • 定量分析是依據統計資料,建立數學模型,並用數學模型計算出分析物件的各項指標及其數值的一種方法。定性分析則是主要憑分析者的直覺、經驗,憑分析物件過去和現在的延續狀況及最新的資訊資料,對分析物件的性質、特點、發展變化規律作出判斷的一種方法。

  • 相比而言,前一種方法更加科學,但需要較高深的數學知識,而後一種方法雖然較為粗糙,但在資料資料不夠充分或分析者數學基礎較為薄弱時比較適用,更適合於一般的投資者與經濟工作者。但是必須指出,兩種分析方法對數學知識的要求雖然有高有低,但並不能就此把定性分析與定量分析截然劃分開來。事實上,現代定性分析方法同樣要採用數學工具進行計算,而定量分析則必須建立在定性預測基礎上,二者相輔相成,定性是定量的依據,定量是定性的具體化,二者結合起來靈活運用才能取得最佳效果。

  • 不同的分析方法各有其不同的特點與效能,但是都具有一個共同之處,即它們一般都是通過比較對照來分析問題和說明問題的。正是通過對各種指標的比較或不同時期同一指標的對照才反映出數量的多少、質量的優劣、效率的高低、消耗的大小、發展速度的快慢等等,才能作為鑑別、下判斷提供確鑿有據的資訊。

舉個例子:

Python資料科學(四)  資料收集系列

◆ 定性分析: 分析: _ 知幾寫了很多篇文章 ◆ 定量分析: 分析:_ 知幾寫了107篇文章。

我的理解是定量分析主要關注的是頻率;定性分析關注的是意義。

###定量資料又可分為:

  • **離散資料(Discrete Data):**指其數值只能用自然數或整數單位計算,例如企業的人數
    • 只能用自然數或整數單位計算
    • 只能按計量單位數計數,可由一般計數方法取得
  • **連續資料(Continuous Data):**在一定區間內可以任意取值的資料,其數值是連續不斷的,例如人的身高
    • 一定區間內可以任意取值的資料,其數值是連續不斷的,相鄰兩個數值可取無限個數值
    • 其數值只能用測量或計量的方法獲得

2.結構化vs半結構化vs非結構化資料

  • 結構化資料
    • 每筆資料都有固定的欄位、固定的格式,方便程式進行後續取用與分析
    • 例如資料庫
  • 半結構化資料
    • 資料介於資料化結構與非結構化資料之間
    • 資料具有欄位,也可以依據欄位來進行查詢,使用方便,但每筆資料的欄位可能不一致
    • 例如:XML,JSON
  • 非結構化資料
    • 沒有固定的格式,必須整理以後才能存取
    • 沒有格式的文字、網頁資料

1.結構化資料

  • 結構化資料也稱作行資料,是由二維表結構來邏輯表達和實現的資料,嚴格地遵循資料格式與長度規範,主要通過關係型資料庫進行儲存和管理。
  • 對資料的處理和撈取可以通過**SQL語句**。

2.半結構化資料 - XML

<users>
    <user>
        <name>xsl</name>
        <gender>boy</gender>
        <age>23</age>
    </user>
    <user>
      <name>xlm</name>
      <gender>girl</gender>
    </user>
</users>
複製程式碼
  • 可以使用欄位儲存資料內容
  • 欄位不固定,例如xlm就少了age欄位
  • 可以彈性的存放各種欄位格式的資料

3.半結構化資料 - JSON

[
  user:{
    name:xsl,
    gender:boy,
    age:12,
},
  user:{
    name:xsl,
    gender:girl,
}
]
複製程式碼
  • 如同XML可以使用欄位儲存資料內容
  • 使用Key:Value存放資料
  • 不用宣告欄位的結尾,可以比XML更快更有效傳輸資料

4.非結構化資料

Python資料科學(四)  資料收集系列

  • 沒有固定的資料格式
    • 例如網站資料
  • 必須透過ETL(Extract,Transformation,Loading)工具將資料轉換為結構化資料才能取用

由於我們常見的資料是非結構化資料,為了進行資料分析,我們就需要從非結構化資料中挖掘資料,我們就需要先把非結構化資料轉換成結構化資料,此時我們就可以使用ETL工具。

資料抽取、轉換、儲存過程

3.Python IO與檔案處理

Python提供了預設操作檔案所必需的基本功能和方法。可以使用檔案物件執行大部分檔案操作。

##開啟檔案 在讀取或寫入檔案之前,需要使用Python的內建open()函式開啟檔案。此函式建立一個檔案物件,該物件將用於呼叫與其相關聯的其他支援方法。

語法:

f = open(file_name [, access_mode][, buffering])
複製程式碼
  • file_name引數是一個字串值,指定要訪問的檔案的名稱。
  • access_mode確定檔案開啟的模式,即讀取,寫入,追加等。可能的值的完整列表如下表所示。 這是一個可選引數,預設檔案訪問模式為(r - 也就是隻讀)。
  • bufferin如果buffering值設定為0,則不會發生緩衝。 如果緩衝值buffering為1,則在訪問檔案時執行行緩衝。如果將緩衝值buffering指定為大於1的整數,則使用指定的緩衝區大小執行緩衝操作。如果為負,則緩衝區大小為系統預設值(預設行為)。
編號 模式 描述
1 r 開啟的檔案為只讀模式。檔案指標位於檔案的開頭,這是預設模式。
2 rb 開啟僅用二進位制格式讀取的檔案。檔案指標位於檔案的開頭,這是預設模式。
3 r+ 開啟讀寫檔案。檔案指標放在檔案的開頭。
4 rb+ 以二進位制格式開啟一個用於讀寫檔案。檔案指標放在檔案的開頭。
5 w 開啟僅供寫入的檔案。 如果檔案存在,則覆蓋該檔案。 如果檔案不存在,則建立一個新檔案進行寫入。
6 wb 開啟僅用二進位制格式寫入的檔案。如果檔案存在,則覆蓋該檔案。 如果檔案不存在,則建立一個新檔案進行寫入。
7 w+ 開啟寫入和取讀的檔案。如果檔案存在,則覆蓋現有檔案。 如果檔案不存在,建立一個新檔案進行閱讀和寫入。
8 wb+ 開啟一個二進位制格式的寫入和讀取檔案。 如果檔案存在,則覆蓋現有檔案。 如果檔案不存在,建立一個新檔案進行閱讀和寫入。
9 a 開啟一個檔案進行追加。 如果檔案存在,則檔案指標位於檔案末尾。也就是說,檔案處於追加模式。如果檔案不存在,它將建立一個新檔案進行寫入。
10 ab 開啟一個二進位制格式的檔案。如果檔案存在,則檔案指標位於檔案末尾。 也就是說,檔案處於追加模式。如果檔案不存在,它將建立一個新檔案進行寫入。
11 a+ 開啟一個檔案,用於追加和閱讀。 如果檔案存在,則檔案指標位於檔案末尾。 檔案以附加模式開啟。 如果檔案不存在,它將建立一個新檔案進行閱讀和寫入。
12 ab+ 開啟一個二進位制格式的附加和讀取檔案。 如果檔案存在,則檔案指標位於檔案末尾。檔案以附加模式開啟。如果檔案不存在,它將建立一個新檔案進行讀取和寫入。
  • write()方法:將任何字串寫入開啟的檔案。 重要的是要注意,Python字串可以是二進位制資料,而不僅僅是文字。
  • close()方法:重新整理任何未寫入的資訊並關閉檔案物件,之後不能再進行寫入操作。
f =open('zj.txt', 'w')  #讀寫模式
f.write('hello xlm') #寫入 hello xlm
f.close() 關閉檔案

#用with寫
with open('zj.txt', 'r') as f:
    print(f.read()) #全部讀取

with open('zj.txt', 'r') as f:
    for line in f.readlines():
        print(line)   #分行列印出來
        print(line.strip())  #去除多餘的換行
複製程式碼

開啟本地檔案,可以看到`hello xlm` 已經寫入檔案

相關文章