Python+pandas數(shù)據(jù)分析實(shí)踐總結(jié)
引言:
在近日的python數(shù)據(jù)分析實(shí)戰(zhàn)課中,我學(xué)習(xí)到使用python進(jìn)行數(shù)據(jù)分析的流程、方法,對(duì)常使用的函數(shù)有一些認(rèn)識(shí)和了解,對(duì) numpy, pandas 包有了一定的理解但不深。這篇博客將是我自己用于總結(jié)歸納的圣地,我將對(duì)整個(gè)項(xiàng)目的 key point 進(jìn)行歸納總結(jié),提取其中精華之所在,汲取之加以?shī)^發(fā)向前。
一、分析數(shù)據(jù)文件:
在拿到數(shù)據(jù)的第一刻,莫急,先打開(kāi)數(shù)據(jù)文件看一看,明白文件里的數(shù)據(jù)能夠說(shuō)明什么。于是乎我們得以提出分析的目標(biāo),并開(kāi)始思索如何能夠?qū)崿F(xiàn)我們的目的。例如,我們手里有一份某電商平臺(tái)一年的營(yíng)銷數(shù)據(jù),這份數(shù)據(jù)中包含了達(dá)成交易訂單的用戶ID、本次訂單對(duì)應(yīng)的商品數(shù)量、總價(jià)、時(shí)間,思考:我們可以利用這些數(shù)據(jù)得到哪些結(jié)論?——從時(shí)間維度:分析不同月份的營(yíng)銷額;從客戶維度:分析回購(gòu)率、復(fù)購(gòu)率、新老用戶比例。根據(jù)得出的結(jié)論,我們得以制定相應(yīng)的策略來(lái)提高商家的盈利。
二、數(shù)據(jù)預(yù)處理:
提一嘴,在文件最開(kāi)始導(dǎo)入包的時(shí)候輸入 plt.rcParams['font.sans-serif'] = 'SimHei' 以讓中文能夠正常顯示(IPython中如此)
首先讀取文件,利用 pandas 根據(jù)不同文件類型選擇不同的讀取函數(shù):
- csv: pd.read_csv('name.csv', encoding='utf-8/GBK')
- text: pd.read_table('name.txt', names=columns, sep='\s+') # names指定每一列數(shù)據(jù)的含義,sep是劃分?jǐn)?shù)據(jù)時(shí)的參考,\s+表示跳過(guò)任意多的空格
- excel: pd.read_excel('name.xlsx')
接著進(jìn)行數(shù)據(jù)的預(yù)處理:
- 對(duì)于出現(xiàn)NAN的行或列且需要?jiǎng)h除的:data.dropna(axis=0, how='any', inplace=True) # 刪除帶有NAN的一整行數(shù)據(jù),并修改原值
- 對(duì)于重復(fù)出現(xiàn)的行或列:data.drop_duplicates(axis=0, inplace=True) # 刪除重復(fù)的行,并修改原值
- 對(duì)于無(wú)用的行或列:data.drop(columns='order_id', axis=1, inplace=True) # 刪除 order_id 這一列
- 對(duì)于需要更新索引的數(shù)據(jù):data.reset_index(drop=True, inplace=True) 把原來(lái)的索引index列刪除,并更新index
對(duì)于單位不統(tǒng)一的數(shù)據(jù):如下圖

看到銷售金額一列的單位有元也有萬(wàn)元,并且含有逗號(hào),為了方便處理,我們將其格式化。
def data_deal(number):
if number.find('萬(wàn)元')!= -1:#找到帶有萬(wàn)元的,取出數(shù)字,去掉逗號(hào),轉(zhuǎn)成float,*10000
number_new = float(number[:number.find('萬(wàn)元')].replace(',',''))*10000
else: # 找到帶有元的并處理
number_new = float(number[:number.find('元')].replace(',',''))
return number_new
data['銷售金額'] = data['銷售金額'].map(data_deal)
這里我們使用到了 Series.map() 函數(shù),該函數(shù)的作用與 apply 和 applymap 類似,接收一個(gè)函數(shù)或含有映射關(guān)系的字典型對(duì)象,區(qū)別如下:
- apply:作用于dataframe的整行或整列
- applymap:作用于dataframe的每一個(gè)元素
- map:作用于series中的每一個(gè)元素,在df結(jié)構(gòu)中無(wú)法使用map函數(shù)
詳情:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.map.html?highlight=map
到此這篇關(guān)于Python+pandas數(shù)據(jù)分析實(shí)踐總結(jié)的文章就介紹到這了,更多相關(guān)python數(shù)據(jù)分析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python requests.post帶head和body的實(shí)例
今天小編就為大家分享一篇python requests.post帶head和body的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Numpy之random.randint產(chǎn)生隨機(jī)整數(shù)方式
這篇文章主要介紹了Numpy之random.randint產(chǎn)生隨機(jī)整數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
python調(diào)用系統(tǒng)中應(yīng)用程序的函數(shù)示例
這篇文章主要為大家介紹了python調(diào)用系統(tǒng)中應(yīng)用程序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Python中實(shí)現(xiàn)私有屬性和數(shù)據(jù)封裝的優(yōu)雅實(shí)踐
這段文章深入解析了Python中私有屬性的實(shí)現(xiàn)及其底層原理,強(qiáng)調(diào)了封裝的重要性,并通過(guò)實(shí)戰(zhàn)案例展示了如何使用雙下下符號(hào)實(shí)現(xiàn)私有屬性,解決繼承中的命名沖突問(wèn)題,需要的朋友可以參考下2026-05-05
用Pycharm實(shí)現(xiàn)鼠標(biāo)滾輪控制字體大小的方法
今天小編就為大家分享一篇用Pycharm實(shí)現(xiàn)鼠標(biāo)滾輪控制字體大小的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
numpy數(shù)組之存取文件的實(shí)現(xiàn)示例
這篇文章主要介紹了numpy數(shù)組之存取文件的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
python 使用tkinter+you-get實(shí)現(xiàn)視頻下載器
這篇文章主要介紹了python 使用tkinter+you-get實(shí)現(xiàn)視頻下載器,幫助大家方便的下載視頻資源,感興趣的朋友可以了解下2020-11-11
Python 中的Selenium異常處理實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家介紹了Python 中的Selenium異常處理的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05
解決Django模板無(wú)法使用perms變量問(wèn)題的方法
這篇文章主要給大家介紹了關(guān)于解決Django模板無(wú)法使用perms變量問(wèn)題的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09

