底部附有图表的实现代码
可视化视图有哪些?
按照数据之间的关系,可以把可视化视图划分为4类:分别是比较,联系,构成和分布,具有以下特点:
- 比较:比较数据间各类别的关系,或者是它们随着时间的变化趋势,比如折线图
- 联系:查看两个或者两个以上变量之间的关系,比如散点图
- 构成:每个部分占整体的百分比,或者是随着时间的百分比变化,比如饼图
- 分布:关注单个变量,或者多个变量的分布情况,比如直方图
散点图
散点图的英?叫做 scatter plot,它将两个变量的值显示在?维坐标中, ?常适合展示两个变量之间的关系。
import matplotlib.pyplot as plt
折线图
折线图可以?来表示数据随着时间变化的趋势。
直方图
直?图是?较常?的视图,它是把横坐标等分成了?定数量的?区间,这个?区间也叫“箱?”,然后在每个“箱?”内?矩形条(bars)展示该箱?的箱?数(也就是y值),这样就完成了对数据集的直?图分布的可视化。
条形图
如果说通过直?图可以看到变量的数值分布,那么条形图可以帮我们查看类别的特征。在条形图中,?条形的?度表示类别的频数,宽度表示类别。
箱线图
箱线图,?称盒式图,它是在1977年提出的,由五个数值点组成:最?值(max)、最?值(min)、中位数(median)和上下四分位数(Q3,Q1)。它可以帮我们分析出数据的差异性、离散程度和异常值等。
饼图
饼图是常?的统计学模块,可以显示每个部分??与总和之间的?例。
热力图
热?图,英?叫heat map,是?种矩阵表示?法,其中矩阵中的元素值?颜?来代表,不同的颜?代表不同??的值。通过颜?就能直观地知道某个位置上数值的??。另外你也可以将这个位置上的颜?,与数据集中的其他位置颜?进??较。
蜘蛛图
蜘蛛图是?种显示?对多关系的?法。在蜘蛛图中,?个变量相对于另?个变量的显著性是清晰可?的。
二元变量分布
在Seaborn?,使??元变量分布是?常?便的,直接使?sns.jointplot(x,y,data=None,kind)函数即可。其中?kind表示不同的视图类型:“kind=‘scatter’”代表散点图,“kind=‘kde’”代表核密度图,“kind=‘hex’”代表Hexbin图,它代表的是直?图的?维模拟
成对关系
如果想要探索数据集中的多个成对双变量的分布,可以直接采?sns.pairplot()函数。它会同时展示出DataFrame中每对变量的关系,另外在对?线上,你能看到每个变量?身作为单变量的分布情况。它可以说是探索性分析中的常?函数,可以很快帮我们理解变量对之间的关系。
pairplot函数的使?,就像在DataFrame中使?describe()函数?样?便,是数据探索中的常?函数。
使?Seaborn中?带的iris数据集,这个数据集也叫鸢尾花数据集。鸢尾花可以分成Setosa、Versicolour和Virginica三个品种,在这个数据集中,针对每?个品种,都有50个数据,每个数据中包括了4个属性,分别是花萼?度、花萼宽度、花瓣?度和花瓣宽度。通过这些数据,需要你来预测鸢尾花卉属于三个品种中的哪?种。
?Seaborn中的pairplot函数来对数据集中的多个双变量的关系进?探索,如下图所示。从图上你能看出,?共有sepal_length、sepal_width、petal_length和petal_width4个变量,它们分别是花萼?度、花萼宽度、花瓣?度和花瓣宽度。
下?这张图相当于这4个变量两两之间的关系。?如矩阵中的第?张图代表的就是花萼?度?身的分布图,它右侧的这张图代表的是花萼?度与花萼宽度这两个变量之间的关系。
总结
Seaborn是基于Matplotlib更加?级的可视化库。
通过对数据之间的比较,联系,构成和分布,能够分析出数据之间的一些基本联系
代码链接
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
def use_plt_scatter():
s = np.random.random(size=(2, 100))
plt.scatter(s[0], s[1], marker="o")
plt.show()
def use_seaborn_scatter():
data = np.random.random(size=(2, 1000))
dataframe = pd.DataFrame({'x': data[0], 'y': data[1]})
sns.jointplot(x='x', y='y', data=dataframe, kind='scatter')
plt.show()
def use_plt_zhexian():
x = np.arange(2000, 2020, step=1, dtype=np.int32)
y = np.random.randint(20, 100, size=(20,))
plt.plot(x, y)
plt.show()
print(len(y))
def zhexian_use_seaborn():
x = np.arange(2000, 2020, step=1, dtype=np.int32)
y = np.random.randint(20, 100, size=(20,))
dataframe = pd.DataFrame({"x": x, "y": y})
sns.lineplot(x="x", y="y", data=dataframe)
plt.show()
def boxchart_use_matplot():
data = np.random.normal(size=(20,4))
labels = ['A','B','C','D']
plt.boxplot(data,labels=labels)
plt.show()
def boxchart_use_seaborn():
data = np.random.normal(size=(20,4))
labels = ['A','B','C','D']
df = pd.DataFrame(data,columns=labels)
sns.boxplot(data=df)
plt.show()
def histogram_chart():
data = np.random.randn(100)
series = pd.Series(data)
plt.hist(series)
plt.show()
sns.displot(series,kde=False)
plt.show()
sns.displot(series,kde=True)
plt.show()
def barchart_draw():
x = ['cat1','cat2','cat3','cat4','cat5']
y = [10,6,7,3,12]
plt.bar(x,y)
plt.show()
sns.barplot(x,y)
plt.show()
def piechart_draw():
nums = [34,12,45,53,12]
labels = ['A',"B",'C','D','E']
plt.pie(x=nums,labels=labels)
plt.show()
def heatmap_draw():
flights = sns.load_dataset("flights")
data = flights.pivot('year','month','passenger')
sns.heatmap(data)
plt.show()
def radar_chart_draw():
labels = np.array([u'推进','kda',u'生存',u'团战',u'发育',u'输出'])
stats = [90,85,82,78,88,93]
angles = np.linspace(0,2*np.pi,len(labels),endpoint=False)
stats = np.concatenate((stats,[stats[0]]))
angles = np.concatenate((angles,[angles[0]]))
figure = plt.figure()
ax = figure.add_subplot(111,polar=True)
ax.plot(angles,stats,'o-',linewidth=2)
ax.fill(angles,stats,alpha=0.25)
plt.show()
def joint_plot_draw():
sns.set()
tips = sns.load_dataset("tips")
print(tips.head(10))
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()
def pairplot_draw():
iris = sns.load_dataset('iris')
sns.pairplot(iris)
plt.show()
def car_crash_chart():
data = sns.load_dataset('car_crashes')
print(data.head(10))
sns.pairplot(data)
sns.jointplot(x='total',y='speeding',data=data,kind='scatter')
sns.jointplot(x='total',y='speeding',data=data,kind='kde')
sns.jointplot(x='total',y='speeding',data=data,kind='hex')
plt.show()
if __name__ == '__main__':
car_crash_chart()
参考链接
1.数据分析实战45讲 2.你从《数据分析实战45讲》学到了什么,可以分享一下你学习数据分析的心得或者学习资料?
|