Python數(shù)據(jù)分析——數(shù)據(jù)預(yù)處理的方法

前言

1. 關(guān)于數(shù)據(jù)集

數(shù)據(jù)來源:日月光華老師的《Python數(shù)據(jù)分析從入門到機器學(xué)習(xí)》的 lianjia 數(shù)據(jù)。

數(shù)據(jù)概況:

  • cjtaoshu:成交套數(shù)
  • mendian:門店
  • cjzongjia:成交總價
  • zhiwei:職位
  • haoping:好評
  • cjdanjia:成交單價
  • cjxiaoqu:成交小區(qū)
  • xingming:姓名
  • cjzhouqi:成交周期
  • biaoqian:經(jīng)紀人標簽
  • cjlouceng:成交樓層
  • cjshijian:成交時間
  • congyenianxian:經(jīng)紀人從業(yè)年限
  • bankuai:板塊

2. 分析環(huán)境

  • Python3
  • jupyter notebook

一、數(shù)據(jù)讀取、數(shù)據(jù)觀察與合并數(shù)據(jù)

1. 數(shù)據(jù)讀取

可以看到一共有7個csv文件篇恒,而且由于數(shù)據(jù)文件的編碼方式不統(tǒng)一,在循環(huán)讀取的時候需要做一下處理藏古。

代碼:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

data_list = []
for i in range(1, 8):
    try:
        data = pd.read_csv('./lianjia/lianjia{}.csv'.format(i), encoding='gbk')
    except:
        data = pd.read_csv('./lianjia/lianjia{}.csv'.format(i))
    data_list.append(data)

2. 合并數(shù)據(jù)

concat()方法

data_list里的數(shù)據(jù)的數(shù)據(jù)格式都是完全統(tǒng)一的吧碾,這里用pandas的concat()方法俺孙。

data = pd.concat(data_list)
data.head()

3. 確定分析目標辣卒,提取需要數(shù)據(jù)

分析目標:做一個房產(chǎn)估價模型,給定一些房子信息睛榄,模型估計出單價荣茫。這里需要:cjdanjia(成交單價),cjxiaoqu(成交小區(qū))场靴,cjlouceng(成交樓層)啡莉,bankuai(板塊)。

data = data[['cjdanjia', 'cjxiaoqu', 'cjlouceng', 'bankuai']]

二旨剥、處理缺失值與重復(fù)值

1. 缺失值

isnull()方法
# 刪除全部為null的值
data.dropna(how='all', inplace=True)

這里(bankuai)板塊部分數(shù)據(jù)相對來說不是那么的重要咧欣,所以有缺失值問題不大,這里不做處理轨帜。

2. 重復(fù)值

duplicated()方法

由于在處理缺失值時魄咕,對板塊數(shù)據(jù)沒有進一步處理,在判斷是否是重復(fù)值時就會存在這樣一種情況:非null數(shù)據(jù)相同蚌父,但是板塊數(shù)據(jù)一個為null,一個不為null哮兰,這其實是重復(fù)數(shù)據(jù),所以在判斷是否為重復(fù)值時苟弛,使用非null的數(shù)據(jù)判斷:

(data.duplicated(subset=['cjdanjia','cjxiaoqu','cjlouceng'])).sum()

>>> 20012
drop_duplicates()方法
sort_values()方法

使用drop_duplicates()方法刪除重復(fù)值時喝滞,會默認把后面的重復(fù)值刪除掉,為了盡量保留有板塊值不為null的數(shù)據(jù)膏秫,這里先使用sort_values()方法排序右遭,該方法默認把包含null的值放后面。

data.sort_values(by='bankuai', inplace=True)

data.drop_duplicates(subset=['cjdanjia','cjxiaoqu','cjlouceng'], inplace=True)

三荔睹、數(shù)據(jù)類型轉(zhuǎn)換狸演、異常值處理以及數(shù)據(jù)離散化分析

1. 數(shù)據(jù)類型轉(zhuǎn)換

將cjdanjia轉(zhuǎn)換為數(shù)值類型言蛇,以萬元為單位僻他,保留兩位小數(shù)。

# 判斷數(shù)據(jù)是否都包含'元/平' ~:取反
(~data.cjdanjia.str.contains('元/平')).sum()
>>> 0

data = data.assign(cjdanjia = np.round(data.cjdanjia.str.replace('元/平', '').astype(np.float32).map(lambda x:x/10000), 2))

2. 異常值處理

按照北京房價行情分析腊尚,成交單價的最小值應(yīng)該在5000元以上(主觀推測)吨拗,所以去掉成交單價小于5000的數(shù)據(jù)。

data = data[data.cjdanjia > 0.5]

3. 數(shù)據(jù)離散化分析

區(qū)間畫圖顯示分析

bins = [0, 1, 2, 3, 4, 5, 7, 10, 15]
pd.cut(data.cjdanjia, bins).value_counts().plot.bar(rot=20)

由于這里分析的數(shù)據(jù)是2011~2016年之間的數(shù)據(jù),所以可以看到成交單價大部分分布在2到4萬之間劝篷。


四哨鸭、字符串處理

這里以成交樓層(cjlouceng)數(shù)據(jù)為例學(xué)習(xí)字符串處理方法。由前面的圖可以看到成交樓層(cjlouceng)數(shù)據(jù)都是以兩個'/'分成了三部分娇妓,這里先判斷一下像鸡。

(data.cjlouceng.str.split('/').map(len) != 3).sum()
>>> 0

然后從成交樓層數(shù)據(jù)中提取朝向和樓層信息,并以此添加兩列數(shù)據(jù)哈恰。

data = data.assign(chaoxiang = data.cjlouceng.map(lambda x:x.split('/')[0]))
data = data.assign(louceng = data.cjlouceng.map(lambda x:x.split('/')[1]))

查看樓層數(shù)據(jù)都有哪些:

unipue()方法:返回唯一值
data.louceng.unique()

>>> array(['低樓層', '中樓層', '高樓層', '地下室', '未知', ''], dtype=object)

經(jīng)分析這里louceng數(shù)據(jù)包含 '未知' 和 '' 的數(shù)據(jù)數(shù)量很少只估,而且信息不全,這里將其刪除掉着绷。

data = data[(data.louceng != '')&(data.louceng != '未知')] 
get_dummies()方法

樓層數(shù)據(jù)不是數(shù)值蛔钙,無法丟進模型進行分析,這里用pandas的get_dummies()方法數(shù)值化信息荠医。

data.join(pd.get_dummies(data.louceng))

其他字符串類型數(shù)據(jù)處理方式大致相同吁脱。


五、分組運算與布爾過濾

在前面第一節(jié):確定分析目標彬向,提取需要數(shù)據(jù)中再加上 'xingming' 和 'cjzongjia'兼贡,'congyenianxian',其他不變娃胆。

1. 分組運算

分析:所有的板塊中紧显,經(jīng)紀人成交總價值超過1億的經(jīng)紀人。

groupby()方法
data_group = data.groupby(['bankuai','xingming'])['cjzongjia'].sum()

2. 布爾過濾

data_group[data_group > 10000]

3. 透視表分析

進一步思考:這些成交總價超過一億的經(jīng)紀人有什么特點缕棵?跟從業(yè)年限(congyenianxian)的關(guān)系孵班。

pivot_table()方法
data_1w = data.pivot_table('cjzongjia', index='xingming', columns='congyenianxian', aggfunc=sum)

#繪制餅圖
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽
(data_1w > 10000).sum().plot.pie(figsize=(6,6))

此圖很明顯的說明了一個問題:對經(jīng)紀人來說,從業(yè)年限越高招驴,他的成交總價超過一億的人數(shù)就越多篙程。


總結(jié)

通過對lianjia數(shù)據(jù)的分析處理,進一步鞏固了Python數(shù)據(jù)分析數(shù)據(jù)預(yù)處理的一些方法别厘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虱饿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子触趴,更是在濱河造成了極大的恐慌氮发,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗懦,死亡現(xiàn)場離奇詭異爽冕,居然都是意外死亡,警方通過查閱死者的電腦和手機披蕉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門颈畸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乌奇,“玉大人,你說我怎么就攤上這事眯娱〗该纾” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵徙缴,是天一觀的道長试伙。 經(jīng)常有香客問我,道長于样,這世上最難降的妖魔是什么迁霎? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮百宇,結(jié)果婚禮上考廉,老公的妹妹穿的比我還像新娘。我一直安慰自己携御,他們只是感情好昌粤,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著啄刹,像睡著了一般涮坐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上誓军,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天袱讹,我揣著相機與錄音,去河邊找鬼昵时。 笑死捷雕,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的壹甥。 我是一名探鬼主播救巷,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼句柠!你這毒婦竟也來了浦译?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤溯职,失蹤者是張志新(化名)和其女友劉穎精盅,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谜酒,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡叹俏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了甚带。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片她肯。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡佳头,死狀恐怖鹰贵,靈堂內(nèi)的尸體忽然破棺而出晴氨,到底是詐尸還是另有隱情,我是刑警寧澤碉输,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布籽前,位于F島的核電站,受9級特大地震影響敷钾,放射性物質(zhì)發(fā)生泄漏枝哄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一阻荒、第九天 我趴在偏房一處隱蔽的房頂上張望挠锥。 院中可真熱鬧,春花似錦侨赡、人聲如沸蓖租。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蓖宦。三九已至,卻和暖如春油猫,著一層夾襖步出監(jiān)牢的瞬間稠茂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工情妖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留睬关,地道東北人。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓毡证,卻偏偏與公主長得像共螺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子情竹,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 29,417評論 8 265
  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,005評論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理藐不,服務(wù)發(fā)現(xiàn),斷路器秦效,智...
    卡卡羅2017閱讀 134,701評論 18 139
  • 若說沒奇緣雏蛮,今生偏又遇著他,若說有奇緣阱州,為何心事終虛化?
    星河BB閱讀 359評論 0 0
  • 「卻沒辦法允許自己倒下苔货!」 我想犀概,我是真的累了立哑!日復(fù)一日,望不到盡頭的忙碌姻灶,早就已經(jīng)使我忘了生活原本該有的樣子铛绰。我...
    把你的腳步留下閱讀 312評論 0 0