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()  # 读取前五条

效果如下

matplotlib、numpy和pandas综合案例数据分析_第1张图片

简单使用如下 

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

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

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

matplotlib、numpy和pandas综合案例数据分析_第2张图片

二、电影评分分布图

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()

 结果如下

matplotlib、numpy和pandas综合案例数据分析_第3张图片

三、电影时长分布图

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()

 结果如下

matplotlib、numpy和pandas综合案例数据分析_第4张图片

四、统计电影分类

代码如下

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

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

结果如下

matplotlib、numpy和pandas综合案例数据分析_第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

matplotlib、numpy和pandas综合案例数据分析_第6张图片

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

结果如下

matplotlib、numpy和pandas综合案例数据分析_第7张图片

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

matplotlib、numpy和pandas综合案例数据分析_第8张图片

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

matplotlib、numpy和pandas综合案例数据分析_第9张图片

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

你可能感兴趣的:(pandas,python,pandas,数据分析,matplotlib,numpy)