
作者 | CDA數(shù)據(jù)分析師
俗話說,巧婦難為無(wú)米之炊。不管你廚藝有多好,如果沒有食材,也做不出香甜可口的飯菜來,所以想要做出飯菜來,首先要做的就是要買米買菜。而數(shù)據(jù)分析就好比是做飯,首先也應(yīng)該是準(zhǔn)備食材,也就是獲取數(shù)據(jù)源。
導(dǎo)入數(shù)據(jù)主要用到的是Pandas里的read_x()方法,x表示待導(dǎo)入文件的格式。
1、導(dǎo)入.xlsx文件
在Excel中導(dǎo)入.xlsx格式的文件時(shí)很簡(jiǎn)單的,雙擊打開就可以了。在Python中導(dǎo)入.xlsx文件的是read_excel()這種方法。
(1)基本導(dǎo)入
在導(dǎo)入文件的時(shí)候首先要指定文件的路徑,也就是這個(gè)文件在電腦中的哪個(gè)文件夾下存放著。
電腦中的文件路徑默認(rèn)是使用\的,這個(gè)時(shí)候需要在路徑前面加一個(gè)r(轉(zhuǎn)義符)避免路徑里面的\被轉(zhuǎn)義。也可以不加轉(zhuǎn)義符r,但是需要把路徑里面所有的\轉(zhuǎn)換成/,這個(gè)規(guī)則在導(dǎo)入其他格式文件的時(shí)候也是一樣的,我們一般會(huì)選擇在路徑前面加轉(zhuǎn)義符r。
(2)指定導(dǎo)入哪個(gè)Sheet
.xlsx格式的文件可以有很多個(gè)Sheet,你可以通過設(shè)定sheet_name參數(shù)來指定要導(dǎo)入哪個(gè)Sheet的文件。
除了可以指定具體Sheet的名字,還可以傳入Sheet的順序,從0開始計(jì)數(shù)。
如果不指定sheet_name參數(shù)的時(shí)候,那么默認(rèn)導(dǎo)入的都是第一個(gè)sheet的文件。
(3)指定行索引
將本地文件導(dǎo)入DataFrame的時(shí)候,行索引使用的是從0 開始的默認(rèn)索引,可以通過設(shè)置index_col參數(shù)來設(shè)置。
index_col表示用.xlsx文件中的第幾列做行索引,從0 開始計(jì)數(shù)。
(4)指定列索引
將本地文件導(dǎo)入DataFrame的時(shí)候,默認(rèn)使用的是源數(shù)據(jù)表的第一行作為列索引,也可以通過設(shè)置header參數(shù)來設(shè)置列索引。header參數(shù)值默認(rèn)為0,即用第一行作為列索引;也可以是其他行,只需要傳入具體的那一行即可;也可以使用默認(rèn)從0開始的數(shù)作為列索引。
(5)指定導(dǎo)入列
有的時(shí)候本地文件的列數(shù)太多,而我們又不需要那么多列的時(shí)候,我們就可以通過設(shè)定usecols參數(shù)來指定要導(dǎo)入的列。
可以給usecols 參數(shù)具體的某個(gè)值,表示要導(dǎo)入第幾列,同樣是從0開始計(jì)數(shù),也可以以列表的形式傳入多個(gè)值,表示要傳入哪些列。
2、導(dǎo)入.csv文件
在Excel中導(dǎo)入.csv格式的文件和打開.xlsx格式的問價(jià)是一樣的,雙擊即可。而在Python中導(dǎo)入.csv問價(jià)用的方法是read_csv()。
(1)直接導(dǎo)入
只需要指明文件路徑即可。
(2)指明分隔符號(hào)
在Excel和DataFrame中的數(shù)據(jù)都是很規(guī)整的排列的,這都是工具在后臺(tái)根據(jù)某條規(guī)則進(jìn)行切分的。read_csv()默認(rèn)文件中的數(shù)據(jù)都是以逗號(hào)分開的,但是有的文件不是用逗號(hào)分開的,這個(gè)時(shí)候就需要人為指定分隔符號(hào),否則就會(huì)報(bào)錯(cuò)。
新建一個(gè)以空格作為分隔符號(hào)的文件,如下圖所示:
如果用默認(rèn)的逗號(hào)作為分隔符號(hào),看看導(dǎo)入的數(shù)是什么樣的。
我們看到所有的數(shù)據(jù)還是一個(gè)整體,并沒有被分開,把分隔符號(hào)換成空格以后再看看效果:
使用正確的分隔符號(hào)以后,數(shù)據(jù)被規(guī)整的分好了。常見的分隔符號(hào)除了逗號(hào)、空格,還有制表符(\t)。
(3)指明讀取行數(shù)
假設(shè)現(xiàn)在有一個(gè)幾百兆的文件,你想了解一下這個(gè)文件里有哪些數(shù)據(jù),那么這個(gè)時(shí)候你就沒必要把全部數(shù)據(jù)都導(dǎo)入,你只要看到前面幾行即可,因此只要設(shè)置nrows參數(shù)即可。
(4)指定編碼格式
Python用得比較多的兩種編碼格式是UTF-8和gbk,默認(rèn)編碼格式是UTF-8。我們要根據(jù)導(dǎo)入文件本身的編碼格式進(jìn)行設(shè)置,通過設(shè)置參數(shù)encoding來設(shè)置導(dǎo)入的編碼格式。有的時(shí)候兩個(gè)文件看起來一樣,它們的文件名一樣,格式一樣,但是如果它們的編碼格式不一樣,也是不一樣的文件,比如當(dāng)你把一個(gè)Excel文件另存為時(shí)會(huì)出現(xiàn)兩個(gè)選項(xiàng),雖然都是.csv文件,但是這兩種格式代表兩種不同的文件,如下圖所示:
如果CSV UTF-8(逗號(hào)分隔)(*.csv)格式的文件,那么導(dǎo)入的時(shí)候就需要加encoding參數(shù)。
你也可以不加encoding參數(shù),因?yàn)镻ython默認(rèn)的編碼格式就是UTF-8。
如果CSV(逗號(hào)分隔)(*.csv)格式的文件,那么在導(dǎo)入的時(shí)候就需要把編碼格式更改為gbk,如果使用UTF-8就會(huì)報(bào)錯(cuò)。
(5)engine指定
當(dāng)文件路徑或者文件名中包含中文時(shí),如果還用上面的導(dǎo)入方式就會(huì)報(bào)錯(cuò)。
這個(gè)時(shí)候我們就可以通過設(shè)置engine參數(shù)來消除這個(gè)錯(cuò)誤。這個(gè)錯(cuò)誤產(chǎn)生的原因是當(dāng)調(diào)用read_csv()方法時(shí),默認(rèn)使用C語(yǔ)言作為解析語(yǔ)言,我們只需要把默認(rèn)值C更改為Python就可以了,如果文件格式是CSV UTF-8(逗號(hào)分隔)(*.csv),那么編碼格式也需要跟著變?yōu)閡tf-8-sig,如果文件格式是CSV(逗號(hào)分隔)(*.csv)格式,對(duì)應(yīng)的編碼格式則為gbk。
(6)其他
.csv文件也涉及行、列索引設(shè)置及指定導(dǎo)入某列或者某幾行,設(shè)定方法與導(dǎo)入.xlsx文件一致。
3、導(dǎo)入.txt文件
(1)Excel實(shí)現(xiàn)
在Excel中導(dǎo)入.txt文件時(shí),我們需要通過依次單擊菜單欄中的數(shù)據(jù)>獲取外部數(shù)據(jù)>自文本,然后選擇要導(dǎo)入的.txt文件所在的路徑,如下圖所示:
選完路徑以后會(huì)出現(xiàn)如下圖所示的界面,預(yù)覽文件就是我們要導(dǎo)入的文件,確認(rèn)無(wú)誤后按下一步按鈕即可。
因?yàn)槲覀兣e例.txt 文件用空格分開的,所以在分隔符號(hào)項(xiàng)勾選空格復(fù)選框,如果待導(dǎo)入的.txt 文件是用其他分隔符號(hào)分隔的,那么選擇對(duì)應(yīng)的分隔符號(hào),然后直接按完成按鈕即可,如下圖所示:
(2)Python實(shí)現(xiàn)
在Python中導(dǎo)入.txt文件用的方法是read_table()是將利用分隔符號(hào)分開的文件導(dǎo)入DataFrame的通用函數(shù)。它不僅可以導(dǎo)入.txt文件,還可以導(dǎo)入.csv文件。
從上面的代碼可以看出,函數(shù)在導(dǎo)入.csv文件時(shí),與read_csv()函數(shù)不同的是,即使是逗號(hào)分隔開的問價(jià)也是需要用sep指明分隔符號(hào)的,而不是像read_csv()函數(shù)那樣,如果文件是逗號(hào)分隔的,則可以不用寫。
read_table()函數(shù)其他參數(shù)的用法與read_csv()函數(shù)的基本一致。
4、導(dǎo)入sql文件
(1)Excel實(shí)現(xiàn)
Excel可以直接連接數(shù)據(jù)庫(kù),通過依次單擊菜單欄中的數(shù)據(jù)>自其他來源導(dǎo)入sql文件。如果你的數(shù)據(jù)庫(kù)是SQL Server,那么直接選擇來自SQL Server即可;如果是MySQL數(shù)據(jù)庫(kù),那么你需要選擇來自數(shù)據(jù)連接向?qū)?,然后通過建立數(shù)據(jù)向?qū)砼cMySQL連接,如下圖所示:
(2)Python實(shí)現(xiàn)
Python導(dǎo)入SQL文件主要分為兩步,第一步將Python與數(shù)據(jù)庫(kù)進(jìn)行連接,第二步是利用Python執(zhí)行SQL查詢語(yǔ)句。
將python與數(shù)據(jù)庫(kù)連接時(shí)利用的是python模塊,這個(gè)模塊Anaconda沒有,需要我們手動(dòng)安裝的,打開Anaconda Promt,然后輸入pip install pymysql進(jìn)行安裝即可,安裝完成以后直接用import導(dǎo)入就可以使用了,具體連接方法如下:
連接好數(shù)據(jù)庫(kù)以后,我們就可以執(zhí)行SQL查詢語(yǔ)句了,利用的是read_sql()方法。
除了sql和con這兩個(gè)關(guān)鍵參數(shù),read_table()函數(shù)也有用來設(shè)置行索引的參數(shù)index_col,設(shè)置列索引的columns,實(shí)例如下:
這里的新建數(shù)據(jù)主要指新建DataFrame數(shù)據(jù),我們?cè)谥罢劦竭^,利用pd.Dataframe()方法進(jìn)行新建。
當(dāng)我們有了數(shù)據(jù)源以后,先別急著分析,應(yīng)該先熟悉數(shù)據(jù),只有對(duì)數(shù)據(jù)充分熟悉了,才能更好的進(jìn)行分析。
1、利用head預(yù)覽前幾行
當(dāng)數(shù)據(jù)表中包含數(shù)據(jù)行數(shù)過多時(shí),而我們又想看一下每一列數(shù)據(jù)都是什么樣的數(shù)據(jù)時(shí),就可以只把數(shù)據(jù)表中前幾行數(shù)據(jù)顯示出來進(jìn)行查看。
(1)Excel實(shí)現(xiàn)
Excel其實(shí)沒有嚴(yán)格意義的顯示前幾行,當(dāng)你打開一個(gè)數(shù)據(jù)表時(shí),所有的數(shù)據(jù)就全部都展示出來了,如果數(shù)據(jù)的行數(shù)過多,則可以通過滾動(dòng)條來控制。
(2)Python實(shí)現(xiàn)
在Python中,當(dāng)一個(gè)文件導(dǎo)入后,可以用head()方法來控制要顯示哪些行。只需要在head后面的括號(hào)中輸入要展示的行數(shù)即可,默認(rèn)展示前5行。
2、利用shape獲取數(shù)據(jù)表的大小
熟悉數(shù)據(jù)的第一點(diǎn)就是先看一下數(shù)據(jù)表的大小,即數(shù)據(jù)表有多少行、多少列。
(1)Excel實(shí)現(xiàn)
在Excel中查看數(shù)據(jù)表有多少行,一般都是選中某一列,右下角就會(huì)出現(xiàn)該表的行數(shù),如下圖所示:
在Excel中選中某一行,右下角就會(huì)出現(xiàn)該表的列數(shù),如下圖所示:
(2)Python實(shí)現(xiàn)
在Python中獲取數(shù)據(jù)表的行、列數(shù)利用的是shape方法。
Shape方法會(huì)以元組的形式返回行、列數(shù),上面代碼中的(4,4)表示df表有4行4列數(shù)據(jù)。這里需要注意的是,Python中利用shape方法獲取行數(shù)和列數(shù)時(shí)不會(huì)把行索引和列索引計(jì)算在內(nèi),而Excel中是把行索引和列索引計(jì)算在內(nèi)的。
3、利用info獲取數(shù)據(jù)類型
熟悉數(shù)據(jù)的第二點(diǎn)就是看一下數(shù)據(jù)類型,不同的數(shù)據(jù)類型的分析思路是不一樣的,比如數(shù)值類型的數(shù)據(jù)可以求均值,但是字符串類型的數(shù)據(jù)就沒法求均值了。
(1)Excel實(shí)現(xiàn)
在Excel中若想看某一列數(shù)據(jù)具體是什么類型的,只要把這一列選中,然后再菜單欄中的數(shù)字那一欄就可以看到這一列的數(shù)據(jù)類型。
年齡為數(shù)值類型,如下圖所示:
性別為文本類型,如下圖所示:
(2)Python實(shí)現(xiàn)
在Python中我們可以利用info()方法查看數(shù)據(jù)表中的數(shù)據(jù)類型,而且不需要一列一列查看,在調(diào)用info()方法以后就會(huì)輸出整個(gè)表中所有列的數(shù)據(jù)類型。
通過info()方法可以看出表df的行索引index是0到3,總共4columns,分別是編號(hào)、年齡、性別以及注冊(cè)時(shí)間,且4columns中只有年齡是int類型,其他columns都是object類型,共占用內(nèi)存208bytes。
4、利用describe獲取數(shù)值分布情況
熟悉數(shù)據(jù)的第三點(diǎn)就是掌握數(shù)值的分布情況,即均值是多少,最值是多少,方差及分位數(shù)分別又是多少。
(1)Excel實(shí)現(xiàn)
在Excel中如果想看某列的數(shù)值分布情況,那么手動(dòng)選中這一列,在Excel的右下角就會(huì)顯示出這一列的平均值、計(jì)數(shù)及求和,且只顯示這三個(gè)指標(biāo),如下圖所示。
(2)Python實(shí)現(xiàn)
在Python中只需要利用describe()方法就可以獲取所有數(shù)值類型字段的分布值。
表df中只有年齡這一列是數(shù)值類型,所以調(diào)用describe()方法時(shí),只計(jì)算了年齡這一列的相關(guān)數(shù)值分布情況。我們可以新建一個(gè)含有多列數(shù)值類型字段的DataFrame。
上面的表df中年齡、收入、家屬數(shù)都是數(shù)值類型,所以在調(diào)用describe()方法的時(shí)候,會(huì)同時(shí)計(jì)算這三列的數(shù)值分布情況。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠(chéng)摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國(guó)內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03