现在我们有一组从2006年到2016年1000部最流行的电影数据
数据来源:https://www.kaggle.com/damianpanek/sunday-eda/data
首先获取导入包,获取数据
%matplotlib inline import numpy as np import pandas as pd import matplotlib.pyplot as plt
%matplotlib inline
:解决某些平台,matplotlib 不能使用的情况。
#文件的路径 path = "./data/IMDB-Movie-Data.csv" #读取文件 df = pd.read_csv(path)
我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?
df["Rating"].mean()
## 导演的人数 # df["Director"].unique().shape[0] np.unique(df["Director"]).shape[0]
对于这一组电影数据,如果我们想Rating,Runtime (Minutes)的分布情况,应该如何呈现数据?
选择分数列数据,进行plot
# Rating分布 movie['Rating'].plot(kind='hist')
进行绘制直方图
plt.figure(figsize=(20,8),dpi=80) plt.hist(df["Rating"].values,bins=20) plt.show()
修改刻度的间隔
# 求出最大最小值 max_ = df["Rating"].max() min_ = df["Rating"].min() # 生成刻度列表 t1 = np.linspace(min_,max_,num=21) # [ 1.9 2.255 2.61 2.965 3.32 3.675 4.03 4.385 4.74 5.095 5.45 5.805 6.16 6.515 6.87 7.225 7.58 7.935 8.29 8.645 9. ] # 修改刻度 plt.xticks(t1) # 添加网格 plt.grid()
# 1.创建画布 plt.figure(figsize=(20, 8), dpi=100) # 2.绘制图像 plt.hist(movie['Runtime (Minutes)'].values, bins=20) # 2.1添加刻度 max_ = movie['Runtime (Minutes)'].max() min_ = movie['Runtime (Minutes)'].min() t1 = np.linspace(min_, max_, 21) plt.xticks(t1, fontsize=15) # 2.2添加网格 plt.grid(linestyle='--') # 2.3添加x,y轴描述 plt.xlabel('Runtime (Minutes)', fontsize=20) plt.ylabel('Count', fontsize=20) # 3.显示图像 plt.show()
对于这一组电影数据,如果我们希望统计电影分类(genre)的情况,应该如何处理数据?
思路分析
1、创建一个全为0的dataframe,列索引置为电影的分类,temp_df
# 进行字符串分割 temp_list = [i.split(",") for i in df["Genre"]] # 获取电影的分类 genre_list = np.unique([i for j in temp_list for i in j]) # 增加新的列 temp_df = pd.DataFrame(np.zeros([df.shape[0],genre_list.shape[0]]),columns=genre_list)
2、遍历每一部电影,temp_df中把分类出现的列的值置为1
for i in range(1000): #temp_list[i] ['Action','Adventure','Animation'] temp_df.ix[i,temp_list[i]]=1 print(temp_df.sum().sort_values())
DataFrame.ix[]:混合索引被淘汰可以使用loc,iloc进行替换实现相同效果
参考:Pandas二次学习- 回炉重造(进阶)
for i in range(1000): temp_movie.iloc[i, temp_movie.columns.get_indexer(temp_list[i])] = 1
3、求和,绘图
# colormap:使显示颜色更好看 temp_df.sum().sort_values(ascending=False).plot(kind="bar",figsize=(20,8),fontsize=20,colormap="cool")
加油!
感谢!
努力!