文章目录
Python数据分析-matplotlib
导入
import warnings
warnings.filterwarnings('ignore')
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
df=pd.read_excel('movie_data3.xlsx')
df.head()
双轴图的画法
import matplotlib.mlab as mlab
fig = plt.figure(figsize=(10,8))
ax1 = fig.add_subplot(111) #第一个子图
n,bins,patches = ax1.hist(df['评分'],bins=100,color='m') #直方图的返回值
ax1.set_ylabel('电影数量',fontsize=15)
ax1.set_xlabel('评分',fontsize=15)
ax1.set_title('频率分布图',fontsize=15)
print(bins)
from scipy.stats import norm
y = norm.pdf(bins, df['评分'].mean(),df['评分'].std()) # mu 均值 sigma标准差 正态概率密度曲线
ax2=ax1.twinx() #相同的x 不同的y轴
ax2.plot(bins,y,'b--')
ax2.set_ylabel('概率分布',fontsize = 15)
plt.show()
5.电影时长和电影评分绘制散点图
两组数据构成地痞各坐标点 考察坐标的分布模式 用来比较聚合数据
plt.scatter(x,y,label=‘评分’,color=‘c’,marker=‘D’)
maker散点的属性
x=df['时长'][::100]
y=df['评分'][::100]
plt.figure(figsize=(10,6))
plt.scatter(x,y,label='评分',color='c',marker='D')
plt.title('电影时长与评分散点图',fontsize=20)
plt.xlabel('时长',fontsize=16)
plt.ylabel('评分',fontsize=16)
plt.legend()
plt.show()
6.地区的评分箱形图 盒须图
原属数据的特征 中位数 异常值等等
计算过程
- Q3上四位数 Q1下四位数 中位数
- Q3-Q1 箱子的高度
- 绘图 上下范围 以及中位数的横线
- 异常值:大于Q3的1.5倍的Q3-Q1 或者小于Q1
- 极端异常值 3倍
plt.box(x,notch,sym labels,whis)
whis异常值越大越宽松 比如2
flierprops 异常值的设定
patch_artist 箱体的参数
美国电影评分的箱线图
data=df[df.产地=='美国']['评分']
plt.figure(figsize=(10,6))
plt.boxplot(data,whis=2,patch_artist=True,boxprops={'color':'k','facecolor':'#9999ff'},flierprops={'marker':'o','markerfacecolor':'r','color':'k'})
plt.title('美国电影评分',fontsize=15,)
plt.show()
- 坐标背景颜色
plt.gca()
ax.patch.set_facecolor(‘gray’) - 图像旋转vert
多组数据箱线图
data1=df[df.产地=='中国大陆']['评分']
data2=df[df.产地=='中国香港']['评分']
data3=df[df.产地=='英国']['评分']
data4=df[df.产地=='日本']['评分']
data5=df[df.产地=='法国']['评分']
plt.figure(figsize=(12,8))
plt.boxplot([data1,data2,data3,data4,data5],labels=['中国大陆','中国香港','英国','日本','法国'],whis=1.5,patch_artist=True,boxprops={'color':'k','facecolor':'#9999ff'},flierprops={'marker':'o','markerfacecolor':'r','color':'k'})
ax = plt.gca()
ax.patch.set_facecolor('gray')
ax.patch.set_alpha(0.3)
plt.show()
6.相关系数矩阵图-热力图
data = df[['投票人数','评分','时长']]
data
pandas本身封装了画图函数
各个属性的散点图 对角线上是分布图
%pylab inline
result = pd.plotting.scatter_matrix(data[::100], diagonal='hist',color='k',alpha=0.3,figsize=(10,10))
电影时长,投票人数 评分的相关系数矩阵 热力图
参数 vmax vin:颜色极值 annot:注释参数
import seaborn as sns
corr = data.corr()
corr = abs(corr)
fig = plt.figure(figsize=(10,8))
ax=fig.add_subplot()
ax = sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={'size':13,'weight':'bold'},linewidth=0.05)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.show()