国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

數(shù)據(jù)挖掘?qū)崙?zhàn)項(xiàng)目——北京二手房房?jī)r(jià)分析

張漢慶 / 1671人閱讀

摘要:本次實(shí)戰(zhàn)項(xiàng)目的主要目的是分析北京二手房房?jī)r(jià),項(xiàng)目源自博文入門數(shù)據(jù)分析最好的實(shí)戰(zhàn)項(xiàng)目一和入門數(shù)據(jù)分析最好的實(shí)戰(zhàn)項(xiàng)目二。

本次實(shí)戰(zhàn)項(xiàng)目的主要目的是分析北京二手房房?jī)r(jià),項(xiàng)目源自博文:入門Python數(shù)據(jù)分析最好的實(shí)戰(zhàn)項(xiàng)目(一)和入門Python數(shù)據(jù)分析最好的實(shí)戰(zhàn)項(xiàng)目(二)。本篇文章僅記錄博主在學(xué)習(xí)過(guò)程中的思路。


數(shù)據(jù)分析

首先我們要對(duì)數(shù)據(jù)進(jìn)行分析,可分為以下幾個(gè)主要步驟:

導(dǎo)入數(shù)據(jù)

檢查缺失值情況并對(duì)表格進(jìn)行簡(jiǎn)單處理

數(shù)據(jù)可視化分析

這里我們重點(diǎn)要講的是數(shù)據(jù)可視化分析,即對(duì)一些重要對(duì)特征逐個(gè)畫圖觀察。

打開表格:

我們看到上述數(shù)據(jù)有 11 個(gè)特征變量,1 個(gè)目標(biāo)變量 Price。11 個(gè)特征分別為:
Direction
District
Elevator
Floor
Garden
Id
Layout
Region
Renovation
Size
Year

我們分別對(duì) Elevator, Floor, Layout, Region, Renovation, Size, Year 這 7 個(gè)特征進(jìn)行可視化分析。

Elevator 特征分析

代碼:

# Elevator 特征分析
miss_value = len(df.loc[(df["Elevator"].isnull()), "Elevator"])
print("Elevator缺失值個(gè)數(shù)為:" + str(miss_value))

# 移除表格中可能存在的錯(cuò)誤的值
df["Elevator"] = df.loc[(df["Elevator"]=="有電梯") | (df["Elevator"]=="無(wú)電梯"), "Elevator"]

# 以樓層大于6的有電梯,小于等于6層沒(méi)有電梯為標(biāo)準(zhǔn),填補(bǔ)缺失值
df.loc[(df["Floor"]>6) & (df["Elevator"].isnull()), "Elevator"] == "有電梯"
df.loc[(df["Floor"]<=6) & (df["Elevator"].isnull()), "Elevator"] == "無(wú)電梯"

f, [ax1, ax2] = plt.subplots(1, 2, figsize=(20,10))
sns.countplot(df["Elevator"], ax=ax1)
ax1.set_title("有無(wú)電梯數(shù)量對(duì)比")
ax1.set_xlabel("是否有電梯")
ax1.set_ylabel("數(shù)量")

sns.barplot(x="Elevator", y="Price", data=df, ax=ax2)
ax2.set_title("有無(wú)電梯價(jià)格對(duì)比")
ax2.set_xlabel("是否有電梯")
ax2.set_ylabel("價(jià)格")
plt.show()

執(zhí)行結(jié)果:

分析目的:
分析有無(wú)電梯兩種二手房對(duì)數(shù)量和價(jià)格。

使用方法:
采用seaborn完成可視化。

觀察結(jié)果:
我們發(fā)現(xiàn) Elevator 特征是有大量缺失值。一般有大量缺失值時(shí),需要根據(jù)實(shí)際情況考慮。常用的方法有平均值/中位數(shù)填補(bǔ)法,直接移除,或根據(jù)其他特征建模預(yù)測(cè)等。

這里我們用填補(bǔ)法。由于有無(wú)電梯不是數(shù)值,不存在平均值和中位數(shù),這里根據(jù)樓層 (Floor) 斷有無(wú)電梯,一般的樓層大于 6 的都有電梯,而小于等于 6 層的一般都沒(méi)有電梯。

在填補(bǔ)缺失值后繼續(xù)觀察,有電梯的二手房數(shù)量更多,且房?jī)r(jià)較高。

Floor 特征分析

代碼:

# Floor 特征分析
f, ax1 = plt.subplots(figsize=(20,5))
sns.countplot(df["Floor"], ax=ax1)
ax1.set_title("各樓層二手房數(shù)量", fontsize=15)
ax1.set_xlabel("樓層")
ax1.set_ylabel("數(shù)量")
plt.show()

執(zhí)行結(jié)果:

分析目的:
分析不同的樓層二手房數(shù)量。

使用方法:
采用seaborn完成可視化。

觀察結(jié)果:
其中 6 層的二手房數(shù)量最多,但是多帶帶的樓層特征沒(méi)有什么意義,因?yàn)槊總€(gè)小區(qū)住房的總樓層數(shù)都不一樣,我們需要知道樓層的相對(duì)高度。

此外,樓層與文化也有很重要的聯(lián)系,比如在中國(guó)文化有七上八下,七層可能受歡迎等。一般來(lái)說(shuō)中間樓層比較受歡迎,價(jià)格也高,底層和頂層受歡迎度較低,價(jià)格也相對(duì)較低。

樓層是一個(gè)非常復(fù)雜的特征,對(duì)房?jī)r(jià)影響也比較大。

Layout 特征分析

代碼:

# Layout特征分析
f, ax1 = plt.subplots(figsize=(20, 20))
sns.countplot(y="Layout", data=df, ax=ax1)
ax1.set_title("房屋戶型", fontsize=15)
ax1.set_xlabel("數(shù)量")
ax1.set_ylabel("戶型")
plt.show()

執(zhí)行結(jié)果:

分析目的:
分析不同戶型的數(shù)量。

使用方法:
采用seaborn完成可視化。

觀察結(jié)果:
這個(gè)特征分類下有很多不規(guī)則的命名,以上特征是不能作為機(jī)器學(xué)習(xí)模型的數(shù)據(jù)輸入的,需要使用特征工程進(jìn)行相應(yīng)的處理。

Region 特征分析

代碼:

df_house_count = df.groupby("Region")["Price"].count().sort_values(ascending=False).to_frame().reset_index()
df_house_mean = df.groupby("Region")["PerPrice"].mean().sort_values(ascending=False).to_frame().reset_index()

f, [ax1, ax2, ax3] = plt.subplots(3, 1, figsize=(20,15))
sns.barplot(x="Region", y="PerPrice", palette="Blues_d", data=df_house_mean, ax=ax1)
ax1.set_title("北京各區(qū)二手房每平米單價(jià)對(duì)比", fontsize=15)
ax1.set_xlabel("區(qū)域")
ax1.set_ylabel("每平米單價(jià)")

sns.barplot(x="Region", y="Price", palette="Greens_d", data=df_house_count, ax=ax2)
ax2.set_title("北京各大區(qū)二手房數(shù)量對(duì)比",fontsize=15)
ax2.set_xlabel("區(qū)域")
ax2.set_ylabel("數(shù)量")

sns.boxplot(x="Region", y="Price", data=df, ax=ax3)
ax3.set_title("北京各大區(qū)二手房房屋總價(jià)",fontsize=15)
ax3.set_xlabel("區(qū)域")
ax3.set_ylabel("房屋總價(jià)")

plt.show()

執(zhí)行結(jié)果:

分析目的:
分析不同區(qū)域的房?jī)r(jià)和數(shù)量,并進(jìn)行對(duì)比。

使用方法:
pandas的網(wǎng)絡(luò)透視功能groupby分組排序。
區(qū)域特征可視化采用seaborn完成。
顏色使用調(diào)色板palette參數(shù),顏色越淺數(shù)量越少,反之越多。

觀察結(jié)果:
二手房每平方米單價(jià)對(duì)比:西城區(qū)的房?jī)r(jià)最貴均價(jià)大約 11 萬(wàn)/平,因?yàn)槲鞒窃诙h(huán)以里,且是熱門學(xué)區(qū)房的聚集地。其次是東城大約 10 萬(wàn)/平,然后是海淀大約 8.5 萬(wàn)/平,其它均低于 8 萬(wàn)/平。

二手房房數(shù)量對(duì)比:從數(shù)量統(tǒng)計(jì)上來(lái)看,海淀區(qū)和朝陽(yáng)區(qū)二手房數(shù)量最多,約接近 3000 套,因?yàn)槎邔儆诖髤^(qū)。其次是豐臺(tái)區(qū),近幾年正在改造建設(shè),需求量大。

二手房房屋總價(jià)對(duì)比:通過(guò)箱型圖看到,各大區(qū)域房屋總價(jià)中位數(shù)都都在 1000 萬(wàn)以下,且房屋總價(jià)離散值較高,西城最高達(dá)到了 6000 萬(wàn),說(shuō)明房屋價(jià)格特征并不是理想的正態(tài)分布。

Renovation 特征分析

代碼:

# Renovation 特征分析
df["Renovation"].value_counts()

f, [ax1, ax2, ax3] = plt.subplots(1, 3, figsize=(20,5))
sns.countplot(df["Renovation"], ax=ax1)
sns.barplot(x="Renovation", y="Price", data=df, ax=ax2)
sns.boxplot(x="Renovation", y="Price", data=df, ax=ax3)
plt.show()

執(zhí)行結(jié)果:

分析目的:
分析不同裝修程度的二手房數(shù)量和房?jī)r(jià)。

使用方法:
采用seaborn完成可視化。

觀察結(jié)果:
對(duì)于數(shù)量來(lái)說(shuō),精裝修的二手房最多,簡(jiǎn)裝其次;對(duì)于價(jià)格來(lái)說(shuō),毛坯房?jī)r(jià)格最高,其次是精裝修的。

Size 特征分析

代碼:

# Size特征分析
f, [ax1, ax2] = plt.subplots(1, 2, figsize=(15,5))

# 建房時(shí)間分布情況
sns.distplot(df["Size"], bins=20, ax=ax1, color="r")
sns.kdeplot(df["Size"], ax=ax1, shade=True)

# 建房時(shí)間和出售價(jià)格的關(guān)系
sns.regplot(x="Size", y="Price", data=df, ax=ax2)
plt.show()

# 查看異常值
df.loc[df["Size"] < 10]
df.loc[df["Size"] > 1000]

# 移除上述兩種異常值
df = df[(df["Layout"]!="疊拼別墅") & (df["Size"]<1000)]

# 重新進(jìn)行可視化發(fā)現(xiàn)就沒(méi)有明顯的異常點(diǎn)
sns.regplot(x="Size", y="Price", data=df)
plt.show()

執(zhí)行結(jié)果:

分析目的:
分析不同大小的二手房和價(jià)格的關(guān)系。

使用方法:
通過(guò)distplotkdeplot 繪制柱狀圖觀察 Size 特征的分布情況,屬于長(zhǎng)尾類型的分布,這說(shuō)明有很多面積很大且超出正常范圍的二手房。

通過(guò) regplot 繪制了 SizePrice 之間的散點(diǎn)圖,發(fā)現(xiàn) Size 特征基本與Price呈現(xiàn)線性關(guān)系,符合基本常識(shí),面積越大,價(jià)格越高。

觀察結(jié)果:
有兩組明顯的異常點(diǎn):面積不到 10 平米但價(jià)格超出 10000 萬(wàn)和面積超過(guò)了 1000 平米價(jià)格很低兩種情況。

經(jīng)過(guò)查看發(fā)現(xiàn)這兩組異常值分別是別墅和商用房,因此出現(xiàn)異常,故將其移除再次觀察Size分布和Price關(guān)系。

這里也說(shuō)明我們?cè)谟^察數(shù)據(jù)的時(shí)候,要緊密結(jié)合實(shí)際業(yè)務(wù)需求來(lái)分析,才能得出更準(zhǔn)確的結(jié)果。

Year 特征分析

代碼:

# Year 特征分析
grid = sns.FacetGrid(df, row="Elevator", col="Renovation", palette="seismic", size=4)
grid.map(plt.scatter, "Year", "Price")
# grid.add_legend()

執(zhí)行結(jié)果:

分析目的:
分析不同年代對(duì)房?jī)r(jià)變化的影響。

使用方法:
在 Renovation 和 Elevator 的分類條件下,使用 FacetGrid 分析 Year 特征

觀察結(jié)果:
觀察數(shù)據(jù)可視化圖表可以看出,整個(gè)二手房房?jī)r(jià)趨勢(shì)是隨著時(shí)間增長(zhǎng)而增長(zhǎng)的,2000 年以后建造的二手房房?jī)r(jià)相較于 2000 年以前有很明顯的價(jià)格上漲。此外,1980年之前幾乎不存在有電梯二手房數(shù)據(jù),說(shuō)明1980年之前還沒(méi)有大面積安裝電梯,且在 1980 年之前無(wú)電梯二手房中,簡(jiǎn)裝二手房占絕大多數(shù),精裝反而很少。

數(shù)據(jù)挖掘 特征工程

特征工程的目的是讓這些特征更友好的作為模型的輸入,處理數(shù)據(jù)的好壞會(huì)嚴(yán)重的影響模型性能。

這里我們對(duì)已有的 Layout 特征,Year 特征和 Direction 特征進(jìn)行處理,創(chuàng)建新特征,刪除無(wú)用特征,最后進(jìn)行 One-hot 獨(dú)熱編碼。

處理 Layout 特征

df["Layout"].value_counts()

# 移除X房間X衛(wèi)的格式 非民住
df = df.loc[df["Layout"].str.extract("^d(.*?)d.*?") == "室"]
df.head()

# 用 str.extract() 方法,將"室"和"廳"都提取出來(lái),多帶帶作為兩個(gè)新特征
df["Layout_room_num"] = df["Layout"].str.extract("(^d).*", expand=False).astype("int64")
df["Layout_hall_num"] = df["Layout"].str.extract("^d.*?(d).*", expand=False).astype("int64")

處理 Year 特征

# 將連續(xù)數(shù)值型特征 Year 離散化,做分箱處理
# 如何分箱還要看實(shí)際業(yè)務(wù)需求,這里為了方便,使用了pandas的 qcut 采用中位數(shù)進(jìn)行分割,分割數(shù)為8等份
df["Year"] = pd.qcut(df["Year"], 8).astype("object")

df["Year"].value_counts()

處理 Direction 特征

df["Direction"].value_counts()

# 寫函數(shù) direct_func 來(lái)整理上面較亂的 Direction
def direct_func(x):
    if not isinstance(x,str):
        raise TypeError
    x = x.strip()
    x_len = len(x)
    x_list = pd.unique([y for y in x])
    if x_len != len(x_list):
        return "no"
        
    if (x_len == 2) & (x not in d_list_two):
        m0 = x[0]
        m1 = x[1]
        return m1+m0
    elif (x_len == 3) & (x not in d_list_three):
        for n in d_list_three:
            if (x_list[0] in n) & (x_list[1] in n) & (x_list[2] in n):
                return n
    elif (x_len == 4) & (x not in d_list_four):
        return d_list_four[0]
    else:
        return x
       
# 通過(guò) apply() 方法將 Direction 數(shù)據(jù)格式轉(zhuǎn)換
d_list_one = ["東","西","南","北"]
d_list_two = ["東西","東南","東北","西南","西北","南北"]
d_list_three = ["東西南","東西北","東南北","西南北"]
d_list_four = ["東西南北"]    
df["Direction"] = df["Direction"].apply(direct_func)
df = df.loc[(df["Direction"]!="no")&(df["Direction"]!="nan")]

df["Direction"].value_counts()

創(chuàng)建新特征

# 根據(jù)對(duì)業(yè)務(wù)的理解,定義新特征,然后觀察這些新特征對(duì)模型有什么影響

# 根據(jù)已有特征創(chuàng)建新特征
df["Layout_total_num"] = df["Layout_room_num"] + df["Layout_hall_num"]
df["Size_room_ratio"] = df["Size"]/df["Layout_total_num"] 

刪除無(wú)用特征

df = df.drop(["Layout","PerPrice","Garden", "District"], axis=1)

df.head()

One-hot 獨(dú)熱編碼
將定類的非數(shù)值型類型量化的一種方法,在pandas中使用 get_dummies() 方法實(shí)現(xiàn)。這里使用一個(gè)自定義的封裝的函數(shù)實(shí)現(xiàn)了定類數(shù)據(jù)的自動(dòng)量化處理。

def one_hot_encoder(df, nan_as_category = True):
    original_columns = list(df.columns)
    categorical_columns = [col for col in df.columns if df[col].dtype == "object"]
    df = pd.get_dummies(df, columns= categorical_columns, dummy_na= nan_as_category)
    new_columns = [c for c in df.columns if c not in original_columns]
    return df, new_columns
    
# 對(duì)于object特征進(jìn)行onehot編碼
df, df_cat = one_hot_encoder(df)

特征相關(guān)性
對(duì)數(shù)據(jù)經(jīng)過(guò)以上處理后,可以用 seabornheatmap 方法對(duì)特征相關(guān)性進(jìn)行可視化。

colormap = plt.cm.RdBu
plt.figure(figsize=(20, 20))
sns.heatmap(df.corr(), linewidth=0.1, vmax=1.0, square=True,
           cmap=colormap, linecolor="white", annot=True)

heatmap 可以根據(jù)顏色觀察特征的相關(guān)性。顏色偏紅或者偏藍(lán)都說(shuō)明相關(guān)系數(shù)較大,即兩個(gè)特征對(duì)于目標(biāo)變量的影響程度相似,也就是說(shuō)存在嚴(yán)重的重復(fù)信息,會(huì)造成過(guò)擬合現(xiàn)象。

我們能通過(guò)特征相關(guān)性分析,找出哪些特征有嚴(yán)重的重疊信息,然后擇優(yōu)選擇。

這里還需要注意特征太多有可能會(huì)導(dǎo)致 heatmap 圖畫失敗。

建模預(yù)測(cè)

本次建模主要方法為:使用Cart決策樹的回歸模型對(duì)二手房房?jī)r(jià)進(jìn)行分析預(yù)測(cè);使用交叉驗(yàn)證方法充分利用數(shù)據(jù)集進(jìn)行訓(xùn)練,避免數(shù)據(jù)劃分不均勻的影響;使用GridSearchCV方法優(yōu)化模型參數(shù);使用R2評(píng)分方法對(duì)模型預(yù)測(cè)評(píng)分。

數(shù)據(jù)劃分

# 特征變量和目標(biāo)變量
features = df.drop("Price", axis=1)
prices = df["Price"]

# 把分類特征都轉(zhuǎn)成數(shù)值型后有{}行{}列
print("北京二手房房?jī)r(jià)有數(shù)據(jù) {0} 條,字段 {1} 個(gè)" .format(*df.shape))

# 將數(shù)據(jù)集劃分為訓(xùn)練集與測(cè)試集
features = np.array(features)
prices = np.array(prices)

# 導(dǎo)入 sklearn 進(jìn)行訓(xùn)練測(cè)試集劃分
from sklearn.model_selection import train_test_split

features_train, features_test, prices_train, prices_test = train_test_split(features, prices, test_size=0.2, random_state=0)

建立模型

# 建立模型
from sklearn.model_selection import KFold
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import make_scorer
from sklearn.model_selection import GridSearchCV

# 通過(guò)交叉認(rèn)證緩解數(shù)據(jù)集過(guò)擬合的現(xiàn)象
# 建立決策樹回歸模型
# 通過(guò)GridSearchCV找到最優(yōu)深度參數(shù)(基于輸入數(shù)據(jù)[X,y] 利于網(wǎng)格搜索找到最優(yōu)的決策樹模型)
def fit_model(X, y):
    
    cross_validator = KFold(10, shuffle=True)
    regressor = DecisionTreeRegressor()
    params = {"max_depth": [1,2,3,4,5,6,7,8,9,10]}
    scoring_fnc = make_scorer(performance_metric)
    grid = GridSearchCV(estimator=regressor, param_grid=params, scoring=scoring_fnc, cv=cross_validator)
    
    # 網(wǎng)格搜索
    grid = grid.fit(X, y)
    return grid.best_estimator_

評(píng)估驗(yàn)證

# 計(jì)算 R2 分?jǐn)?shù)
from sklearn.metrics import r2_score

def performance_metric(y_true, y_predict):
    score = r2_score(y_true, y_predict)
    
    return score
    
# 調(diào)參優(yōu)化模型
# 通過(guò)可視化模型學(xué)習(xí)曲線,觀察是否出現(xiàn)過(guò)擬合問(wèn)題
# visuals 為自定義函數(shù)
import visuals as vs

# 分析模型
vs.ModelLearning(features_train, prices_train)
vs.ModelComplexity(features_train, prices_train)
optimal = fit_model(features_train, prices_train)

# 輸出最優(yōu)模型的參數(shù) "max_depth"
print("最優(yōu)模型的參數(shù) max_depth 是: {} " .format(optimal.get_params()["max_depth"]))

predicted_value = optimal.predict(features_test)
r2 = performance_metric(prices_test, predicted_value)

# 每次交叉驗(yàn)證得到的數(shù)據(jù)集不同,因此每次運(yùn)行的結(jié)果也不一定相同
print("最優(yōu)模型在測(cè)試數(shù)據(jù)上 R^2 分?jǐn)?shù) {: .2f}" .format(r2))


可以看到,最理想模型的參數(shù)max_depth是 10,此時(shí)達(dá)到了偏差與方差的最優(yōu)平衡。模型在測(cè)試數(shù)據(jù)上的 R2 分?jǐn)?shù)為:0.77,即二手房房?jī)r(jià)預(yù)測(cè)的準(zhǔn)確率。

以上,完成了一個(gè)項(xiàng)目的簡(jiǎn)單分析。可以改進(jìn)的方向有以下 3 個(gè):

爬取數(shù)據(jù)的準(zhǔn)確性和完整性

特征的進(jìn)一步提取

不同模型的融合與實(shí)驗(yàn),以達(dá)到最優(yōu)效果


不足之處,歡迎指正

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/42030.html

相關(guān)文章

  • 入門Python數(shù)據(jù)分析最好的實(shí)戰(zhàn)項(xiàng)目(一)

    摘要:入門數(shù)據(jù)分析最好的實(shí)戰(zhàn)項(xiàng)目二數(shù)據(jù)初探首先導(dǎo)入要使用的科學(xué)計(jì)算包可視化以及機(jī)器學(xué)習(xí)包。檢查缺失值情況發(fā)現(xiàn)了數(shù)據(jù)集一共有條數(shù)據(jù),其中特征有明顯的缺失值。 作者:xiaoyu 微信公眾號(hào):Python數(shù)據(jù)科學(xué) 知乎:python數(shù)據(jù)分析師 目的:本篇給大家介紹一個(gè)數(shù)據(jù)分析的初級(jí)項(xiàng)目,目的是通過(guò)項(xiàng)目了解如何使用Python進(jìn)行簡(jiǎn)單的數(shù)據(jù)分析。數(shù)據(jù)源:博主通過(guò)爬蟲采集的鏈家全網(wǎng)北京二手房數(shù)據(jù)(...

    gitmilk 評(píng)論0 收藏0
  • 入門Python數(shù)據(jù)分析最好的實(shí)戰(zhàn)項(xiàng)目(一)

    摘要:入門數(shù)據(jù)分析最好的實(shí)戰(zhàn)項(xiàng)目二數(shù)據(jù)初探首先導(dǎo)入要使用的科學(xué)計(jì)算包可視化以及機(jī)器學(xué)習(xí)包。檢查缺失值情況發(fā)現(xiàn)了數(shù)據(jù)集一共有條數(shù)據(jù),其中特征有明顯的缺失值。 作者:xiaoyu 微信公眾號(hào):Python數(shù)據(jù)科學(xué) 知乎:python數(shù)據(jù)分析師 目的:本篇給大家介紹一個(gè)數(shù)據(jù)分析的初級(jí)項(xiàng)目,目的是通過(guò)項(xiàng)目了解如何使用Python進(jìn)行簡(jiǎn)單的數(shù)據(jù)分析。數(shù)據(jù)源:博主通過(guò)爬蟲采集的鏈家全網(wǎng)北京二手房數(shù)據(jù)(...

    Cruise_Chan 評(píng)論0 收藏0
  • 入門Python數(shù)據(jù)分析最好的實(shí)戰(zhàn)項(xiàng)目(二)

    摘要:作者微信公眾號(hào)數(shù)據(jù)科學(xué)知乎數(shù)據(jù)分析師上一篇和大家分享了一個(gè)入門數(shù)據(jù)分析的一個(gè)小項(xiàng)目北京二手房房?jī)r(jià)分析,鏈接如下入門數(shù)據(jù)分析最好的實(shí)戰(zhàn)項(xiàng)目一文章在發(fā)布之后看到有不少感興趣的朋友給我點(diǎn)了贊,感謝大家的支持了。 作者:xiaoyu 微信公眾號(hào):Python數(shù)據(jù)科學(xué) 知乎:python數(shù)據(jù)分析師 上一篇和大家分享了一個(gè)入門數(shù)據(jù)分析的一個(gè)小項(xiàng)目 北京二手房房?jī)r(jià)分析,鏈接如下: 入門Python...

    Flands 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<