pandas数据可视化

#导入忽视警告模块
import warnings
warnings.filterwarnings('ignore')

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#显示中文字符
plt.rcParams['font.sans-serif'] = ['SimHei']
#显示负号
plt.rcParams['axes.unicode_minus'] =False
df = pd.read_excel('movie_data.xlsx')
df.head()

名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 肖申克的救赎 692795 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 控方证人 42995 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
2 美丽人生 327855 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116 1997 9.5 意大利
3 阿甘正传 580897 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
4 霸王别姬 478523 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港

data = df['产地'].value_counts()

x = data.index
y = data.values
plt.figure(figsize=(10,6))
plt.bar(x,y,color = 'g')
plt.title('各个国家或地区电影数量',fontsize = 20)
plt.xlabel('国家或地区',fontsize = 18)
plt.ylabel('电影数量',fontsize = 18)

plt.tick_params(labelsize = 14)
plt.xticks(rotation = 60)

for a,b in zip(x,y):
    plt.text(a,b+50,b,ha='center',va='bottom',fontsize=12)#前两个位置,第三个是值
    
#plt.grid()

plt.show()

在这里插入图片描述

data = df.年代.value_counts()
data = data.sort_index()[:-1]#得到1888-2015年的电影数据

x = data.index
y = data.values

plt.figure(figsize=(10,6))
plt.plot(x,y,color='m')
plt.title('每年电影数量',fontsize = 20)
plt.ylabel('电影数量',fontsize = 18)
plt.xlabel('年份',fontsize = 18)

for a,b in zip(x[::10],y[::10]):#每个十年
    plt.text(a,b+50,b,ha='center',va='bottom',fontsize=12)#前两个位置,第三个是值
    
plt.annotate('2012年达到最大值{}'.format(data[2012]),xy=(2012,data[2012]),xytext=(2025,2100),fontsize = 12,
            arrowprops = dict(facecolor='m',edgecolor='red'))

plt.text(1980,1000,'电影数量开始快速增长',fontsize=12)

在这里插入图片描述

data = pd.cut(df['时长'],[0,60,90,110,1000]).value_counts()
y = data.values
#y = y/sum(y)

plt.figure(figsize=(7,7))
plt.title('电影时长',fontsize = 18)
patches,l_text,p_text = plt.pie(y,labels=data.index,autopct='%.1f%%',colors ='rmgy',startangle=90)
for i in p_text:
    i.set_size(15)
    i.set_color('w')
    
for i in l_text:
    i.set_size(15)
    i.set_color('r')
    
plt.legend()

在这里插入图片描述

plt.figure(figsize =(10,6))
plt.hist(df['评分'],bins =20,edgecolor='k' ,alpha=.5)

在这里插入图片描述

import matplotlib.mlab as mlab
fig = plt.figure(figsize=(10,8))
ax1 = fig.add_subplot(111)
n,bins,patches = ax1.hist(df['评分'],bins=30,color='m')
ax1.set_ylabel('电影数量',fontsize=15)
ax1.set_xlabel('评分',fontsize=15)
ax1.set_title('频率分布图',fontsize=20)

y = mlab.normpdf(bins,df['评分'].mean(),df['评分'].std())
ax2 = ax1.twinx()
ax2.plot(bins,y,'b--')
ax2.set_ylabel('频率分布',fontsize=15)

在这里插入图片描述

x = df['时长'][::100]
y = df['评分'][::100]

plt.figure(figsize = (10,8))
plt.scatter(x,y,color='c',marker ='s')
plt.legend()
plt.title('电影时长与分布散点图',fontsize = 15)
plt.xlabel('时长',fontsize=18)
plt.ylabel('评分',fontsize=18)

在这里插入图片描述

data = df[df['产地']=='美国']['评分']
plt.figure(figsize=(10,6))
plt.boxplot(data,whis =2,flierprops={'marker':'o','markerfacecolor':'r','color':'k'},
           patch_artist=True,boxprops={'color':'k','facecolor':'#9999ff'})
plt.title('美国电影评分',fontsize = 15)
plt.xlabel('美国',fontsize =15)

在这里插入图片描述

data1 = df[df.产地 == '中国大陆']['评分']
data2 = df[df.产地 == '日本']['评分']
data3 = df[df.产地 == '中国香港']['评分']
data4 = df[df.产地 == '英国']['评分']
data5 = df[df.产地 == '法国']['评分']

plt.figure(figsize=(12,8))
plt.boxplot([data,data1,data2,data3,data4,data5],labels = ['美国','中国大陆','日本','中国香港','英国','法国'],
            whis =2,flierprops={'marker':'o','markerfacecolor':'r','color':'k'},
           patch_artist=True,boxprops={'color':'k','facecolor':'#9999ff'})
ax = plt.gca()
ax.patch.set_facecolor('gray')
ax.patch.set_alpha(.3)

plt.title('电影评分',fontsize=15)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值