画图连接
import matplotlib.pyplot as plt
import numpy as np
df.plot(kind=’bar’)
直角坐标系图由数据点标记时传(x,y) :线性,散点
直角坐标系图传(x.data):柱状
_
#导入画图包mat-matlab软件的一部分库
import matplotlib.pyplot as plt
# 换字体
plt.rcParams['font.sans-serif']=['SimHei'] #plt是matplotlip包的缩写,他修改了参数
# kind是图表类型
a.season.value_counts().plot(kind='bar')#python的画图函数(plot)
#对季度的值的个数进行统计绘图
a.season.value_counts().plot(kind='pie')
plt.rcParams['axes.unicode_minus']=False #解决负号不出现的问题
plt.show()# 图显示
先定义一个画布做合适的画布大小:
fig,ax = plt.subplots(1,1,figsize=(25,10))
1.线性图 =
plt.plot([x],y,[fmt],,data=None,*kwargs)
ftm- 线型,颜色,标记形状 linestyle,marker color
lw=0~1 线宽
label=’ ‘ 图例
x=np.linspace(1,10,100)
plt.plot(x,np.sin(x*2),lw=0.5,color="b",linestyle='solid',label='')
plt.legend() 打印图例
plt.axis('equal'|[x.min,x.max,y.min,y.max])
plt.show() 显示图
plt.xlim(n,n)x轴的下限和上限
plt.ylim(n)
plt.xlabel('')
plt.ylabel('')
plt.title()
2.散点图[scatter]:看俩个变量中间的关系
plt.scatter(x,y)
当图必须由坐标点(x,y)表示.
s=1000,c=’red’
x=2*np.random.rand(100,1)
y=4+3*x+np.random.randn(100,1)
# 传x,y轴
# c是标记点颜色,edgecolors是外层膜的颜色.lw是外层膜的厚度,s标记点大小,alpha透明度
plt.scatter(x,y,alpha=0.21,s=1000,c='red',linewidths=10,edgecolors='blue')
3.柱状图 [hist]: 数据分布(正态随机胡不影响,幂律相关有反馈).
#柱状图看数据分布
np.random.seed(2)
data=np.random.randn(10000)
# 直接传数据,bins是条个数
plt.hist(data,bins=1000,alpha=0.4)
plt.show()
4.条形图 计数
#计数
data=[5,20,15,25,10]
# 第二个参数是高度,
plt.bar(['a','b','c','d','e'],data)
plt.show()
5.堆积条形图
import numpy as np
# label='b'标签
size=5
x=np.arange(size)
a=np.random.random(size)
b=np.random.random(size)
plt.bar(x,a,label='a')
plt.bar(x,b,bottom=a,label='b')
plt.legend()
plt.show()
5.子图
plt.subplot(3,3,1) : 3行3列第一个
plt.figure(figsize=(10,10)),画布 长高
# 第三种子图创建
fig,ax=plt.subplots(3,3,sharex='col',sharey='row')#返回画布和子图
第二种
#第二种方法创建一个画布
fig=plt.figure()
#调整子图间的距离
fig.subplots_adjust(hspace=0.4,wspace=0.4)
for i in range(1,7):
#添加一个子图
ax=fig.add_subplot(2,3,i) #几行几列第几个
ax.text(0.5,0.5,str((2,3,i)),fontsize=12,ha='center')
第三种
for i in range(1,7):
# 绘制一个子图
plt.subplot(2,3,i) # 几行几列第几个
# 填充文本
plt.text(0.5,0.5,str((2,3,i)),fontsize=12,ha='center')
plt.line(x,y,fmt,label) x,y plt.scatter(x,y,s,c,) plt.hist(x,data,c,bins) plt.bar(x,data) plt.pie() plt.xlable() plt.axis([]) plt.title() plt.rcparams(font.sans.san)=[si]
plt.line(x,y,fmt,label) x,y
plt.scatter(x,y,s,c,)
plt.hist(x,data,c,bins)
plt.bar(x,data)
plt.pie()
plt.xlable()
plt.axis([])
plt.title()
plt.rcparams(font.sans.san)=[si]
kdeplot(核密度估计图) & distplot
Kernel Density Estimation
Python 探索性数据分析(Exploratory Data Analysis,EDA)
导包
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
plt.rcParams['axes.unicode_minus']=False
plt.rcParams['font.sans-serif']=['SimHei']
分布图:
# 分布图->柱状图+核密度图
sns.distplot(data['x'])
sns.distplot(data['y'])
data1=np.random.randn(1,100)
data2=np.random.rand(1,100)
sns.distplot(data1)
sns.distplot(data2)
双密度:
# 圆圈是等高线密度在一层圈上密度一致
sns.kdeplot(data)
俩变量联合分布图: 数值型数据
# 外侧俩个正态分布图代表里边数据分布的密度
sns.jointplot('x','y',data,kind='kde') 雷达图,颜色深浅
sns.jointplot('x','y',data)
sns.jointplot('x','y',data,kind='hex') #six六边型
sns.jointplot('x','y',data,kind='reg')# regression回归线,
多变量图# 鸢尾花数据
# 鸢尾花数据
iris=sns.load_dataset('iris')
iris.head()
# 对图PairGrid
sns.pairplot(iris,hue='species',height=3)
# 自己与自己比较,自己的频率分布
sns.pairplot(iris,hue='species',height=3,kind='kde')
箱线图
sns.boxplot(x='species',y='sepal_length',data=iris)
小提琴图:
# 中间是箱子,俩侧是分布图
sns.violinplot(x='species',y='sepal_length',data=iris)
sns.violinplot(x='sepal_length',y='sepal_width',data=iris)
格子图
tips=sns.load_dataset('tips')
tips.head()
grid=sns.FacetGrid(tips,row='sex',col='time',margin_titles=True)
grid.map(plt.hist,'tip',bins=np.linspace(0,70,15))
定义一个函数,功能为绘制每个类别变量(函数参数中的feature) barplot
定义函数:(列名,数据:train,test,画布大小,保存图片,saveimg=False)
值计数
多个子图:fig,ax=plt.subplots(2,1);
画图1:sns.barplot(x(值计数的索引),y,palette='Set2'风格)
旋转角度
画图2
旋转角度
位置:
ax[0].set_title()
# feature:查看的列名
def lookup_feature(feature, data_train = train, data_test = test, figsize=(8,5),saveimg = False):
# 提取特征,值计数
train_feat = data_train[feature].value_counts()
test_feat = data_test[feature].value_counts()
# 创建画布和子图
fig_feature,ax=plt.subplots(2,1,sharex=True,sharey=True,figsize=figsize)
# 画图,分别绘制训练集和测试集图
sns.barplot(x=train_feat.index,y=train_feat.values,ax=ax[0],palette='Set2')
# 训练集设置标签旋转角度
plt.xticks(rotation=60)
# 测试集Blues_d Dark2
sns.barplot(x=test_feat.index,y=test_feat.values,ax=ax[1],palette='Paired')
plt.xticks(rotation=45)
# 设置格式
ax[0].set_title(feature + ' of training dataset')
ax[1].set_title(feature + ' of test dataset')
ax[0].set_ylabel('Counts')
ax[1].set_ylabel('Counts')
#自动调整图像空隙
plt.tight_layout()
# 保存图片
if saveimg == True:
# 图片名称
figname = feature + ".png"
#判断images目录里是否不存在os操作系统 operating system
if not os.path.exists('./images'):
# 如果不存在,创建一个目录
os.makedirs('./images')
# 保存图像 dpi
fig_feature.savefig('./images/'+figname, dpi = 65)
因子图:sns.factorplot/sns.catplot(‘Pclass’,’Survived’,data=data,hue=’Sex’,kind=’point’)
# 船舱等级与幸存者的关系,hue
sns.factorplot('Pclass','Survived',data=data,hue='Sex')
plt.show()
计数图: countplot()
交叉表:crosstab
# .style.background_gradient(cmap='summer_r') 更改风格
pd.crosstab(data.Pclass,data.Survived,margins=True).style.background_gradient(cmap='summer_r')
pd.crosstab(data.Pclass,data.Survived,margins=True).style.background_gradient(cmap=’summer_r’)