一 散点图
# python可视化操作
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 数据准备
N=1000
x = np.random.randn(N)
y = np.random.randn(N)
# 用matplotlib画散点图
plt.scatter(x,y,marker="x")
# 用seaborn画散点图
data = {
'x':x,
"y":y
}
df = pd.DataFrame(data)
sns.jointplot(x='x',y='y',data=df,kind='scatter')
二 折线图
# python可视化折线图
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)
# seaborn
data= {
'x':x,
'y':y
}
df = pd.DataFrame(data)
sns.lineplot(x='x',y='y',data=df)
三 直方图
# matplotlib直方图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 数据准备
a = np.random.randn(100)
s = pd.Series(a)
# matplotlib
plt.hist(s)
# seaborn
sns.distplot(s,kde=False)
sns.distplot(s,kde=True)
四 条形图
# 条形图
import matplotlib.pyplot as plt
import seaborn as sns
# 数据准备
x = ['cat1','cat2','cat3','cat4','cat5']
y= [5,4,8,12,7]
# matplotlib
# seaborn
sns.barplot(x,y)
五 箱线图
# 箱线图
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# 数据准备
# 生成0-1之间的10*4维度数据
data = np.random.normal(size=(10,4))
lables = ['A','B','C','D']
# matplotlib
plt.boxplot(data,labels = lables)
# seaborn
df = pd.DataFrame(data,columns = lables)
sns.boxplot(data=df)
六 饼图
# 饼图
import matplotlib.pyplot as plt
# 数据准备
nums = [25,37,33,37,6]
labels = ['high-school','bachelor','matser','ph.d','others']
#matplotlib
plt.pie(x=nums,labels = labels)
七 热力图
# 热力图
import matplotlib.pyplot as plt
import seaborn as sns
# 数据准备
flights = sns.load_dataset('flights')
data= flights.pivot('year','month','passengers')
# seaborn
sns.heatmap(data)
八 蜘蛛图,雷达图
# 蜘蛛图,雷达图
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.font_manager import FontProperties
#数据准备
labels = np.array([u'推进',u'KDA',u'生存',u'团战',u'发育',u'输出'])
stats = [83,61,95,67,76,88]
# 画图数据准备,角度,状态值
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="/System/Library/Fonts/STHeiti Medium.ttc",size=14)
# ax.set_thetagrids(angles*180/np.pi,labels,FontProperties=font)
matplotlob不太支持中文,需要安装中文语言类别
九 二元变量分布图
# 二元变量分布,散点图
import matplotlib.pyplot as plt
import seaborn as sns
# 数据准备
tips = sns.load_dataset('tips')
print(tips.head(10))
# 用seaborn 画二元变量分布图(散点图,,核密度图,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')
1 散点图
2 核密度图
3 binhexbin图
十 成对关系
# 成对关系
import matplotlib.pyplot as plt
import seaborn as sns
# 数据准备
iris = sns.load_dataset('iris')
# print(iris)
# 用seaborn画成对关系
sns.pairplot(iris)
课后练习及总结
#数据分析可视化库的课后练习题
# 1.seaborn的car_crashes数据集,进行成对关系的探索
# 2.seaborn画二元变量分布图
# 1.seaborn的car_crashes国外车祸数据集的成对关系
import matplotlib.pyplot as plt
import seaborn as sns
# 数据准备
cars= sns.load_dataset('car_crashes')
print(cars.head(10))
# seaborn画成对关系
sns.pairplot(cars)
# 2.seaborn画二元变量分布图
# 有cars数据集可以看出酒精和速度有类似线性关系,因此做酒精和速度二元变量的分布图
sns.jointplot(x='alcohol',y='speeding',data=cars,kind='scatter')
sns.jointplot(x='alcohol',y='speeding',data=cars,kind='kde')
sns.jointplot(x='alcohol',y='speeding',data=cars,kind='hex')
# 本节知识要点
# 1.变量关系分类:比较,联系,构成,分布.
# 比较:比较数据间各类别的关系,或者是他们随着时间的变化趋势,比如折线图
# 联系:查看两个或两个以上变量之间的关系,比如散点图
# 构成:每个部分占整体的百分比,或者是随着时间的百分比变化,比如饼图
# 分布:关注单个变量,或者多个变量的分布情况,比如直方图
# 2.十种常见视图的概念理解
# 1.散点图scatter,展示两个变量之间的关系
# 2.折线图plot 两个变量之间的变化趋势,例如数据随着时间变化的趋势
# 3.直方图hist,对数据集的直方分布,变量的数值分布
# 4.条形图bar,查看类别的特征,长度标识类别的频数,宽度标识类别
# 5.箱线图boxplot 又称盒式图,有五个熟知点组成:最大值max,最小值min,中位数median和上下四分位数(Q3,Q1),
# 可以分析出数据的差异性,离散程度和异常值。
# 6.饼图pie 是常用的统计学模块,可以显示每个部分大小与总和之间的比例。
# 7.热力图 heatmap是一种矩阵表示方法,矩阵中的元素值用颜色来代表,不同颜色代表不同大小的值。
# 是一种非常直观的多元变量分析方法。
# 8.蜘蛛图,雷达图 显示一对多关系,一个变量相对于另一个变量的显著性是清晰可见的。
# 9.二元变量分布jointplot,散点图scatter,核密度图kde,hexbin图hex。查看两个变量之间的关系。
# 10.成对关系pairplot,数据集中的多个成对双变量的分布。类似于dataframe中的describe()函数。