Python數(shù)據(jù)科學(xué)(四)- 數(shù)據(jù)收集系列


傳送門:

收集正確的數(shù)據(jù)是我們完成數(shù)據(jù)分析的前提.

1.數(shù)據(jù)型態(tài)

  • 定性數(shù)據(jù)(Qualitative or Categorical Data):是一組表示事物性質(zhì)、規(guī)定事物類別的文字表述型數(shù)據(jù),不能將其量化,只能將其定性。

    • 敘述特性或種類
  • 定量數(shù)據(jù)(Quantitative or Numerical Data):可以被計(jì)數(shù)或測量。

  • 定性分析與定量分析應(yīng)該是統(tǒng)一的,相互補(bǔ)充的;定性分析是定量分析的基本前提,沒有定性的定量是一種盲目的、毫無價(jià)值的定量;定量分析使定性分析更加科學(xué)、準(zhǔn)確,它可以促使定性分析得出廣泛而深入的結(jié)論。

  • 定量分析是依據(jù)統(tǒng)計(jì)數(shù)據(jù),建立數(shù)學(xué)模型,并用數(shù)學(xué)模型計(jì)算出分析對象的各項(xiàng)指標(biāo)及其數(shù)值的一種方法。定性分析則是主要憑分析者的直覺、經(jīng)驗(yàn),憑分析對象過去和現(xiàn)在的延續(xù)狀況及最新的信息資料,對分析對象的性質(zhì)、特點(diǎn)、發(fā)展變化規(guī)律作出判斷的一種方法。

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

  • 不同的分析方法各有其不同的特點(diǎn)與性能,但是都具有一個(gè)共同之處,即它們一般都是通過比較對照來分析問題和說明問題的。正是通過對各種指標(biāo)的比較或不同時(shí)期同一指標(biāo)的對照才反映出數(shù)量的多少、質(zhì)量的優(yōu)劣、效率的高低、消耗的大小、發(fā)展速度的快慢等等,才能作為鑒別、下判斷提供確鑿有據(jù)的信息。

舉個(gè)例子:

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

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

定量數(shù)據(jù)又可分為:

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

2.結(jié)構(gòu)化vs半結(jié)構(gòu)化vs非結(jié)構(gòu)化數(shù)據(jù)

  • 結(jié)構(gòu)化數(shù)據(jù)
    • 每筆數(shù)據(jù)都有固定的字段、固定的格式,方便程序進(jìn)行后續(xù)取用與分析
    • 例如數(shù)據(jù)庫
  • 半結(jié)構(gòu)化數(shù)據(jù)
    • 數(shù)據(jù)介于數(shù)據(jù)化結(jié)構(gòu)與非結(jié)構(gòu)化數(shù)據(jù)之間
    • 數(shù)據(jù)具有字段,也可以依據(jù)字段來進(jìn)行查找,使用方便,但每筆數(shù)據(jù)的字段可能不一致
    • 例如:XML,JSON
  • 非結(jié)構(gòu)化數(shù)據(jù)
    • 沒有固定的格式,必須整理以后才能存取
    • 沒有格式的文字、網(wǎng)頁數(shù)據(jù)

1.結(jié)構(gòu)化數(shù)據(jù)

  • 結(jié)構(gòu)化數(shù)據(jù)也稱作行數(shù)據(jù),是由二維表結(jié)構(gòu)來邏輯表達(dá)和實(shí)現(xiàn)的數(shù)據(jù),嚴(yán)格地遵循數(shù)據(jù)格式與長度規(guī)范,主要通過關(guān)系型數(shù)據(jù)庫進(jìn)行存儲(chǔ)和管理。
  • 對數(shù)據(jù)的處理和撈取可以通過SQL語句。

2.半結(jié)構(gòu)化數(shù)據(jù) - XML

<users>
    <user>
        <name>xsl</name>
        <gender>boy</gender>
        <age>23</age>
    </user>
    <user>
      <name>xlm</name>
      <gender>girl</gender>
    </user>
</users>
  • 可以使用字段存儲(chǔ)數(shù)據(jù)內(nèi)容
  • 字段不固定,例如xlm就少了age字段
  • 可以彈性的存放各種字段格式的數(shù)據(jù)

3.半結(jié)構(gòu)化數(shù)據(jù) - JSON

[
  user:{
    name:xsl,
    gender:boy,
    age:12,
},
  user:{
    name:xsl,
    gender:girl,
}
]
  • 如同XML可以使用字段存儲(chǔ)數(shù)據(jù)內(nèi)容
  • 使用Key:Value存放數(shù)據(jù)
  • 不用宣告字段的結(jié)尾,可以比XML更快更有效傳輸數(shù)據(jù)

4.非結(jié)構(gòu)化數(shù)據(jù)

  • 沒有固定的數(shù)據(jù)格式
    • 例如網(wǎng)站數(shù)據(jù)
  • 必須透過ETL(Extract,Transformation,Loading)工具將數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化數(shù)據(jù)才能取用

由于我們常見的數(shù)據(jù)是非結(jié)構(gòu)化數(shù)據(jù),為了進(jìn)行數(shù)據(jù)分析,我們就需要從非結(jié)構(gòu)化數(shù)據(jù)中挖掘數(shù)據(jù),我們就需要先把非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換成結(jié)構(gòu)化數(shù)據(jù),此時(shí)我們就可以使用ETL工具。

數(shù)據(jù)抽取、轉(zhuǎn)換、存儲(chǔ)過程

3.Python IO與檔案處理

Python提供了默認(rèn)操作文件所必需的基本功能和方法。可以使用文件對象執(zhí)行大部分文件操作。

打開文件

在讀取或?qū)懭胛募?,需要使用Python的內(nèi)置open()函數(shù)打開文件。此函數(shù)創(chuàng)建一個(gè)文件對象,該對象將用于調(diào)用與其相關(guān)聯(lián)的其他支持方法。

語法:

f = open(file_name [, access_mode][, buffering])
  • file_name參數(shù)是一個(gè)字符串值,指定要訪問的文件的名稱。
  • access_mode確定文件打開的模式,即讀取,寫入,追加等??赡艿闹档耐暾斜砣缦卤硭?。 這是一個(gè)可選參數(shù),默認(rèn)文件訪問模式為(r - 也就是只讀)。
  • bufferin如果buffering值設(shè)置為0,則不會(huì)發(fā)生緩沖。 如果緩沖值buffering為1,則在訪問文件時(shí)執(zhí)行行緩沖。如果將緩沖值buffering指定為大于1的整數(shù),則使用指定的緩沖區(qū)大小執(zhí)行緩沖操作。如果為負(fù),則緩沖區(qū)大小為系統(tǒng)默認(rèn)值(默認(rèn)行為)。
編號(hào) 模式 描述
1 r 打開的文件為只讀模式。文件指針位于文件的開頭,這是默認(rèn)模式。
2 rb 打開僅用二進(jìn)制格式讀取的文件。文件指針位于文件的開頭,這是默認(rèn)模式。
3 r+ 打開讀寫文件。文件指針放在文件的開頭。
4 rb+ 以二進(jìn)制格式打開一個(gè)用于讀寫文件。文件指針放在文件的開頭。
5 w 打開僅供寫入的文件。 如果文件存在,則覆蓋該文件。 如果文件不存在,則創(chuàng)建一個(gè)新文件進(jìn)行寫入。
6 wb 打開僅用二進(jìn)制格式寫入的文件。如果文件存在,則覆蓋該文件。 如果文件不存在,則創(chuàng)建一個(gè)新文件進(jìn)行寫入。
7 w+ 打開寫入和取讀的文件。如果文件存在,則覆蓋現(xiàn)有文件。 如果文件不存在,創(chuàng)建一個(gè)新文件進(jìn)行閱讀和寫入。
8 wb+ 打開一個(gè)二進(jìn)制格式的寫入和讀取文件。 如果文件存在,則覆蓋現(xiàn)有文件。 如果文件不存在,創(chuàng)建一個(gè)新文件進(jìn)行閱讀和寫入。
9 a 打開一個(gè)文件進(jìn)行追加。 如果文件存在,則文件指針位于文件末尾。也就是說,文件處于追加模式。如果文件不存在,它將創(chuàng)建一個(gè)新文件進(jìn)行寫入。
10 ab 打開一個(gè)二進(jìn)制格式的文件。如果文件存在,則文件指針位于文件末尾。 也就是說,文件處于追加模式。如果文件不存在,它將創(chuàng)建一個(gè)新文件進(jìn)行寫入。
11 a+ 打開一個(gè)文件,用于追加和閱讀。 如果文件存在,則文件指針位于文件末尾。 文件以附加模式打開。 如果文件不存在,它將創(chuàng)建一個(gè)新文件進(jìn)行閱讀和寫入。
12 ab+ 打開一個(gè)二進(jìn)制格式的附加和讀取文件。 如果文件存在,則文件指針位于文件末尾。文件以附加模式打開。如果文件不存在,它將創(chuàng)建一個(gè)新文件進(jìn)行讀取和寫入。
  • write()方法:將任何字符串寫入打開的文件。 重要的是要注意,Python字符串可以是二進(jìn)制數(shù)據(jù),而不僅僅是文本。
  • close()方法:刷新任何未寫入的信息并關(guān)閉文件對象,之后不能再進(jìn)行寫入操作。
f =open('zj.txt', 'w')  #讀寫模式
f.write('hello xlm') #寫入 hello xlm
f.close() 關(guān)閉文件

#用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` 已經(jīng)寫入文件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容