您好,登錄后才能下訂單哦!
本篇內容主要講解“python怎么把幾個圖表一起在同一張圖上顯示”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python怎么把幾個圖表一起在同一張圖上顯示”吧!
import matplotlib.pyplot as plt
# 設置figure_size尺寸
plt.rcParams['figure.figsize'] = (8.0, 6.0)
fig = plt.figure()
# 設定圖表顏色
fig.set(alpha=0.2)
# 第一張小圖
plt.subplot2grid((2,3),(0,0))
data_train['Survived'].value_counts().plot(kind='bar')
plt.ylabel(u"人數")
plt.title(u"船員獲救情況 (1為獲救)")
# 第二張小圖
plt.subplot2grid((2,3),(0,1))
data_train['Pclass'].value_counts().plot(kind="bar")
plt.ylabel(u"人數")
plt.title(u"乘客等級分布")
# 第三張小圖
plt.subplot2grid((2,3),(0,2))
plt.scatter(data_train['Survived'], data_train['Age'])
plt.ylabel(u"年齡")
plt.grid(b=True, which='major', axis='y')
plt.title(u"按年齡看獲救分布 (1為獲救)")
# 第四張小圖,分布圖
plt.subplot2grid((2,3),(1,0), colspan=2)
data_train.Age[data_train.Pclass == 1].plot(kind='kde')
data_train.Age[data_train.Pclass == 2].plot(kind='kde')
data_train.Age[data_train.Pclass == 3].plot(kind='kde')
plt.xlabel(u"年齡")
plt.ylabel(u"密度")
plt.title(u"各等級的乘客年齡分布")
plt.legend((u'頭等艙', u'2等艙',u'3等艙'),loc='best')
# 第五張小圖
plt.subplot2grid((2,3),(1,2))
data_train.Embarked.value_counts().plot(kind='bar')
plt.title(u"各登船口岸上船人數")
plt.ylabel(u"人數")
plt.show()
我們從上面的可視化操作結果可以看出,其實可以看出一些規律,比如說生還的幾率比死亡的要大,然后獲救的人在年齡上區別不大,然后就是有錢人(坐頭等艙的)的年齡會偏大等。
關于這種衍生變量的方式,理論其實大家應該很早也都聽說過了,但是如何在Python里實現,也就是今天在這里分享給大家,其實也很簡單,就是調用sklearn
的PolynomialFeatures
方法,具體大家可以看看下面的demo。
這里使用一個人體加速度數據集,也就是記錄一個人在做不同動作時候,在不同方向上的加速度,分別有3個方向,命名為x、y、z。
# 擴展數值特征
from sklearn.preprocessing import PolynomialFeatures
x = df[['x','y','z']]
y = df['activity']
poly = PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)
x_poly = poly.fit_transform(x)
pd.DataFrame(x_poly, columns=poly.get_feature_names()).head()
就這樣子簡單的去調用,就可以生成了很多的新變量了。
今天我們用的是一個新的數據集,也是在kaggle上的一個比賽,大家可以先去下載一下:
import pandas as pd
import numpy as np
# Plots
import seaborn as sns
import matplotlib.pyplot as plt
# 讀取數據集
train = pd.read_csv('./data/house-prices-advanced-regression-techniques/train.csv')
train.head()
首先這個是一個價格預測的題目,在開始前我們需要看看分布情況,可以調用以下的方法來進行繪制:
sns.set_style("white")
sns.set_color_codes(palette='deep')
f, ax = plt.subplots(figsize=(8, 7))
#Check the new distribution
sns.distplot(train['SalePrice'], color="b");
ax.xaxis.grid(False)
ax.set(ylabel="Frequency")
ax.set(xlabel="SalePrice")
ax.set(title="SalePrice distribution")
sns.despine(trim=True, left=True)
plt.show()
我們從結果可以看出,銷售價格是右偏,而大多數機器學習模型都不能很好地處理非正態分布數據,所以我們可以應用log(1+x)轉換來進行修正。那么具體我們可以怎么用Python代碼實現呢?
# log(1+x) 轉換
train["SalePrice_log"] = np.log1p(train["SalePrice"])
sns.set_style("white")
sns.set_color_codes(palette='deep')
f, ax = plt.subplots(figsize=(8, 7))
sns.distplot(train['SalePrice_log'] , fit=norm, color="b");
# 得到正態分布的參數
(mu, sigma) = norm.fit(train['SalePrice_log'])
plt.legend(['Normal dist. ($\mu=$ {:.2f} and $\sigma=$ {:.2f} )'.format(mu, sigma)],
loc='best')
ax.xaxis.grid(False)
ax.set(ylabel="Frequency")
ax.set(xlabel="SalePrice")
ax.set(title="SalePrice distribution")
sns.despine(trim=True, left=True)
plt.show()
到此,相信大家對“python怎么把幾個圖表一起在同一張圖上顯示”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。