
傳送門:
- Python數(shù)據(jù)科學(xué)(一)- python與數(shù)據(jù)科學(xué)應(yīng)用(Ⅰ)
- Python數(shù)據(jù)科學(xué)(二)- python與數(shù)據(jù)科學(xué)應(yīng)用(Ⅱ)
- Python數(shù)據(jù)科學(xué)(三)- python與數(shù)據(jù)科學(xué)應(yīng)用(Ⅲ)
- Python數(shù)據(jù)科學(xué)(四)- 數(shù)據(jù)收集系列
- Python數(shù)據(jù)科學(xué)(五)- 數(shù)據(jù)處理和數(shù)據(jù)采集
- Python數(shù)據(jù)科學(xué)(六)- 資料清理(Ⅰ)
- Python數(shù)據(jù)科學(xué)(七)- 資料清理(Ⅱ)
- Python數(shù)據(jù)科學(xué)(八)- 資料探索與資料視覺化
- Python數(shù)據(jù)科學(xué)(九)- 使用Pandas繪制統(tǒng)計(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工具。

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()) #去除多余的換行
