matplotlib、numpy和pandas综合案例数据分析

一、获取数据

2006~2016年1000部最流行的电影IMDB-Movie-Data.csv数据下载:https://pan.baidu.com/s/1DiLBrA-4Gzkko-3wRHcy3w?pwd=w2gq

读取数据代码如下

import pandas  as pd 
import numpy as np
from matplotlib import pyplot as plt
df = pd.read_csv('../data/IMDB-Movie-Data.csv')  # 读取数据
df.head()  # 读取前五条

效果如下

简单使用如下 

df['Runtime (Minutes)'].mean()     # 求平均时长

np.unique(df["Director"]).shape[0]  # 求导演人数,先求唯一值,在获取形状的行号

df[df['Rating']>= 9]   # 获取评分大于等于9的电影

二、电影评分分布图

min = df['Rating'].min()
max = df['Rating'].max()
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]   # 设置显示中文字体
mpl.rcParams["axes.unicode_minus"] = False   # 设置正常显示符号
plt.figure(figsize=(14, 5), dpi=100)
t = np.linspace(min, max, num=14)   # 生成x轴刻度列表
plt.xticks(t)   # 设置刻度
plt.grid()  # 网格
plt.hist(df["Rating"].values, bins=13)  # bins=13表示分为13组,13个区间
plt.xlabel("评分")
plt.ylabel("电影部数")
plt.title("电影评分分布图", fontsize=18)
plt.show()

 结果如下

三、电影时长分布图

min = df['Runtime (Minutes)'].min()
max = df['Runtime (Minutes)'].max()
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]   # 设置显示中文字体
mpl.rcParams["axes.unicode_minus"] = False   # 设置正常显示符号
plt.figure(figsize=(14, 5), dpi=100)
t = np.linspace(min, max, num=14)   # 生成刻度列表
plt.xticks(t)   # 设置刻度
plt.grid()  # 网格
plt.hist(df["Runtime (Minutes)"].values, bins=13)  # bins=13表示分为13组,13个区间
plt.xlabel("时长/分钟")
plt.ylabel("电影部数")
plt.title("电影时长分布图", fontsize=18)
plt.show()

 结果如下

四、统计电影分类

代码如下

df['Genre']   # 获取Genre该列

# 统计电影分类
temp_list = [i.split(",") for i in df["Genre"]]  # 进行字符串分割
temp_list[0:5]  # 去前五条数据

结果如下

# 获取电影的分类
genre_list = np.unique([i for j in temp_list for i in j])  # unique去重
genre_list

# 增加新的列
temp_df = pd.DataFrame(np.zeros([df.shape[0],genre_list.shape[0]]),columns=genre_list)
temp_df

for i in range(1000):   # 遍历每一部电影,temp_df中把分类出现的列的值置为1
    # temp_df.ix[i,temp_list[i]]=1
    temp_df.loc[i, temp_list[i]] = 1
temp_df

结果如下

print(temp_df.sum().sort_values())  # 各分类电影数求和并排序,默认升序

temp_df.sum().sort_values(ascending=False).plot(kind="bar",figsize=(15,6), fontsize=20)  # 绘图

 学习导航:http://xqnav.top/

  • 0
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

learning-striving

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值