Python电影数据分析案例 | 您所在的位置:网站首页 › 如何查询影院排片信息表电子版 › Python电影数据分析案例 |
案例说明
这篇案例主要通过网上公开的数据集来练习:Numpy、Pandas 和 matplotlib 库。 •数据源:中国电影数据集•分析目的: 1.查看每年累计票房收入和电影上映数量分布 2.查看每年电影上映数量分布 3.查看每年电影票房收入 4.查看电影类型分布情况 案例 # 导入相关模块 import pandas as pd import numpy as np import datetime from datetime import datetime from matplotlib import pyplot as plt plt.rcParams['font.family']=['Arial Unicode MS'] #显示中文日期 # 读取数据 df = pd.read_excel('/movie_data.xlsx') df.head()通过查看导入的数据集和数据类型,数据类型均为object对象,需要对部分数据进行清洗,票房收入转为float类型,上映日期转为时间类型 对于累计票房这个字段,我们需计算其累计收入,只需要数字就可以,认真观察其数据规律,累计票房在前四位,万是在最后一位数据, 使用Python字符串截取就可以获取到我想要的数据了,字符串截取的规则为“前闭后开”,str[4:-1]截取第5位和倒数第2位字符。 对于上映日期同样使用字符串截取数据,由于时间格式不统一,部分时间格式后面会带'(', 用str.replace替换就可以了。replace()方法语法:str.replace(old, new[, max]) old : 将被替换的子字符串。new : 新字符串,用于替换old子字符串 max : 可选字符串, 替换不超过 max 次 # 累计票房字符串截取 df['累计票房'] = df['累计票房'].str[4:-1] # 将票房内容转为float类型 df['累计票房']=df['累计票房'].astype('float') # 截取日期,取前10位数据 df['上映时间']=df['上映时间'].str[:9] # 将'('替换为空值 df['上映时间'] = df['上映时间'].str.replace("(","") # 转化为时间格式 df['上映时间']=pd.to_datetime(df['上映时间']) # 再次查看数据类型,累计票房为float64格式,上映时间为datetime格式 df.info() RangeIndex: 3134 entries, 0 to 3133 Data columns (total 9 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 电影名 3134 non-null object 1 累计票房 2813 non-null float64 2 导演 2960 non-null object 3 主演 2838 non-null object 4 上映时间 3096 non-null datetime64[ns] 5 国家及地区 3129 non-null object 6 发行公司 2508 non-null object 7 类型 3127 non-null object 8 链接 3134 non-null object dtypes: datetime64[ns](1), float64(1), object(7) memory usage: 220.5+ KB 每年电影上映数量分布 # 取日期年份 df['movie_year'] = df['上映时间'].dt.year # 汇总每年电影数量 movie_years = df.groupby('movie_year')['电影名'].count() movie_years movie_year 2008.0 119 2009.0 129 2010.0 160 2011.0 192 2012.0 309 2013.0 312 2014.0 344 2015.0 429 2016.0 418 2017.0 375 2018.0 309 Name: 电影名, dtype: int64 plt.figure(figsize=(20,8),dpi=80) x = movie_years.index.tolist() y = movie_years plt.plot(x,y,color= 'r') plt.xlabel('上映时间') plt.ylabel('电影数量') plt.title('每年电影上映数量分布') plt.show()对于电影类型,一个电影可能有好几种类型,我们数据源中电影类型是用空格隔开,切割数据就轮到我们的split函数出场啦。split 通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list) 语法:str.split(str="",num=string.count(str)) str:表示为分隔符,默认为空格,但是不能为空('')。若字符串中没有分隔符,则把整个字符串作为列表的一个元素。 # 对电影类型进行切割 movie_type = df['类型'].str.split(' ') movie_type 0 [喜剧, 动作] 1 [剧情, 亲情, 灾难] 2 [爱情, 喜剧] 3 [动作, 悬疑, 古装] 4 [动作, 剧情] ... 3129 [喜剧, 剧情] 3130 [剧情] 3131 [动作, 悬疑] 3132 [剧情, 古装] 3133 [动作, 剧情] Name: 类型, Length: 3134, dtype: objectstr.split方法的返回值数据类型为Series,Series中的每一个值的数据类型为list,需要通过apply(pd.Series)的方法将list转为Series # 将列表转为Series movie_type = movie_type.apply(pd.Series) movie_type.head()----------------- 长按识别下方二维码,并关注公众号 1.回复“PY”领取1GB Python数据分析资料 2.回复“BG”领取5GB 名企数据分析报告 |
CopyRight 2018-2019 实验室设备网 版权所有 |