画图连接
import matplotlib.pyplot as plt
import numpy as np
df.plot(kind=’bar’)

直角坐标系图由数据点标记时传(x,y) :线性,散点
直角坐标系图传(x.data):柱状
_

  1. #导入画图包mat-matlab软件的一部分库
  2. import matplotlib.pyplot as plt
  3. # 换字体
  4. plt.rcParams['font.sans-serif']=['SimHei'] #plt是matplotlip包的缩写,他修改了参数
  5. # kind是图表类型
  6. a.season.value_counts().plot(kind='bar')#python的画图函数(plot)
  7. #对季度的值的个数进行统计绘图
  8. a.season.value_counts().plot(kind='pie')
  9. plt.rcParams['axes.unicode_minus']=False #解决负号不出现的问题
  10. 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=’ ‘ 图例

  1. x=np.linspace(1,10,100)
  2. plt.plot(x,np.sin(x*2),lw=0.5,color="b",linestyle='solid',label='')
  3. plt.legend() 打印图例
  4. plt.axis('equal'|[x.min,x.max,y.min,y.max])
  5. plt.show() 显示图
  6. plt.xlim(n,n)x轴的下限和上限
  7. plt.ylim(n)
  8. plt.xlabel('')
  9. plt.ylabel('')
  10. plt.title()

2.散点图[scatter]:看俩个变量中间的关系

plt.scatter(x,y)
当图必须由坐标点(x,y)表示.

s=1000,c=’red’

  1. x=2*np.random.rand(100,1)
  2. y=4+3*x+np.random.randn(100,1)
  3. # 传x,y轴
  4. # c是标记点颜色,edgecolors是外层膜的颜色.lw是外层膜的厚度,s标记点大小,alpha透明度
  5. plt.scatter(x,y,alpha=0.21,s=1000,c='red',linewidths=10,edgecolors='blue')

3.柱状图 [hist]: 数据分布(正态随机胡不影响,幂律相关有反馈).

  1. #柱状图看数据分布
  2. np.random.seed(2)
  3. data=np.random.randn(10000)
  4. # 直接传数据,bins是条个数
  5. plt.hist(data,bins=1000,alpha=0.4)
  6. plt.show()

4.条形图 计数

  1. #计数
  2. data=[5,20,15,25,10]
  3. # 第二个参数是高度,
  4. plt.bar(['a','b','c','d','e'],data)
  5. plt.show()

5.堆积条形图

  1. import numpy as np
  2. # label='b'标签
  3. size=5
  4. x=np.arange(size)
  5. a=np.random.random(size)
  6. b=np.random.random(size)
  7. plt.bar(x,a,label='a')
  8. plt.bar(x,b,bottom=a,label='b')
  9. plt.legend()
  10. plt.show()

5.子图

plt.subplot(3,3,1) : 3行3列第一个
plt.figure(figsize=(10,10)),画布 长高

  1. # 第三种子图创建
  2. fig,ax=plt.subplots(3,3,sharex='col',sharey='row')#返回画布和子图

第二种

  1. #第二种方法创建一个画布
  2. fig=plt.figure()
  3. #调整子图间的距离
  4. fig.subplots_adjust(hspace=0.4,wspace=0.4)
  5. for i in range(1,7):
  6. #添加一个子图
  7. ax=fig.add_subplot(2,3,i) #几行几列第几个
  8. ax.text(0.5,0.5,str((2,3,i)),fontsize=12,ha='center')

第三种

  1. for i in range(1,7):
  2. # 绘制一个子图
  3. plt.subplot(2,3,i) # 几行几列第几个
  4. # 填充文本
  5. 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

用于eda

Python 探索性数据分析(Exploratory Data Analysis,EDA)

导包

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import pandas as pd
  4. import seaborn as sns
  5. plt.rcParams['axes.unicode_minus']=False
  6. plt.rcParams['font.sans-serif']=['SimHei']

分布图:

  1. # 分布图->柱状图+核密度图
  2. sns.distplot(data['x'])
  3. sns.distplot(data['y'])
  4. data1=np.random.randn(1,100)
  5. data2=np.random.rand(1,100)
  6. sns.distplot(data1)
  7. sns.distplot(data2)

双密度:

  1. # 圆圈是等高线密度在一层圈上密度一致
  2. sns.kdeplot(data)

俩变量联合分布图: 数值型数据

  1. # 外侧俩个正态分布图代表里边数据分布的密度
  2. sns.jointplot('x','y',data,kind='kde') 雷达图,颜色深浅
  3. sns.jointplot('x','y',data)
  4. sns.jointplot('x','y',data,kind='hex') #six六边型
  5. sns.jointplot('x','y',data,kind='reg')# regression回归线,

多变量图# 鸢尾花数据

  1. # 鸢尾花数据
  2. iris=sns.load_dataset('iris')
  3. iris.head()
  4. # 对图PairGrid
  5. sns.pairplot(iris,hue='species',height=3)
  6. # 自己与自己比较,自己的频率分布
  7. sns.pairplot(iris,hue='species',height=3,kind='kde')

zzzz.png
箱线图

  1. sns.boxplot(x='species',y='sepal_length',data=iris)

z1.png
小提琴图:

  1. # 中间是箱子,俩侧是分布图
  2. sns.violinplot(x='species',y='sepal_length',data=iris)
  3. sns.violinplot(x='sepal_length',y='sepal_width',data=iris)

格子图

  1. tips=sns.load_dataset('tips')
  2. tips.head()
  3. grid=sns.FacetGrid(tips,row='sex',col='time',margin_titles=True)
  4. grid.map(plt.hist,'tip',bins=np.linspace(0,70,15))

z4.png

定义一个函数,功能为绘制每个类别变量(函数参数中的feature) barplot

  1. 定义函数:(列名,数据:train,test,画布大小,保存图片,saveimg=False)
  2. 值计数
  3. 多个子图:fig,ax=plt.subplots(2,1);
  4. 画图1:sns.barplot(x(值计数的索引),y,palette='Set2'风格)
  5. 旋转角度
  6. 画图2
  7. 旋转角度
  8. 位置:
  9. ax[0].set_title()
  1. # feature:查看的列名
  2. def lookup_feature(feature, data_train = train, data_test = test, figsize=(8,5),saveimg = False):
  3. # 提取特征,值计数
  4. train_feat = data_train[feature].value_counts()
  5. test_feat = data_test[feature].value_counts()
  6. # 创建画布和子图
  7. fig_feature,ax=plt.subplots(2,1,sharex=True,sharey=True,figsize=figsize)
  8. # 画图,分别绘制训练集和测试集图
  9. sns.barplot(x=train_feat.index,y=train_feat.values,ax=ax[0],palette='Set2')
  10. # 训练集设置标签旋转角度
  11. plt.xticks(rotation=60)
  12. # 测试集Blues_d Dark2
  13. sns.barplot(x=test_feat.index,y=test_feat.values,ax=ax[1],palette='Paired')
  14. plt.xticks(rotation=45)
  15. # 设置格式
  16. ax[0].set_title(feature + ' of training dataset')
  17. ax[1].set_title(feature + ' of test dataset')
  18. ax[0].set_ylabel('Counts')
  19. ax[1].set_ylabel('Counts')
  20. #自动调整图像空隙
  21. plt.tight_layout()
  22. # 保存图片
  23. if saveimg == True:
  24. # 图片名称
  25. figname = feature + ".png"
  26. #判断images目录里是否不存在os操作系统 operating system
  27. if not os.path.exists('./images'):
  28. # 如果不存在,创建一个目录
  29. os.makedirs('./images')
  30. # 保存图像 dpi
  31. fig_feature.savefig('./images/'+figname, dpi = 65)

ZD.png
因子图:sns.factorplot/sns.catplot(‘Pclass’,’Survived’,data=data,hue=’Sex’,kind=’point’)

  1. # 船舱等级与幸存者的关系,hue
  2. sns.factorplot('Pclass','Survived',data=data,hue='Sex')
  3. plt.show()

计数图: countplot()

交叉表:crosstab

  1. # .style.background_gradient(cmap='summer_r') 更改风格
  2. 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’)