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腳本將絕對(duì)url替換為相對(duì)url的教程
這篇文章主要介紹了使用Python腳本將絕對(duì)url替換為相對(duì)url的教程,腳本代碼非常簡(jiǎn)單,需要的朋友可以參考下2015-04-04Python實(shí)現(xiàn)批量將word轉(zhuǎn)換成pdf
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量將word文檔轉(zhuǎn)換成pdf文件,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08Python利用itchat庫(kù)向好友或者公眾號(hào)發(fā)消息的實(shí)例
今天小編就為大家分享一篇Python利用itchat庫(kù)向好友或者公眾號(hào)發(fā)消息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02Django實(shí)現(xiàn)微信小程序的登錄驗(yàn)證功能并維護(hù)登錄態(tài)
這篇文章主要介紹了Django實(shí)現(xiàn)小程序的登錄驗(yàn)證功能并維護(hù)登錄態(tài),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07python 殺死自身進(jìn)程的實(shí)現(xiàn)方法
今天小編就為大家分享一篇python 殺死自身進(jìn)程的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07