散點圖
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 數(shù)據準備
N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x, y,marker='x')??# 用 Matplotlib 畫散點圖
plt.show()
df = pd.DataFrame({'x': x, 'y': y})??# 用 Seaborn 畫散點圖,會顯示數(shù)據的分布情況
sns.jointplot(x="x", y="y", data=df, kind='scatter');
plt.show()
折線圖
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
x = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
y = [5, 3, 6, 20, 17, 16, 19, 30, 32, 35]
# 使用 Matplotlib 畫折線圖
plt.plot(x, y)
plt.show()
# 使用 Seaborn 畫折線圖
df = pd.DataFrame({'x': x, 'y': y})
sns.lineplot(x="x", y="y", data=df)
plt.show()
直方圖
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 數(shù)據準備
a = np.random.randn(100)
s = pd.Series(a)
# 用 Matplotlib 畫直方圖,?plt.hist(x, bins=10) 函數(shù),其中參數(shù) x 是一維數(shù)組,bins 代表直方圖中的箱子數(shù)量,默認是 10旺垒。
plt.hist(s)
plt.show()
# 用 Seaborn 畫直方圖,使用 sns.distplot(x, bins=10, kde=True) 函數(shù)肋联。其中參數(shù) x 是一維數(shù)組故爵,bins 代表直方圖中的箱子數(shù)量腰懂,kde 代表顯示核密度估計梗逮,默認是 True,我們也可以把 kde 設置為 False绣溜,不進行顯示慷彤。核密度估計是通過核函數(shù)幫我們來估計概率密度的方法。
sns.distplot(s, kde=False)
plt.show()
sns.distplot(s, kde=True)
plt.show()
條形圖
import matplotlib.pyplot as plt
import seaborn as sns
# 數(shù)據準備
x = ['Cat1', 'Cat2', 'Cat3', 'Cat4', 'Cat5']
y = [5, 4, 8, 12, 7]
# 用 Matplotlib 畫條形圖
plt.bar(x, y)
plt.show()
# 用 Seaborn 畫條形圖
sns.barplot(x, y)
plt.show()
箱線圖(
盒式圖
)
由五個數(shù)值點組成:最大值 (max)怖喻、最小值 (min)底哗、中位數(shù) (median) 和上下四分位數(shù) (Q3, Q1)。它可以幫我們分析出數(shù)據的差異性锚沸、離散程度和異常值等跋选。
# 數(shù)據準備
# 生成 0-1 之間的 10*4 維度數(shù)據
data=np.random.normal(size=(10,4))
lables = ['A','B','C','D']
# 用 Matplotlib 畫箱線圖,使用 plt.boxplot(x, labels=None) 函數(shù)咒吐,其中參數(shù) x 代表要繪制箱線圖的數(shù)據野建,labels 是缺省值,可以為箱線圖添加標簽恬叹。
plt.boxplot(data,labels=lables)
plt.show()
# 用 Seaborn 畫箱線圖候生,使用 sns.boxplot(x=None, y=None, data=None) 函數(shù)。其中參數(shù) data 為 DataFrame 類型绽昼,x唯鸭、y 是 data 中的變量。
df = pd.DataFrame(data, columns=lables)
sns.boxplot(data=df)
plt.show()
餅圖
import matplotlib.pyplot as pl
# 數(shù)據準備
nums = [25, 37, 33, 37, 6]
labels = ['High-school','Bachelor','Master','Ph.d', 'Others']
# 用 Matplotlib 畫餅圖硅确,們使用 plt.pie(x, labels=None) 函數(shù)目溉,其中參數(shù) x 代表要繪制餅圖的數(shù)據,labels 是缺省值菱农,可以為餅圖添加標簽缭付。
plt.pie(x = nums, labels=labels)
plt.show()
熱力圖
import matplotlib.pyplot as plt
import seaborn as sns
# 數(shù)據準備
flights = sns.load_dataset("flights")
data=flights.pivot('year','month','passengers')
# 用 Seaborn 畫熱力圖
sns.heatmap(data)
plt.show()
蜘蛛圖
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.font_manager import FontProperties
labels=np.array([u" 推進 ","KDA",u" 生存 ",u" 團戰(zhàn) ",u" 發(fā)育 ",u" 輸出 "])
stats=[83, 61, 95, 67, 76, 88]
# 畫圖數(shù)據準備,角度循未、狀態(tài)值
angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)
stats=np.concatenate((stats,[stats[0]]))
angles=np.concatenate((angles,[angles[0]]))
# 用 Matplotlib 畫蜘蛛圖
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)
# 設置中文字體
font = FontProperties(fname=r"C:\Windows\Fonts\simhei.ttf", size=14)
ax.set_thetagrids(angles * 180/np.pi, labels, FontProperties=font)
plt.show()
二元變量分布?
import matplotlib.pyplot as pl
import seaborn as sns
tips = sns.load_dataset("tips")
print(tips.head(10))
# 用 Seaborn 畫二元變量分布圖(散點圖陷猫,核密度圖,Hexbin 圖) 使用 sns.jointplot(x, y, data=None, kind) 函數(shù)即可的妖。其中用 kind 表示不同的視圖類型:“kind=‘scatter’”代表散點圖绣檬,“kind=‘kde’”代表核密度圖,“kind=‘hex’ ”代表 Hexbin 圖嫂粟,它代表的是直方圖的二維模擬娇未。
sns.jointplot(x="total_bill", y="tip", data=tips, kind='scatter')
sns.jointplot(x="total_bill", y="tip", data=tips, kind='kde')
sns.jointplot(x="total_bill", y="tip", data=tips, kind='hex')
plt.show()
成對關系
import matplotlib.pyplot as pl
import seaborn as sns
iris = sns.load_dataset('iris')? #鳶尾花數(shù)據集。鳶尾花可以分成 Setosa星虹、Versicolour 和 Virginica 三個品種零抬,在這個數(shù)據集中镊讼,針對每一個品種,都有 50 個數(shù)據平夜,每個數(shù)據中包括了 4 個屬性狠毯,分別是花萼長度、花萼寬度褥芒、花瓣長度和花瓣寬度。通過這些數(shù)據嫡良,需要你來預測鳶尾花卉屬于三個品種中的哪一種锰扶。
# 用 Seaborn 畫成對關系
sns.pairplot(iris)
plt.show()