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该列
# 统计电影分类
list = [i.split(",") for i in df["Genre"]] # 进行字符串分割
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/